@ng-nest/ui 14.0.6 → 14.0.8

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 (250) hide show
  1. package/avatar/avatar-group.component.d.ts +8 -0
  2. package/avatar/avatar.component.d.ts +15 -4
  3. package/avatar/avatar.module.d.ts +5 -4
  4. package/avatar/avatar.property.d.ts +31 -3
  5. package/avatar/examples/en_US/default/badge/README.md +6 -0
  6. package/avatar/examples/en_US/default/group/README.md +6 -0
  7. package/avatar/examples/en_US/default/label/README.md +6 -0
  8. package/avatar/examples/en_US/default/response/README.md +6 -0
  9. package/avatar/examples/zh_CN/default/badge/README.md +6 -0
  10. package/avatar/examples/zh_CN/default/group/README.md +6 -0
  11. package/avatar/examples/zh_CN/default/label/README.md +6 -0
  12. package/avatar/examples/zh_CN/default/response/README.md +6 -0
  13. package/avatar/public-api.d.ts +1 -0
  14. package/badge/badge.component.d.ts +4 -1
  15. package/badge/badge.property.d.ts +6 -1
  16. package/badge/examples/en_US/default/animation/README.md +4 -0
  17. package/badge/examples/en_US/default/standalone/README.md +6 -0
  18. package/badge/examples/zh_CN/default/animation/README.md +4 -0
  19. package/badge/examples/zh_CN/default/standalone/README.md +6 -0
  20. package/calendar/calendar.component.d.ts +1 -0
  21. package/calendar/calendar.property.d.ts +18 -3
  22. package/calendar/examples/en_US/default/card/README.md +6 -0
  23. package/calendar/examples/en_US/default/header/README.md +6 -0
  24. package/calendar/examples/zh_CN/default/card/README.md +6 -0
  25. package/calendar/examples/zh_CN/default/header/README.md +6 -0
  26. package/collapse/collapse.property.d.ts +6 -1
  27. package/collapse/examples/en_US/default/disabled/README.md +6 -0
  28. package/collapse/examples/zh_CN/default/disabled/README.md +6 -0
  29. package/core/animation/badge.d.ts +1 -0
  30. package/core/config/config.d.ts +30 -0
  31. package/core/interfaces/identify.type.d.ts +2 -0
  32. package/core/interfaces/layout.type.d.ts +15 -0
  33. package/esm2020/avatar/avatar-group.component.mjs +19 -0
  34. package/esm2020/avatar/avatar.component.mjs +91 -11
  35. package/esm2020/avatar/avatar.module.mjs +6 -5
  36. package/esm2020/avatar/avatar.property.mjs +31 -3
  37. package/esm2020/avatar/public-api.mjs +2 -1
  38. package/esm2020/badge/badge.component.mjs +24 -8
  39. package/esm2020/badge/badge.property.mjs +7 -2
  40. package/esm2020/calendar/calendar.component.mjs +8 -4
  41. package/esm2020/calendar/calendar.property.mjs +11 -2
  42. package/esm2020/collapse/collapse-panel.component.mjs +3 -3
  43. package/esm2020/collapse/collapse.property.mjs +7 -2
  44. package/esm2020/core/animation/badge.mjs +17 -1
  45. package/esm2020/core/config/config.mjs +1 -1
  46. package/esm2020/core/interfaces/identify.type.mjs +1 -1
  47. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  48. package/esm2020/date-picker/date-picker.component.mjs +5 -1
  49. package/esm2020/form/form.component.mjs +3 -3
  50. package/esm2020/i18n/i18n.property.mjs +1 -1
  51. package/esm2020/i18n/languages/en_US.mjs +8 -1
  52. package/esm2020/i18n/languages/zh_CN.mjs +8 -1
  53. package/esm2020/i18n/languages/zh_TW.mjs +8 -1
  54. package/esm2020/image/image-group.component.mjs +18 -0
  55. package/esm2020/image/image-preview.component.mjs +136 -0
  56. package/esm2020/image/image.component.mjs +89 -0
  57. package/esm2020/image/image.module.mjs +27 -0
  58. package/esm2020/image/image.property.mjs +82 -0
  59. package/esm2020/image/ng-nest-ui-image.mjs +5 -0
  60. package/esm2020/image/public-api.mjs +6 -0
  61. package/esm2020/index.mjs +4 -1
  62. package/esm2020/keyword/keyword.directive.mjs +66 -0
  63. package/esm2020/keyword/keyword.module.mjs +19 -0
  64. package/esm2020/keyword/keyword.property.mjs +41 -0
  65. package/esm2020/keyword/ng-nest-ui-keyword.mjs +5 -0
  66. package/esm2020/keyword/public-api.mjs +4 -0
  67. package/esm2020/list/list-option.component.mjs +4 -4
  68. package/esm2020/list/list.component.mjs +71 -10
  69. package/esm2020/list/list.module.mjs +12 -4
  70. package/esm2020/list/list.property.mjs +54 -3
  71. package/esm2020/select/select-portal.component.mjs +6 -3
  72. package/esm2020/select/select.component.mjs +31 -23
  73. package/esm2020/select/select.property.mjs +8 -2
  74. package/esm2020/table/table-head.component.mjs +2 -2
  75. package/esm2020/table/table.component.mjs +4 -4
  76. package/esm2020/textarea/textarea.component.mjs +2 -2
  77. package/esm2020/timeline/timeline.component.mjs +6 -4
  78. package/esm2020/tree/tree-node.component.mjs +52 -27
  79. package/esm2020/tree/tree.component.mjs +173 -58
  80. package/esm2020/tree/tree.module.mjs +5 -4
  81. package/esm2020/tree/tree.property.mjs +38 -2
  82. package/esm2020/tree-select/ng-nest-ui-tree-select.mjs +5 -0
  83. package/esm2020/tree-select/public-api.mjs +5 -0
  84. package/esm2020/tree-select/tree-select-portal.component.mjs +110 -0
  85. package/esm2020/tree-select/tree-select.component.mjs +632 -0
  86. package/esm2020/tree-select/tree-select.module.mjs +65 -0
  87. package/esm2020/tree-select/tree-select.property.mjs +153 -0
  88. package/esm2020/upload/upload.component.mjs +9 -6
  89. package/esm2020/upload/upload.module.mjs +12 -4
  90. package/esm2020/upload/upload.property.mjs +10 -3
  91. package/fesm2015/ng-nest-ui-avatar.mjs +143 -17
  92. package/fesm2015/ng-nest-ui-avatar.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-badge.mjs +29 -8
  94. package/fesm2015/ng-nest-ui-badge.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-calendar.mjs +17 -4
  96. package/fesm2015/ng-nest-ui-calendar.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-collapse.mjs +8 -3
  98. package/fesm2015/ng-nest-ui-collapse.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-core.mjs +17 -1
  100. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-date-picker.mjs +4 -0
  102. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  103. package/fesm2015/ng-nest-ui-form.mjs +2 -2
  104. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  105. package/fesm2015/ng-nest-ui-i18n.mjs +21 -0
  106. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  107. package/fesm2015/ng-nest-ui-image.mjs +340 -0
  108. package/fesm2015/ng-nest-ui-image.mjs.map +1 -0
  109. package/fesm2015/ng-nest-ui-keyword.mjs +125 -0
  110. package/fesm2015/ng-nest-ui-keyword.mjs.map +1 -0
  111. package/fesm2015/ng-nest-ui-list.mjs +138 -17
  112. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  113. package/fesm2015/ng-nest-ui-select.mjs +42 -25
  114. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  115. package/fesm2015/ng-nest-ui-table.mjs +4 -4
  116. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  117. package/fesm2015/ng-nest-ui-textarea.mjs +2 -2
  118. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  119. package/fesm2015/ng-nest-ui-timeline.mjs +5 -3
  120. package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
  121. package/fesm2015/ng-nest-ui-tree-select.mjs +951 -0
  122. package/fesm2015/ng-nest-ui-tree-select.mjs.map +1 -0
  123. package/fesm2015/ng-nest-ui-tree.mjs +271 -94
  124. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  125. package/fesm2015/ng-nest-ui-upload.mjs +28 -10
  126. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  127. package/fesm2015/ng-nest-ui.mjs +3 -0
  128. package/fesm2015/ng-nest-ui.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-avatar.mjs +140 -17
  130. package/fesm2020/ng-nest-ui-avatar.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-badge.mjs +29 -8
  132. package/fesm2020/ng-nest-ui-badge.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-calendar.mjs +17 -4
  134. package/fesm2020/ng-nest-ui-calendar.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-collapse.mjs +8 -3
  136. package/fesm2020/ng-nest-ui-collapse.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-core.mjs +17 -1
  138. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-date-picker.mjs +4 -0
  140. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-form.mjs +2 -2
  142. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  143. package/fesm2020/ng-nest-ui-i18n.mjs +21 -0
  144. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  145. package/fesm2020/ng-nest-ui-image.mjs +336 -0
  146. package/fesm2020/ng-nest-ui-image.mjs.map +1 -0
  147. package/fesm2020/ng-nest-ui-keyword.mjs +125 -0
  148. package/fesm2020/ng-nest-ui-keyword.mjs.map +1 -0
  149. package/fesm2020/ng-nest-ui-list.mjs +137 -17
  150. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  151. package/fesm2020/ng-nest-ui-select.mjs +42 -25
  152. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  153. package/fesm2020/ng-nest-ui-table.mjs +4 -4
  154. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  155. package/fesm2020/ng-nest-ui-textarea.mjs +2 -2
  156. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  157. package/fesm2020/ng-nest-ui-timeline.mjs +5 -3
  158. package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
  159. package/fesm2020/ng-nest-ui-tree-select.mjs +946 -0
  160. package/fesm2020/ng-nest-ui-tree-select.mjs.map +1 -0
  161. package/fesm2020/ng-nest-ui-tree.mjs +267 -91
  162. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  163. package/fesm2020/ng-nest-ui-upload.mjs +28 -10
  164. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  165. package/fesm2020/ng-nest-ui.mjs +3 -0
  166. package/fesm2020/ng-nest-ui.mjs.map +1 -1
  167. package/i18n/i18n.property.d.ts +9 -0
  168. package/i18n/languages/en_US.d.ts +7 -0
  169. package/i18n/languages/zh_CN.d.ts +7 -0
  170. package/i18n/languages/zh_TW.d.ts +7 -0
  171. package/image/examples/en_US/default/README.md +4 -0
  172. package/image/examples/en_US/default/default/README.md +6 -0
  173. package/image/examples/en_US/default/fallback/README.md +6 -0
  174. package/image/examples/en_US/default/group/README.md +6 -0
  175. package/image/examples/en_US/default/placeholder/README.md +6 -0
  176. package/image/examples/zh_CN/default/README.md +4 -0
  177. package/image/examples/zh_CN/default/default/README.md +6 -0
  178. package/image/examples/zh_CN/default/fallback/README.md +6 -0
  179. package/image/examples/zh_CN/default/group/README.md +6 -0
  180. package/image/examples/zh_CN/default/placeholder/README.md +6 -0
  181. package/image/image-group.component.d.ts +8 -0
  182. package/image/image-preview.component.d.ts +39 -0
  183. package/image/image.component.d.ts +29 -0
  184. package/image/image.module.d.ts +17 -0
  185. package/image/image.property.d.ts +112 -0
  186. package/image/index.d.ts +5 -0
  187. package/image/public-api.d.ts +5 -0
  188. package/index.d.ts +3 -0
  189. package/keyword/index.d.ts +5 -0
  190. package/keyword/keyword.directive.d.ts +19 -0
  191. package/keyword/keyword.module.d.ts +9 -0
  192. package/keyword/keyword.property.d.ts +40 -0
  193. package/keyword/public-api.d.ts +3 -0
  194. package/list/examples/en_US/default/scroll/README.md +8 -0
  195. package/list/examples/zh_CN/default/scroll/README.md +8 -0
  196. package/list/list-option.component.d.ts +0 -1
  197. package/list/list.component.d.ts +13 -1
  198. package/list/list.module.d.ts +3 -1
  199. package/list/list.property.d.ts +62 -3
  200. package/package.json +25 -1
  201. package/select/examples/en_US/default/default/README.md +1 -2
  202. package/select/examples/zh_CN/default/default/README.md +1 -2
  203. package/select/select-portal.component.d.ts +5 -1
  204. package/select/select.component.d.ts +2 -2
  205. package/select/select.property.d.ts +6 -1
  206. package/style/core/index.css +29 -0
  207. package/style/core/index.css.map +1 -1
  208. package/style/directives/index.scss +1 -0
  209. package/style/directives/keyword/index.scss +6 -0
  210. package/style/directives/keyword/mixin.scss +24 -0
  211. package/style/directives/keyword/param.scss +3 -0
  212. package/tree/tree-node.component.d.ts +4 -4
  213. package/tree/tree.component.d.ts +13 -1
  214. package/tree/tree.module.d.ts +2 -1
  215. package/tree/tree.property.d.ts +44 -14
  216. package/tree-select/examples/en_US/default/README.md +4 -0
  217. package/tree-select/examples/en_US/default/async/README.md +6 -0
  218. package/tree-select/examples/en_US/default/bordered/README.md +6 -0
  219. package/tree-select/examples/en_US/default/custom/README.md +6 -0
  220. package/tree-select/examples/en_US/default/default/README.md +6 -0
  221. package/tree-select/examples/en_US/default/disabled/README.md +6 -0
  222. package/tree-select/examples/en_US/default/label/README.md +6 -0
  223. package/tree-select/examples/en_US/default/multiple/README.md +6 -0
  224. package/tree-select/examples/en_US/default/path/README.md +6 -0
  225. package/tree-select/examples/en_US/default/required/README.md +6 -0
  226. package/tree-select/examples/en_US/default/scroll/README.md +6 -0
  227. package/tree-select/examples/en_US/default/search/README.md +7 -0
  228. package/tree-select/examples/en_US/default/size/README.md +6 -0
  229. package/tree-select/examples/zh_CN/default/README.md +4 -0
  230. package/tree-select/examples/zh_CN/default/async/README.md +6 -0
  231. package/tree-select/examples/zh_CN/default/bordered/README.md +6 -0
  232. package/tree-select/examples/zh_CN/default/custom/README.md +6 -0
  233. package/tree-select/examples/zh_CN/default/default/README.md +6 -0
  234. package/tree-select/examples/zh_CN/default/disabled/README.md +6 -0
  235. package/tree-select/examples/zh_CN/default/label/README.md +6 -0
  236. package/tree-select/examples/zh_CN/default/multiple/README.md +6 -0
  237. package/tree-select/examples/zh_CN/default/path/README.md +6 -0
  238. package/tree-select/examples/zh_CN/default/required/README.md +6 -0
  239. package/tree-select/examples/zh_CN/default/scroll/README.md +6 -0
  240. package/tree-select/examples/zh_CN/default/search/README.md +7 -0
  241. package/tree-select/examples/zh_CN/default/size/README.md +6 -0
  242. package/tree-select/index.d.ts +5 -0
  243. package/tree-select/public-api.d.ts +4 -0
  244. package/tree-select/tree-select-portal.component.d.ts +62 -0
  245. package/tree-select/tree-select.component.d.ts +101 -0
  246. package/tree-select/tree-select.module.d.ts +20 -0
  247. package/tree-select/tree-select.property.d.ts +202 -0
  248. package/upload/upload.component.d.ts +1 -1
  249. package/upload/upload.module.d.ts +3 -1
  250. package/upload/upload.property.d.ts +13 -3
@@ -80,10 +80,20 @@ export class XTreeProperty extends XProperty {
80
80
  * @en_US Parameter control request change event
81
81
  */
82
82
  this.manualChange = new EventEmitter();
83
+ /**
84
+ * @zh_CN 节点点击事件
85
+ * @en_US Node click event
86
+ */
87
+ this.nodeClick = new EventEmitter();
88
+ /**
89
+ * @zh_CN 节点点击事件
90
+ * @en_US Node click event
91
+ */
92
+ this.activatedIdChange = new EventEmitter();
83
93
  }
84
94
  }
85
95
  /** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
86
- /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
96
+ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", scrollElement: "scrollElement", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", heightAdaption: "heightAdaption", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", multiple: "multiple", objectArray: "objectArray", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange", nodeClick: "nodeClick", activatedIdChange: "activatedIdChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
87
97
  __decorate([
88
98
  XDataConvert()
89
99
  ], XTreeProperty.prototype, "data", void 0);
@@ -137,6 +147,16 @@ __decorate([
137
147
  XWithConfig(X_CONFIG_NAME, 26),
138
148
  XInputNumber()
139
149
  ], XTreeProperty.prototype, "itemSize", void 0);
150
+ __decorate([
151
+ XInputBoolean()
152
+ ], XTreeProperty.prototype, "multiple", void 0);
153
+ __decorate([
154
+ XInputBoolean()
155
+ ], XTreeProperty.prototype, "objectArray", void 0);
156
+ __decorate([
157
+ XInputBoolean(),
158
+ XWithConfig(X_CONFIG_NAME, true)
159
+ ], XTreeProperty.prototype, "caseSensitive", void 0);
140
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, decorators: [{
141
161
  type: Component,
142
162
  args: [{ template: '' }]
@@ -180,18 +200,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
180
200
  type: Input
181
201
  }], actions: [{
182
202
  type: Input
203
+ }], scrollElement: [{
204
+ type: Input
183
205
  }], virtualScroll: [{
184
206
  type: Input
185
207
  }], virtualScrollHeight: [{
186
208
  type: Input
209
+ }], heightAdaption: [{
210
+ type: Input
187
211
  }], itemSize: [{
188
212
  type: Input
189
213
  }], minBufferPx: [{
190
214
  type: Input
191
215
  }], maxBufferPx: [{
192
216
  type: Input
217
+ }], multiple: [{
218
+ type: Input
219
+ }], objectArray: [{
220
+ type: Input
221
+ }], keywordText: [{
222
+ type: Input
223
+ }], caseSensitive: [{
224
+ type: Input
193
225
  }], manualChange: [{
194
226
  type: Output
227
+ }], nodeClick: [{
228
+ type: Output
229
+ }], activatedIdChange: [{
230
+ type: Output
195
231
  }] } });
196
232
  /**
197
233
  * TreeNode
@@ -256,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
256
292
  }], virtualScroll: [{
257
293
  type: Input
258
294
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBRVQsYUFBYSxFQUliLFlBQVksRUFFWixXQUFXLEVBRVosTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVwRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFENUM7O1FBRUU7OztXQUdHO1FBQ3NCLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBZ0JyRDs7O1dBR0c7UUFDTSxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzlCOzs7V0FHRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFNN0I7OztXQUdHO1FBQ3NCLGtCQUFhLEdBQVksQ0FBQyxDQUFDLENBQUM7UUEwQnJEOzs7V0FHRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUMxRDs7O1dBR0c7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDekQ7OztXQUdHO1FBQ3VCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDakQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFDdEQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFNdEQ7OztXQUdHO1FBQ00sWUFBTyxHQUFrQixFQUFFLENBQUM7UUFnQnJDOzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQ25DOzs7V0FH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YUFBYSxFQUFFO3dEQUEwQjsyRkF4Q3hDLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OEJBTWhCLElBQUk7c0JBQVosS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS29CLElBQUk7c0JBQTdCLEtBQUs7Z0JBS21CLFVBQVU7c0JBQWxDLEtBQUs7Z0JBS29CLFVBQVU7c0JBQW5DLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtvQixhQUFhO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBYRGF0YUNvbnZlcnQsXHJcbiAgWFByb3BlcnR5LFxyXG4gIFhEYXRhLFxyXG4gIFhJbnB1dEJvb2xlYW4sXHJcbiAgWFBhcmVudElkZW50aXR5UHJvcGVydHksXHJcbiAgWE51bWJlcixcclxuICBYQm9vbGVhbixcclxuICBYSW5wdXROdW1iZXIsXHJcbiAgWElkZW50aXR5UHJvcGVydHksXHJcbiAgWFdpdGhDb25maWcsXHJcbiAgWEFsaWduXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFRyZWVcclxuICogQHNlbGVjdG9yIHgtdHJlZVxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlUHJlZml4ID0gJ3gtdHJlZSc7XHJcbmNvbnN0IFhfQ09ORklHX05BTUUgPSAndHJlZSc7XHJcblxyXG4vKipcclxuICogVHJlZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueaVsOaNrlxyXG4gICAqIEBlbl9VUyBOb2RlIGRhdGFcclxuICAgKi9cclxuICBASW5wdXQoKSBAWERhdGFDb252ZXJ0KCkgZGF0YTogWERhdGE8WFRyZWVOb2RlPiA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrlpJrpgInmoYZcclxuICAgKiBAZW5fVVMgU2hvdyBjaGVja2JveFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgY2hlY2tib3g/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byA5ZCv5oeS5Yqg6L296IqC54K577yMZGF0YSDlv4Xpobvorr7nva7miJDlh73mlbDnsbvlnotcclxuICAgKiBAZW5fVVMgT3BlbiBsYXp5IGxvYWRpbmcgbm9kZSwgZGF0YSBtdXN0IGJlIHNldCB0byBmdW5jdGlvbiB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBsYXp5PzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjea/gOa0u+eahOiKgueCuSBJZFxyXG4gICAqIEBlbl9VUyBDdXJyZW50bHkgYWN0aXZlIG5vZGUgSWRcclxuICAgKi9cclxuICBASW5wdXQoKSBhY3RpdmF0ZWRJZDogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIDnmoToioLngrlcclxuICAgKiBAZW5fVVMgRXhwYW5kZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGV4cGFuZGVkOiBhbnlbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDpgInkuK3nmoToioLngrlcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc2VsZWN0ZWQgbm9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoZWNrZWQ6IGFueVtdID0gW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxleW8gOaJgOacieiKgueCuVxyXG4gICAqIEBlbl9VUyBFeHBhbmQgYWxsIG5vZGVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBleHBhbmRlZEFsbD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpu5jorqTlsZXlvIDnmoTlsYLnuqdcclxuICAgKiBAZW5fVVMgRGVmYXVsdCBleHBhbmRlZCBsZXZlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBleHBhbmRlZExldmVsOiBYTnVtYmVyID0gLTE7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOeCueWHu+iKgueCueWwseinpuWPkeWxleW8gC/mlLbotbfnmoTmk43kvZzvvIzor7fnoa7kv53oioLngrnkuIrmsqHmnInlhbblroPmk43kvZzvvIhjaGVja2JveOOAgeiHquWumuS5ieeahOaTjeS9nOaMiemSru+8iVxyXG4gICAqIEBlbl9VUyBDbGljayB0aGUgbm9kZSB0byB0cmlnZ2VyIHRoZSBleHBhbmQvY29sbGFwc2Ugb3BlcmF0aW9uLCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIG9wZXJhdGlvbnMgb24gdGhlIG5vZGUgKGNoZWNrYm94LCBjdXN0b20gb3BlcmF0aW9uIGJ1dHRvbilcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5vZGVPcGVuPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNleS9jemXtOi3ne+8jOi/meS4quS4juWxgue6p+eahOS5mOenr+eul+WHuuiKgueCueeahOW3pui+uei3ne+8jOWNleS9jSByZW1cclxuICAgKiBAZW5fVVMgVW5pdCBzcGFjaW5nLCB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgbGV2ZWwgY2FsY3VsYXRlcyB0aGUgbGVmdCBtYXJnaW4gb2YgdGhlIG5vZGUsIHRoZSB1bml0IGlzIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAwLjg3NSkgQFhJbnB1dE51bWJlcigpIHNwYWNpbmc/OiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7oh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgTGFiZWwgY3VzdG9tIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxUcGw/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K555qE6auY5bqm77yM5Y2V5L2NIHJlbSwg6buY6K6kIDAg5piv6Ieq6YCC5bqU6auY5bqmXHJcbiAgICogQGVuX1VTIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUgaW4gcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDApIEBYSW5wdXROdW1iZXIoKSBub2RlSGVpZ2h0ITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5piv5ZCm5YWB6K645aSa5qyh54K55Ye75LiA5Liq6IqC54K56Kem5Y+R5aSa5qyh5LqL5Lu2XHJcbiAgICogQGVuX1VTIFdoZXRoZXIgdG8gYWxsb3cgbXVsdGlwbGUgY2xpY2tzIG9uIGEgbm9kZSB0byB0cmlnZ2VyIG11bHRpcGxlIGV2ZW50c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgYWxsb3dNYW55QWN0aXZhdGVkPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjeeCueWHu+mAieS4reeahOiKgueCueWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBUaGUgZXZlbnQgb2YgdGhlIGN1cnJlbnRseSBjbGlja2VkIG5vZGUgY2hhbmdlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFjdGl2YXRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8WFRyZWVOb2RlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkvb/nlKggY2hlY2tlZGJveCDpgInkuK3lj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgVXNlIGNoZWNrZWRib3ggdG8gc2VsZWN0IGNoYW5nZWQgZXZlbnRzXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNoZWNrYm94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxYVHJlZU5vZGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWmguaenCBkYXRhIOaYr+WHveaVsOexu+Wei++8jOWPr+S7pemAmui/h+atpOWPguaVsOaOp+WItuivt+axgu+8jOW4uOeUqOS6juW8ueahhuS4reeahOihqOagvO+8jOW8ueWHuuWQjuWGjeivt+axglxyXG4gICAqIEBlbl9VUyBJZiBkYXRhIGlzIGEgZnVuY3Rpb24gdHlwZSwgeW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gY29udHJvbCB0aGUgcmVxdWVzdCwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCBpbiB0aGUgZm9ybSBpbiB0aGUgcG9wLXVwIGJveCwgYW5kIHRoZW4gcmVxdWVzdCBpdCBhZnRlciBpdCBwb3BzIHVwXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBtYW51YWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDnirbmgIHmlLnlj5jop6blj5HlsYLnuqfmo4Dmn6VcclxuICAgKiBAZW5fVVMgQ2hlY2tib3ggc3RhdHVzIGNoYW5nZXMgdHJpZ2dlciBsZXZlbCBjaGVja3NcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxldmVsQ2hlY2s6IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+3XHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbm9kZU5vd3JhcDogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlnoLnm7Tlr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhBbGlnbj4oWF9DT05GSUdfTkFNRSwgJ2NlbnRlcicpIG5vZGVBbGlnbkl0ZW1zITogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoJHoioLngrnmk43kvZzmjInpkq5cclxuICAgKiBAZW5fVVMgVHJlZSBub2RlIG9wZXJhdGlvbiBidXR0b25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aW9uczogWFRyZWVBY3Rpb25bXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/omZrmi5/mu5rliqhcclxuICAgKiBAZW5fVVMgVHVybiBvbiB2aXJ0dWFsIHNjcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSkgQFhJbnB1dEJvb2xlYW4oKSB2aXJ0dWFsU2Nyb2xsITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa7muWKqOWMuuWfn+mrmOW6pu+8jOW8gOWQr+iZmuaLn+a7muWKqOeahOaXtuWAmeeUn+aViFxyXG4gICAqIEBlbl9VUyBSb2xsaW5nIGFyZWEgaGVpZ2h0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPG51bWJlcj4oWF9DT05GSUdfTkFNRSwgNDAwKSBAWElucHV0TnVtYmVyKCkgdmlydHVhbFNjcm9sbEhlaWdodCE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaXRlbVNpemXvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgaXRlbVNpemXvvIxjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8bnVtYmVyPihYX0NPTkZJR19OQU1FLCAyNikgQFhJbnB1dE51bWJlcigpIGl0ZW1TaXplITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDotoXlh7rlj6/op4bnqpflj6PnvJPlhrLljLrnmoTmnIDlsI/lgLzvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgRXhjZWVkIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB2aXNpYmxlIHdpbmRvdyBidWZmZXIsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgaW4gY2RrIHNjcm9sbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXIgPSAxMDA7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa4suafk+aWsOaVsOaNrue8k+WGsuWMuueahOWDj+e0oO+8jOWvueW6lCBjZGsgc2Nyb2xsIOS4reeahOWPguaVsO+8jOW8gOWQr+iZmuaLn+a7muWKqOaJjeeUn+aViFxyXG4gICAqIEBlbl9VUyBSZW5kZXIgdGhlIHBpeGVscyBvZiB0aGUgbmV3IGRhdGEgYnVmZmVyLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyID0gMjAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlj4LmlbDmjqfliLbor7fmsYLmlLnlj5jkuovku7ZcclxuICAgKiBAZW5fVVMgUGFyYW1ldGVyIGNvbnRyb2wgcmVxdWVzdCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFudWFsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIFRyZWUg5pWw5o2u5a+56LGhXHJcbiAqIEBlbl9VUyBUcmVlIGRhdGEgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlTm9kZSBleHRlbmRzIFhQYXJlbnRJZGVudGl0eVByb3BlcnR5PFhUcmVlTm9kZT4ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIBcclxuICAgKiBAZW5fVVMgVW5mb2xkXHJcbiAgICovXHJcbiAgb3Blbj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa/gOa0u+eahFxyXG4gICAqIEBlbl9VUyBhY3RpdmVcclxuICAgKi9cclxuICBhY3RpdmF0ZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmo4Dmn6Xmm7TmlrBcclxuICAgKiBAZW5fVVMgQ2hlY2sgZm9yIHVwZGF0ZXNcclxuICAgKi9cclxuICBjaGFuZ2U/OiBGdW5jdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5a2Q6IqC54K55bey5Yqg6L296L+HXHJcbiAgICogQGVuX1VTIENoaWxkIG5vZGUgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICovXHJcbiAgY2hpbGRyZW5Mb2FkZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDmmK/lkKbpgInkuK1cclxuICAgKiBAZW5fVVMgd2hldGhlciBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhjaGVja2JveFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlIGNoZWNrYm94XHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBjaGVja2JveCDlrZDoioLngrnmmK/lkKbmnInpgInkuK3nmoTnirbmgIFcclxuICAgKiBAZW5fVVMgV2hldGhlciB0aGUgY2hpbGQgbm9kZSBvZiBjaGVja2JveCBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnpq5jluqbvvIzkvJjlhYjnuqfpq5jkuo4gdHJlZSDlj4LmlbDvvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIE5vZGUgaGVpZ2h0IGluIHJlbSwgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+377yM5LyY5YWI57qn6auY5LqOIHRyZWUg5Y+C5pWwXHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZywgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIG5vd3JhcD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWeguebtOWvuem9kOaWueW8j++8jOS8mOWFiOe6p+mrmOS6jiB0cmVlIOWPguaVsFxyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmcsIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgKi9cclxuICBhbGlnbkl0ZW1zPzogWEFsaWduO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmh5LliqDovb3kuK1cclxuICAgKiBAZW5fVVMgTm9kZSBsYXp5IGxvYWRpbmdcclxuICAgKi9cclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5bGe5oCnXHJcbiAgICogQGVuX1VTIEN1c3RvbSBhdHRyaWJ1dGVzXHJcbiAgICovXHJcbiAgW3Byb3BlcnR5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04gVHJlZSDoioLngrnmk43kvZxcclxuICogQGVuX1VTIFRyZWUgbm9kZSBvcGVyYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVBY3Rpb24gZXh0ZW5kcyBYSWRlbnRpdHlQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaTjeS9nFxyXG4gICAqIEBlbl9VUyBPcGVyYXRpbmdcclxuICAgKi9cclxuICBoYW5kbGVyPzogRnVuY3Rpb247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWbvuagh1xyXG4gICAqIEBlbl9VUyBJY29uXHJcbiAgICovXHJcbiAgaWNvbj86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyZWVOb2RlXHJcbiAqIEBzZWxlY3RvciB4LXRyZWUtbm9kZVxyXG4gKiBAZGVjb3JhdG9yIGRpcmVjdGl2ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlTm9kZVByZWZpeCA9ICd4LXRyZWUtbm9kZSc7XHJcblxyXG4vKipcclxuICogVHJlZU5vZGUgUHJvcGVydHlcclxuICovXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTm9kZVByb3BlcnR5IGV4dGVuZHMgWFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55pWw5o2uXHJcbiAgICogQGVuX1VTIE5vZGUgZGF0YVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5vZGU6IFhUcmVlTm9kZSA9IHt9O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsYLnuqdcclxuICAgKiBAZW5fVVMgTGV2ZWxcclxuICAgKi9cclxuICBASW5wdXQoKSBsZXZlbD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaHkuWKoOi9veWtkOiKgueCuVxyXG4gICAqIEBlbl9VUyBMYXp5IGxvYWRpbmcgb2YgY2hpbGQgbm9kZXNcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxhenk/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K555qE6auY5bqm77yM5Y2V5L2NIHJlbVxyXG4gICAqIEBlbl9VUyBUaGUgaGVpZ2h0IG9mIHRoZSBub2RlIGluIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBub2RlSGVpZ2h0OiBYTnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55YaF5a655LiN5o2i6KGM5pi+56S655yB55Wl5Y+3XHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbm9kZU5vd3JhcD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlnoLnm7Tlr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9kZUFsaWduSXRlbXM6IFhBbGlnbiA9ICdjZW50ZXInO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmh5LliqDovb3lh73mlbBcclxuICAgKiBAZW5fVVMgTGF6eSBsb2FkaW5nIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGF6eURhdGEhOiBYRGF0YTxYVHJlZU5vZGVbXT47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+iusOS4uuiZmuaLn+a7muWKqOeahOiKgueCuVxyXG4gICAqIEBlbl9VUyBNYXJrIGFzIGEgbm9kZSBvZiB2aXJ0dWFsIHJvbGxpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIHZpcnR1YWxTY3JvbGw/OiBYQm9vbGVhbjtcclxufVxyXG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBRVQsYUFBYSxFQUliLFlBQVksRUFFWixXQUFXLEVBRVosTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQUVoRzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFENUM7O1FBRUU7OztXQUdHO1FBQ3NCLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBZ0JyRDs7O1dBR0c7UUFDTSxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzlCOzs7V0FHRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFNN0I7OztXQUdHO1FBQ3NCLGtCQUFhLEdBQVksQ0FBQyxDQUFDLENBQUM7UUEwQnJEOzs7V0FHRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUMxRDs7O1dBR0c7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDekQ7OztXQUdHO1FBQ3VCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDakQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFDdEQ7OztXQUdHO1FBQ3VCLGVBQVUsR0FBYSxJQUFJLENBQUM7UUFNdEQ7OztXQUdHO1FBQ00sWUFBTyxHQUFrQixFQUFFLENBQUM7UUEwQnJDOzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQ25DOzs7V0FH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S0csU0FBUztzQkFBbEIsTUFBTTtnQkFLRyxpQkFBaUI7c0JBQTFCLE1BQU07O0FBNkVUOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRTdDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUFEaEQ7O1FBRUU7OztXQUdHO1FBQ00sU0FBSSxHQUFjLEVBQUUsQ0FBQztRQVc5Qjs7O1dBR0c7UUFDc0IsZUFBVSxHQUFZLENBQUMsQ0FBQztRQU1qRDs7O1dBR0c7UUFDTSxtQkFBYyxHQUFXLFFBQVEsQ0FBQztLQVc1Qzs7aUlBekNZLGlCQUFpQjtxSEFBakIsaUJBQWlCLCtRQURQLEVBQUU7QUFnQkc7SUFBaEIsYUFBYSxFQUFFOytDQUFpQjtBQUtqQjtJQUFmLFlBQVksRUFBRTtxREFBeUI7QUFLdkI7SUFBaEIsYUFBYSxFQUFFO3FEQUF1QjtBQWV0QjtJQUFoQixhQUFhLEVBQUU7d0RBQTBCOzJGQXhDeEMsaUJBQWlCO2tCQUQ3QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs4QkFNaEIsSUFBSTtzQkFBWixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLb0IsSUFBSTtzQkFBN0IsS0FBSztnQkFLbUIsVUFBVTtzQkFBbEMsS0FBSztnQkFLb0IsVUFBVTtzQkFBbkMsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS29CLGFBQWE7c0JBQXRDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIFhEYXRhQ29udmVydCxcclxuICBYUHJvcGVydHksXHJcbiAgWERhdGEsXHJcbiAgWElucHV0Qm9vbGVhbixcclxuICBYUGFyZW50SWRlbnRpdHlQcm9wZXJ0eSxcclxuICBYTnVtYmVyLFxyXG4gIFhCb29sZWFuLFxyXG4gIFhJbnB1dE51bWJlcixcclxuICBYSWRlbnRpdHlQcm9wZXJ0eSxcclxuICBYV2l0aENvbmZpZyxcclxuICBYQWxpZ25cclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVHJlZVxyXG4gKiBAc2VsZWN0b3IgeC10cmVlXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFRyZWVQcmVmaXggPSAneC10cmVlJztcclxuY29uc3QgWF9DT05GSUdfTkFNRSA9ICd0cmVlJztcclxuXHJcbi8qKlxyXG4gKiBUcmVlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZVByb3BlcnR5IGV4dGVuZHMgWFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55pWw5o2uXHJcbiAgICogQGVuX1VTIE5vZGUgZGF0YVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYRGF0YUNvbnZlcnQoKSBkYXRhOiBYRGF0YTxYVHJlZU5vZGU+ID0gW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuWkmumAieahhlxyXG4gICAqIEBlbl9VUyBTaG93IGNoZWNrYm94XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBjaGVja2JveD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/mh5LliqDovb3oioLngrnvvIxkYXRhIOW/hemhu+iuvue9ruaIkOWHveaVsOexu+Wei1xyXG4gICAqIEBlbl9VUyBPcGVuIGxhenkgbG9hZGluZyBub2RlLCBkYXRhIG11c3QgYmUgc2V0IHRvIGZ1bmN0aW9uIHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxhenk/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN5r+A5rS755qE6IqC54K5IElkLCDlvZMgbXVsdGlwbGUg5Li6IHRydWUg5pe277yM5YC85Li65pWw57uE77yI6buY6K6k5pivIElkIOaVsOe7hO+8jG9iamVjdEFycmF5IOS4uiB0cnVl77yM5a+56LGh5pWw57uE77yJXHJcbiAgICogQGVuX1VTIEN1cnJlbnRseSBhY3RpdmUgbm9kZSBJZC4gV2hlbiBNdWx0aXBsZSBpcyB0cnVlLCB0aGUgdmFsdWUgaXMgdGhlIElkIGFycmF5XHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aXZhdGVkSWQ6IGFueTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bGV5byA55qE6IqC54K5XHJcbiAgICogQGVuX1VTIEV4cGFuZGVkIG5vZGVcclxuICAgKi9cclxuICBASW5wdXQoKSBleHBhbmRlZDogYW55W10gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04gY2hlY2tib3gg6YCJ5Lit55qE6IqC54K5XHJcbiAgICogQGVuX1VTIENoZWNrYm94IHNlbGVjdGVkIG5vZGVcclxuICAgKi9cclxuICBASW5wdXQoKSBjaGVja2VkOiBhbnlbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXlvIDmiYDmnInoioLngrlcclxuICAgKiBAZW5fVVMgRXhwYW5kIGFsbCBub2Rlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgZXhwYW5kZWRBbGw/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6buY6K6k5bGV5byA55qE5bGC57qnXHJcbiAgICogQGVuX1VTIERlZmF1bHQgZXhwYW5kZWQgbGV2ZWxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0TnVtYmVyKCkgZXhwYW5kZWRMZXZlbDogWE51bWJlciA9IC0xO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDngrnlh7voioLngrnlsLHop6blj5HlsZXlvIAv5pS26LW355qE5pON5L2c77yM6K+356Gu5L+d6IqC54K55LiK5rKh5pyJ5YW25a6D5pON5L2c77yIY2hlY2tib3jjgIHoh6rlrprkuYnnmoTmk43kvZzmjInpkq7vvIlcclxuICAgKiBAZW5fVVMgQ2xpY2sgdGhlIG5vZGUgdG8gdHJpZ2dlciB0aGUgZXhwYW5kL2NvbGxhcHNlIG9wZXJhdGlvbiwgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBvdGhlciBvcGVyYXRpb25zIG9uIHRoZSBub2RlIChjaGVja2JveCwgY3VzdG9tIG9wZXJhdGlvbiBidXR0b24pXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBub2RlT3Blbj86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDljZXkvY3pl7Tot53vvIzov5nkuKrkuI7lsYLnuqfnmoTkuZjnp6/nrpflh7roioLngrnnmoTlt6bovrnot53vvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIFVuaXQgc3BhY2luZywgdGhlIHByb2R1Y3Qgb2YgdGhpcyBhbmQgdGhlIGxldmVsIGNhbGN1bGF0ZXMgdGhlIGxlZnQgbWFyZ2luIG9mIHRoZSBub2RlLCB0aGUgdW5pdCBpcyByZW1cclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgMC44NzUpIEBYSW5wdXROdW1iZXIoKSBzcGFjaW5nPzogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH562+6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIExhYmVsIGN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsVHBsPzogVGVtcGxhdGVSZWY8dm9pZD47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeahOmrmOW6pu+8jOWNleS9jSByZW0sIOm7mOiupCAwIOaYr+iHqumAguW6lOmrmOW6plxyXG4gICAqIEBlbl9VUyBUaGUgaGVpZ2h0IG9mIHRoZSBub2RlIGluIHJlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAwKSBAWElucHV0TnVtYmVyKCkgbm9kZUhlaWdodCE6IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYr+WQpuWFgeiuuOWkmuasoeeCueWHu+S4gOS4quiKgueCueinpuWPkeWkmuasoeS6i+S7tlxyXG4gICAqIEBlbl9VUyBXaGV0aGVyIHRvIGFsbG93IG11bHRpcGxlIGNsaWNrcyBvbiBhIG5vZGUgdG8gdHJpZ2dlciBtdWx0aXBsZSBldmVudHNcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGFsbG93TWFueUFjdGl2YXRlZD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPliY3ngrnlh7vpgInkuK3nmoToioLngrnlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgVGhlIGV2ZW50IG9mIHRoZSBjdXJyZW50bHkgY2xpY2tlZCBub2RlIGNoYW5nZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhY3RpdmF0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFhUcmVlTm9kZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5L2/55SoIGNoZWNrZWRib3gg6YCJ5Lit5Y+Y5YyW55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFVzZSBjaGVja2VkYm94IHRvIHNlbGVjdCBjaGFuZ2VkIGV2ZW50c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjaGVja2JveENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8WFRyZWVOb2RlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlpoLmnpwgZGF0YSDmmK/lh73mlbDnsbvlnovvvIzlj6/ku6XpgJrov4fmraTlj4LmlbDmjqfliLbor7fmsYLvvIzluLjnlKjkuo7lvLnmoYbkuK3nmoTooajmoLzvvIzlvLnlh7rlkI7lho3or7fmsYJcclxuICAgKiBAZW5fVVMgSWYgZGF0YSBpcyBhIGZ1bmN0aW9uIHR5cGUsIHlvdSBjYW4gdXNlIHRoaXMgcGFyYW1ldGVyIHRvIGNvbnRyb2wgdGhlIHJlcXVlc3QsIHdoaWNoIGlzIG9mdGVuIHVzZWQgaW4gdGhlIGZvcm0gaW4gdGhlIHBvcC11cCBib3gsIGFuZCB0aGVuIHJlcXVlc3QgaXQgYWZ0ZXIgaXQgcG9wcyB1cFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbWFudWFsOiBib29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04gY2hlY2tib3gg54q25oCB5pS55Y+Y6Kem5Y+R5bGC57qn5qOA5p+lXHJcbiAgICogQGVuX1VTIENoZWNrYm94IHN0YXR1cyBjaGFuZ2VzIHRyaWdnZXIgbGV2ZWwgY2hlY2tzXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBsZXZlbENoZWNrOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWGheWuueS4jeaNouihjOaYvuekuuecgeeVpeWPt1xyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5vZGVOb3dyYXA6IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55Z6C55u05a+56b2Q5pa55byPXHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQWxpZ24+KFhfQ09ORklHX05BTUUsICdjZW50ZXInKSBub2RlQWxpZ25JdGVtcyE6IFhBbGlnbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCR6IqC54K55pON5L2c5oyJ6ZKuXHJcbiAgICogQGVuX1VTIFRyZWUgbm9kZSBvcGVyYXRpb24gYnV0dG9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IFhUcmVlQWN0aW9uW10gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5rua5Yqo5Yy65Z+f5YWD57SgXHJcbiAgICogQGVuX1VTIFJvbGxpbmcgYXJlYSBlbGVtZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgc2Nyb2xsRWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/omZrmi5/mu5rliqhcclxuICAgKiBAZW5fVVMgVHVybiBvbiB2aXJ0dWFsIHNjcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSkgQFhJbnB1dEJvb2xlYW4oKSB2aXJ0dWFsU2Nyb2xsITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa7muWKqOWMuuWfn+mrmOW6pu+8jOW8gOWQr+iZmuaLn+a7muWKqOeahOaXtuWAmeeUn+aViFxyXG4gICAqIEBlbl9VUyBSb2xsaW5nIGFyZWEgaGVpZ2h0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPG51bWJlcj4oWF9DT05GSUdfTkFNRSwgNDAwKSBAWElucHV0TnVtYmVyKCkgdmlydHVhbFNjcm9sbEhlaWdodCE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Jma5ouf5rua5Yqo6auY5bqm6Ieq6YCC5bqU5oyH5a6a5YWD57SgXHJcbiAgICogQGVuX1VTIHZpcnR1YWwgcm9sbGluZyBoZWlnaHQgZm9sbG93cyB0aGUgc3BlY2lmaWVkIG9iamVjdFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhlaWdodEFkYXB0aW9uITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudDtcclxuICAvKipcclxuICAgKiBAemhfQ04gaXRlbVNpemXvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgaXRlbVNpemXvvIxjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8bnVtYmVyPihYX0NPTkZJR19OQU1FLCAyNikgQFhJbnB1dE51bWJlcigpIGl0ZW1TaXplITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDotoXlh7rlj6/op4bnqpflj6PnvJPlhrLljLrnmoTmnIDlsI/lgLzvvIzlr7nlupQgY2RrIHNjcm9sbCDkuK3nmoTlj4LmlbDvvIzlvIDlkK/omZrmi5/mu5rliqjmiY3nlJ/mlYhcclxuICAgKiBAZW5fVVMgRXhjZWVkIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB2aXNpYmxlIHdpbmRvdyBidWZmZXIsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgaW4gY2RrIHNjcm9sbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXIgPSAxMDA7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa4suafk+aWsOaVsOaNrue8k+WGsuWMuueahOWDj+e0oO+8jOWvueW6lCBjZGsgc2Nyb2xsIOS4reeahOWPguaVsO+8jOW8gOWQr+iZmuaLn+a7muWKqOaJjeeUn+aViFxyXG4gICAqIEBlbl9VUyBSZW5kZXIgdGhlIHBpeGVscyBvZiB0aGUgbmV3IGRhdGEgYnVmZmVyLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGluIGNkayBzY3JvbGxcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyID0gMjAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlpJrpgInlip/og73vvIzlvZPliY3mv4DmtLvnmoToioLngrnlj6/ku6XmmK/lpJrkuKpcclxuICAgKiBAZW5fVVMgTXVsdGlwbGUgY2hvaWNlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBtdWx0aXBsZT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPlvIDlkK/lpJrpgInnmoTml7blgJnvvIxhY3RpdmF0ZWRJZCDnmoTlgLzkuLrlr7nosaHmlbDnu4RcclxuICAgKiBAZW5fVVMgV2hlbiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZCwgdGhlIHZhbHVlIG9mIGFjdGl2YXRlZElkIGlzIGFuIGFycmF5IG9mIG9iamVjdHNcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG9iamVjdEFycmF5PzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWFs+mUruWtl+mrmOS6ru+8jOmSiOWvueS4i+aLieagkeaQnOe0olxyXG4gICAqIEBlbl9VUyBLZXl3b3JkIGhpZ2hsaWdodGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGtleXdvcmRUZXh0ITogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWMuemFjeWFs+mUruWtl+WMuuWIhuWkp+Wwj+WGme+8jOmSiOWvueS4i+aLieagkeaQnOe0olxyXG4gICAqIEBlbl9VUyBDYXNlLXNlbnNpdGl2ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCB0cnVlKSBjYXNlU2Vuc2l0aXZlITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWPguaVsOaOp+WItuivt+axguaUueWPmOS6i+S7tlxyXG4gICAqIEBlbl9VUyBQYXJhbWV0ZXIgY29udHJvbCByZXF1ZXN0IGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBtYW51YWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeCueWHu+S6i+S7tlxyXG4gICAqIEBlbl9VUyBOb2RlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8WFRyZWVOb2RlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnngrnlh7vkuovku7ZcclxuICAgKiBAZW5fVVMgTm9kZSBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhY3RpdmF0ZWRJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIFRyZWUg5pWw5o2u5a+56LGhXHJcbiAqIEBlbl9VUyBUcmVlIGRhdGEgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhUcmVlTm9kZSBleHRlbmRzIFhQYXJlbnRJZGVudGl0eVByb3BlcnR5PFhUcmVlTm9kZT4ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmv4DmtLvnmoRcclxuICAgKiBAZW5fVVMgYWN0aXZlXHJcbiAgICovXHJcbiAgYWN0aXZhdGVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qOA5p+l5pu05pawXHJcbiAgICogQGVuX1VTIENoZWNrIGZvciB1cGRhdGVzXHJcbiAgICovXHJcbiAgY2hhbmdlPzogRnVuY3Rpb247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGNoZWNrYm94IOaYr+WQpumAieS4rVxyXG4gICAqIEBlbl9VUyB3aGV0aGVyIGNoZWNrYm94IGlzIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgY2hlY2tlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqGNoZWNrYm94XHJcbiAgICogQGVuX1VTIERpc2FibGUgY2hlY2tib3hcclxuICAgKi9cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGNoZWNrYm94IOWtkOiKgueCueaYr+WQpuaciemAieS4reeahOeKtuaAgVxyXG4gICAqIEBlbl9VUyBXaGV0aGVyIHRoZSBjaGlsZCBub2RlIG9mIGNoZWNrYm94IGlzIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCuemrmOW6pu+8jOS8mOWFiOe6p+mrmOS6jiB0cmVlIOWPguaVsO+8jOWNleS9jSByZW1cclxuICAgKiBAZW5fVVMgTm9kZSBoZWlnaHQgaW4gcmVtLCBoaWdoZXN0IHByaW9yaXR5XHJcbiAgICovXHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlhoXlrrnkuI3mjaLooYzmmL7npLrnnIHnlaXlj7fvvIzkvJjlhYjnuqfpq5jkuo4gdHJlZSDlj4LmlbBcclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nLCBoaWdoZXN0IHByaW9yaXR5XHJcbiAgICovXHJcbiAgbm93cmFwPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55Z6C55u05a+56b2Q5pa55byP77yM5LyY5YWI57qn6auY5LqOIHRyZWUg5Y+C5pWwXHJcbiAgICogQGVuX1VTIFNob3cgZWxsaXBzaXMgd2l0aG91dCB3cmFwcGluZywgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAqL1xyXG4gIGFsaWduSXRlbXM/OiBYQWxpZ247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueaHkuWKoOi9veS4rVxyXG4gICAqIEBlbl9VUyBOb2RlIGxhenkgbG9hZGluZ1xyXG4gICAqL1xyXG4gIGxvYWRpbmc/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlsZ7mgKdcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGF0dHJpYnV0ZXNcclxuICAgKi9cclxuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiBUcmVlIOiKgueCueaTjeS9nFxyXG4gKiBAZW5fVVMgVHJlZSBub2RlIG9wZXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYVHJlZUFjdGlvbiBleHRlbmRzIFhJZGVudGl0eVByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pON5L2cXHJcbiAgICogQGVuX1VTIE9wZXJhdGluZ1xyXG4gICAqL1xyXG4gIGhhbmRsZXI/OiBGdW5jdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Zu+5qCHXHJcbiAgICogQGVuX1VTIEljb25cclxuICAgKi9cclxuICBpY29uPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVHJlZU5vZGVcclxuICogQHNlbGVjdG9yIHgtdHJlZS1ub2RlXHJcbiAqIEBkZWNvcmF0b3IgZGlyZWN0aXZlXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFRyZWVOb2RlUHJlZml4ID0gJ3gtdHJlZS1ub2RlJztcclxuXHJcbi8qKlxyXG4gKiBUcmVlTm9kZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVOb2RlUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmlbDmja5cclxuICAgKiBAZW5fVVMgTm9kZSBkYXRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9kZTogWFRyZWVOb2RlID0ge307XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxgue6p1xyXG4gICAqIEBlbl9VUyBMZXZlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxldmVsPzogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5oeS5Yqg6L295a2Q6IqC54K5XHJcbiAgICogQGVuX1VTIExhenkgbG9hZGluZyBvZiBjaGlsZCBub2Rlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbGF6eT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnnmoTpq5jluqbvvIzljZXkvY0gcmVtXHJcbiAgICogQGVuX1VTIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUgaW4gcmVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dE51bWJlcigpIG5vZGVIZWlnaHQ6IFhOdW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnlhoXlrrnkuI3mjaLooYzmmL7npLrnnIHnlaXlj7dcclxuICAgKiBAZW5fVVMgU2hvdyBlbGxpcHNpcyB3aXRob3V0IHdyYXBwaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBub2RlTm93cmFwPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueWeguebtOWvuem9kOaWueW8j1xyXG4gICAqIEBlbl9VUyBTaG93IGVsbGlwc2lzIHdpdGhvdXQgd3JhcHBpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBub2RlQWxpZ25JdGVtczogWEFsaWduID0gJ2NlbnRlcic7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaHkuWKoOi9veWHveaVsFxyXG4gICAqIEBlbl9VUyBMYXp5IGxvYWRpbmcgZnVuY3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKSBsYXp5RGF0YSE6IFhEYXRhPFhUcmVlTm9kZVtdPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH6K6w5Li66Jma5ouf5rua5Yqo55qE6IqC54K5XHJcbiAgICogQGVuX1VTIE1hcmsgYXMgYSBub2RlIG9mIHZpcnR1YWwgcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgdmlydHVhbFNjcm9sbD86IFhCb29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbmVzdC11aS10cmVlLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUtc2VsZWN0L25nLW5lc3QtdWktdHJlZS1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './tree-select.component';
2
+ export * from './tree-select-portal.component';
3
+ export * from './tree-select.module';
4
+ export * from './tree-select.property';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUtc2VsZWN0L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJlZS1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90cmVlLXNlbGVjdC1wb3J0YWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90cmVlLXNlbGVjdC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyZWUtc2VsZWN0LnByb3BlcnR5JztcclxuIl19
@@ -0,0 +1,110 @@
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild } from '@angular/core';
2
+ import { XTreeSelectPortalPrefix } from './tree-select.property';
3
+ import { Subject } from 'rxjs';
4
+ import { XConnectBaseAnimation, XIsEmpty } from '@ng-nest/ui/core';
5
+ import { map, takeUntil } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@ng-nest/ui/i18n";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@ng-nest/ui/tree";
10
+ import * as i4 from "@ng-nest/ui/empty";
11
+ export class XTreeSelectPortalComponent {
12
+ constructor(renderer, cdr, i18n) {
13
+ this.renderer = renderer;
14
+ this.cdr = cdr;
15
+ this.i18n = i18n;
16
+ this.selectAll = false;
17
+ this.show = false;
18
+ this.objectArray = false;
19
+ this.caseSensitive = true;
20
+ this.active = -1;
21
+ this.portalMaxHeight = '';
22
+ this.locale = {};
23
+ this.search = false;
24
+ this.scrollNull = undefined;
25
+ this._unSubject = new Subject();
26
+ }
27
+ done(event) {
28
+ this.animating(false);
29
+ event.toState === 'void' && this.destroyPortal();
30
+ }
31
+ start() {
32
+ this.animating(true);
33
+ }
34
+ // @ViewChild('list') list!: XListComponent;
35
+ get isEmpty() {
36
+ return XIsEmpty(this.data);
37
+ }
38
+ get getSelectAllText() {
39
+ return this.selectAllText || this.locale.selectAllText;
40
+ }
41
+ ngOnInit() {
42
+ this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
43
+ this.value = x;
44
+ this.cdr.detectChanges();
45
+ });
46
+ this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
47
+ this.placement = x;
48
+ this.cdr.detectChanges();
49
+ });
50
+ this.dataChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
51
+ this.data = x;
52
+ this.cdr.detectChanges();
53
+ });
54
+ this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {
55
+ // this.tree.setUnActive(this.active);
56
+ });
57
+ this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((_x) => {
58
+ // this.tree.keydown(x);
59
+ });
60
+ this.inputChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
61
+ this.keywordText = x;
62
+ });
63
+ this.i18n.localeChange
64
+ .pipe(map((x) => x.treeSelect), takeUntil(this._unSubject))
65
+ .subscribe((x) => {
66
+ this.locale = x;
67
+ this.cdr.markForCheck();
68
+ });
69
+ }
70
+ ngOnDestroy() {
71
+ this._unSubject.next();
72
+ this._unSubject.unsubscribe();
73
+ }
74
+ stopPropagation(event) {
75
+ event.stopPropagation();
76
+ }
77
+ nodeClick(node) {
78
+ if (this.multiple) {
79
+ this.nodeEmit(node, this.value);
80
+ }
81
+ else {
82
+ this.nodeEmit(node);
83
+ }
84
+ }
85
+ onSelectAll(_isSelectAll) {
86
+ this.nodeEmit(null, this.value);
87
+ }
88
+ onActive(num) {
89
+ this.active = num;
90
+ }
91
+ }
92
+ /** @nocollapse */ XTreeSelectPortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectPortalComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
93
+ /** @nocollapse */ XTreeSelectPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeSelectPortalComponent, selector: "x-tree-select-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div\r\n #treeSelectPortal\r\n class=\"x-tree-select-portal\"\r\n (click)=\"inputCom.inputFocus(); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalMaxHeight\"\r\n>\r\n <!-- <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (onSelectAll)=\"onSelectAll($event)\"\r\n checked\r\n [objectArray]=\"objectArray\"\r\n [multiple]=\"multiple\"\r\n [selectAll]=\"selectAll\"\r\n [selectAllText]=\"getSelectAllText\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"search ? scrollNull : treeSelectPortal\"\r\n [virtualScroll]=\"virtualScroll\"\r\n [size]=\"size\"\r\n [heightAdaption]=\"treeSelectPortal\"\r\n ></x-list> -->\r\n <x-tree\r\n #tree\r\n [data]=\"data\"\r\n [labelTpl]=\"nodeTpl\"\r\n [virtualScroll]=\"virtualScroll\"\r\n [scrollElement]=\"search ? scrollNull : treeSelectPortal\"\r\n [heightAdaption]=\"treeSelectPortal\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [(activatedId)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n [multiple]=\"multiple\"\r\n [allowManyActivated]=\"multiple\"\r\n [objectArray]=\"objectArray\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n ></x-tree>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-tree-select-portal{width:100%}.x-tree-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;flex-direction:column;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}.x-tree-select-portal x-tree{width:100%}.x-tree-select-portal x-empty{margin:1rem;display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i4.XEmptyComponent, selector: "x-empty" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectPortalComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: `${XTreeSelectPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], template: "<div\r\n #treeSelectPortal\r\n class=\"x-tree-select-portal\"\r\n (click)=\"inputCom.inputFocus(); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalMaxHeight\"\r\n>\r\n <!-- <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (onSelectAll)=\"onSelectAll($event)\"\r\n checked\r\n [objectArray]=\"objectArray\"\r\n [multiple]=\"multiple\"\r\n [selectAll]=\"selectAll\"\r\n [selectAllText]=\"getSelectAllText\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"search ? scrollNull : treeSelectPortal\"\r\n [virtualScroll]=\"virtualScroll\"\r\n [size]=\"size\"\r\n [heightAdaption]=\"treeSelectPortal\"\r\n ></x-list> -->\r\n <x-tree\r\n #tree\r\n [data]=\"data\"\r\n [labelTpl]=\"nodeTpl\"\r\n [virtualScroll]=\"virtualScroll\"\r\n [scrollElement]=\"search ? scrollNull : treeSelectPortal\"\r\n [heightAdaption]=\"treeSelectPortal\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [(activatedId)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n [multiple]=\"multiple\"\r\n [allowManyActivated]=\"multiple\"\r\n [objectArray]=\"objectArray\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n ></x-tree>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-tree-select-portal{width:100%}.x-tree-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;flex-direction:column;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}.x-tree-select-portal x-tree{width:100%}.x-tree-select-portal x-empty{margin:1rem;display:block}\n"] }]
97
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.XI18nService }]; }, propDecorators: { placement: [{
98
+ type: HostBinding,
99
+ args: ['@x-connect-base-animation']
100
+ }], done: [{
101
+ type: HostListener,
102
+ args: ['@x-connect-base-animation.done', ['$event']]
103
+ }], start: [{
104
+ type: HostListener,
105
+ args: ['@x-connect-base-animation.start', ['$event']]
106
+ }], tree: [{
107
+ type: ViewChild,
108
+ args: ['tree']
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QtcG9ydGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LXBvcnRhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBRVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQW1CLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQVkscUJBQXFCLEVBQUUsUUFBUSxFQUE2QixNQUFNLGtCQUFrQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWFoRCxNQUFNLE9BQU8sMEJBQTBCO0lBcURyQyxZQUFtQixRQUFtQixFQUFTLEdBQXNCLEVBQVMsSUFBa0I7UUFBN0UsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBYztRQXRCaEcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBQ3RCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLFdBQU0sR0FBVyxDQUFDLENBQUMsQ0FBQztRQUVwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUVyQixXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUM3QixXQUFN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XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRyZWVTZWxlY3ROb2RlLCBYVHJlZVNlbGVjdFBvcnRhbFByZWZpeCB9IGZyb20gJy4vdHJlZS1zZWxlY3QucHJvcGVydHknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWEJvb2xlYW4sIFhDb25uZWN0QmFzZUFuaW1hdGlvbiwgWElzRW1wdHksIFhQb3NpdGlvblRvcEJvdHRvbSwgWFNpemUgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4blRyZWVTZWxlY3QgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFRyZWVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90cmVlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVNlbGVjdFBvcnRhbFByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC1wb3J0YWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUtc2VsZWN0LXBvcnRhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1hDb25uZWN0QmFzZUFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlU2VsZWN0UG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBIb3N0QmluZGluZygnQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbicpIHB1YmxpYyBwbGFjZW1lbnQhOiBYUG9zaXRpb25Ub3BCb3R0b207XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5kb25lJywgWyckZXZlbnQnXSkgZG9uZShldmVudDogeyB0b1N0YXRlOiBhbnkgfSkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcoZmFsc2UpO1xyXG4gICAgZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnICYmIHRoaXMuZGVzdHJveVBvcnRhbCgpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uLnN0YXJ0JywgWyckZXZlbnQnXSkgc3RhcnQoKSB7XHJcbiAgICB0aGlzLmFuaW1hdGluZyh0cnVlKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlITogWFRyZWVDb21wb25lbnQ7XHJcbiAgLy8gQFZpZXdDaGlsZCgnbGlzdCcpIGxpc3QhOiBYTGlzdENvbXBvbmVudDtcclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiBYSXNFbXB0eSh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGF0YSE6IFhUcmVlU2VsZWN0Tm9kZVtdO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgdmFsdWVDaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgaW5wdXRDaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgZGF0YUNoYW5nZSE6IEJlaGF2aW9yU3ViamVjdDxYVHJlZVNlbGVjdE5vZGVbXT47XHJcbiAgYW5pbWF0aW5nITogRnVuY3Rpb247XHJcbiAgYWN0aXZlQ2hhbmdlITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlU3ViamVjdCE6IFN1YmplY3Q8dm9pZD47XHJcbiAga2V5ZG93blN1YmplY3QhOiBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+O1xyXG4gIHNlYXJjaFN1YmplY3QhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBub2RlRW1pdCE6IEZ1bmN0aW9uO1xyXG4gIHNlbGVjdEFsbEVtaXQhOiBGdW5jdGlvbjtcclxuICBtdWx0aXBsZSE6IFhCb29sZWFuO1xyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5vZGVUcGwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHNob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvYmplY3RBcnJheTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhc2VTZW5zaXRpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFjdGl2ZTogbnVtYmVyID0gLTE7XHJcbiAgaW5wdXRDb20hOiBYSW5wdXRDb21wb25lbnQ7XHJcbiAgcG9ydGFsTWF4SGVpZ2h0ID0gJyc7XHJcbiAgc2VsZWN0QWxsVGV4dCE6IHN0cmluZztcclxuICBsb2NhbGU6IFhJMThuVHJlZVNlbGVjdCA9IHt9O1xyXG4gIHNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjcm9sbE51bGwgPSB1bmRlZmluZWQ7XHJcbiAgdmlydHVhbFNjcm9sbCE6IFhCb29sZWFuO1xyXG4gIHNpemUhOiBYU2l6ZTtcclxuICBleHBhbmRlZExldmVsITogbnVtYmVyO1xyXG4gIGtleXdvcmRUZXh0ITogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBnZXRTZWxlY3RBbGxUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0QWxsVGV4dCB8fCB0aGlzLmxvY2FsZS5zZWxlY3RBbGxUZXh0O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB4O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMucGxhY2VtZW50ID0geDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jbG9zZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gdGhpcy50cmVlLnNldFVuQWN0aXZlKHRoaXMuYWN0aXZlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5rZXlkb3duU3ViamVjdC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKF94KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMudHJlZS5rZXlkb3duKHgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmlucHV0Q2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLmtleXdvcmRUZXh0ID0geDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgudHJlZVNlbGVjdCBhcyBYSTE4blRyZWVTZWxlY3QpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbm9kZUNsaWNrKG5vZGU6IFhUcmVlU2VsZWN0Tm9kZSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5ub2RlRW1pdChub2RlLCB0aGlzLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQobm9kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbChfaXNTZWxlY3RBbGw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubm9kZUVtaXQobnVsbCwgdGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2ZShudW06IG51bWJlcikge1xyXG4gICAgdGhpcy5hY3RpdmUgPSBudW07XHJcbiAgfVxyXG5cclxuICAvLyBvblRhYk91dCgpIHtcclxuICAvLyAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQoKTtcclxuICAvLyB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICN0cmVlU2VsZWN0UG9ydGFsXHJcbiAgY2xhc3M9XCJ4LXRyZWUtc2VsZWN0LXBvcnRhbFwiXHJcbiAgKGNsaWNrKT1cImlucHV0Q29tLmlucHV0Rm9jdXMoKTsgc3RvcFByb3BhZ2F0aW9uKCRldmVudClcIlxyXG4gIFtzdHlsZS5tYXhIZWlnaHRdPVwicG9ydGFsTWF4SGVpZ2h0XCJcclxuPlxyXG4gIDwhLS0gPHgtbGlzdFxyXG4gICAgI2xpc3RcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAobm9kZUNsaWNrKT1cIm5vZGVDbGljaygkZXZlbnQpXCJcclxuICAgIChrZXlNYW5hZ2VyQ2hhbmdlKT1cIm9uQWN0aXZlKCRldmVudClcIlxyXG4gICAgKGtleU1hbmFnZXJUYWJPdXQpPVwib25UYWJPdXQoKVwiXHJcbiAgICAob25TZWxlY3RBbGwpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiXHJcbiAgICBjaGVja2VkXHJcbiAgICBbb2JqZWN0QXJyYXldPVwib2JqZWN0QXJyYXlcIlxyXG4gICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcclxuICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcclxuICAgIFtzZWxlY3RBbGxUZXh0XT1cImdldFNlbGVjdEFsbFRleHRcIlxyXG4gICAgW25vZGVUcGxdPVwibm9kZVRwbFwiXHJcbiAgICBbc2Nyb2xsRWxlbWVudF09XCJzZWFyY2ggPyBzY3JvbGxOdWxsIDogdHJlZVNlbGVjdFBvcnRhbFwiXHJcbiAgICBbdmlydHVhbFNjcm9sbF09XCJ2aXJ0dWFsU2Nyb2xsXCJcclxuICAgIFtzaXplXT1cInNpemVcIlxyXG4gICAgW2hlaWdodEFkYXB0aW9uXT1cInRyZWVTZWxlY3RQb3J0YWxcIlxyXG4gID48L3gtbGlzdD4gLS0+XHJcbiAgPHgtdHJlZVxyXG4gICAgI3RyZWVcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2xhYmVsVHBsXT1cIm5vZGVUcGxcIlxyXG4gICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXHJcbiAgICBbc2Nyb2xsRWxlbWVudF09XCJzZWFyY2ggPyBzY3JvbGxOdWxsIDogdHJlZVNlbGVjdFBvcnRhbFwiXHJcbiAgICBbaGVpZ2h0QWRhcHRpb25dPVwidHJlZVNlbGVjdFBvcnRhbFwiXHJcbiAgICBbZXhwYW5kZWRMZXZlbF09XCJleHBhbmRlZExldmVsXCJcclxuICAgIFsoYWN0aXZhdGVkSWQpXT1cInZhbHVlXCJcclxuICAgIChub2RlQ2xpY2spPVwibm9kZUNsaWNrKCRldmVudClcIlxyXG4gICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcclxuICAgIFthbGxvd01hbnlBY3RpdmF0ZWRdPVwibXVsdGlwbGVcIlxyXG4gICAgW29iamVjdEFycmF5XT1cIm9iamVjdEFycmF5XCJcclxuICAgIFtrZXl3b3JkVGV4dF09XCJrZXl3b3JkVGV4dFwiXHJcbiAgICBbY2FzZVNlbnNpdGl2ZV09XCJjYXNlU2Vuc2l0aXZlXCJcclxuICA+PC94LXRyZWU+XHJcbiAgPHgtZW1wdHkgKm5nSWY9XCJpc0VtcHR5XCI+PC94LWVtcHR5PlxyXG48L2Rpdj5cclxuIl19