@dereekb/dbx-form 11.1.8 → 12.0.0

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 (248) hide show
  1. package/calendar/lib/calendar.module.d.ts +1 -14
  2. package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +8 -5
  3. package/calendar/lib/calendar.schedule.selection.component.d.ts +13 -10
  4. package/calendar/lib/calendar.schedule.selection.d.ts +6 -6
  5. package/calendar/lib/calendar.schedule.selection.days.component.d.ts +1 -1
  6. package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +1 -1
  7. package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +4 -4
  8. package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +5 -5
  9. package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +4 -2
  10. package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +1 -1
  11. package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +1 -1
  12. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +19 -17
  13. package/calendar/lib/calendar.schedule.selection.store.d.ts +2 -2
  14. package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +1 -1
  15. package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +8 -12
  16. package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +22 -22
  17. package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +2 -10
  18. package/esm2022/calendar/lib/calendar.module.mjs +19 -101
  19. package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +27 -28
  20. package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +38 -55
  21. package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +17 -13
  22. package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +11 -12
  23. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +18 -21
  24. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +12 -9
  25. package/esm2022/calendar/lib/calendar.schedule.selection.mjs +3 -2
  26. package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +22 -18
  27. package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +12 -9
  28. package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +13 -10
  29. package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +52 -70
  30. package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +5 -5
  31. package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +9 -8
  32. package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +48 -50
  33. package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +17 -14
  34. package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +8 -40
  35. package/esm2022/lib/form/action/form.action.directive.mjs +58 -55
  36. package/esm2022/lib/form/action/form.action.module.mjs +9 -9
  37. package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +9 -8
  38. package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +14 -11
  39. package/esm2022/lib/form/form.mjs +1 -1
  40. package/esm2022/lib/form/form.module.mjs +4 -4
  41. package/esm2022/lib/form/io/form.changes.directive.mjs +11 -16
  42. package/esm2022/lib/form/io/form.input.directive.mjs +24 -38
  43. package/esm2022/lib/form/io/form.io.module.mjs +15 -9
  44. package/esm2022/lib/form/io/form.loading.directive.mjs +22 -42
  45. package/esm2022/lib/form.module.mjs +4 -4
  46. package/esm2022/lib/form.providers.mjs +32 -0
  47. package/esm2022/lib/formly/field/checklist/checklist.field.mjs +5 -5
  48. package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +51 -47
  49. package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +41 -29
  50. package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +3 -3
  51. package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +8 -45
  52. package/esm2022/lib/formly/field/checklist/checklist.item.mjs +1 -1
  53. package/esm2022/lib/formly/field/component/component.field.component.mjs +11 -8
  54. package/esm2022/lib/formly/field/component/component.field.module.mjs +8 -14
  55. package/esm2022/lib/formly/field/field.mjs +1 -1
  56. package/esm2022/lib/formly/field/form.field.module.mjs +4 -4
  57. package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +17 -14
  58. package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +8 -58
  59. package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +17 -13
  60. package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +16 -16
  61. package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +8 -68
  62. package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +71 -54
  63. package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +2 -2
  64. package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +21 -16
  65. package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +51 -49
  66. package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +35 -27
  67. package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +1 -1
  68. package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +8 -65
  69. package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +1 -1
  70. package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +48 -30
  71. package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +2 -2
  72. package/esm2022/lib/formly/field/selection/selection.field.mjs +1 -1
  73. package/esm2022/lib/formly/field/selection/selection.mjs +1 -1
  74. package/esm2022/lib/formly/field/selection/selection.module.mjs +4 -4
  75. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +20 -21
  76. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +6 -73
  77. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +1 -1
  78. package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +37 -22
  79. package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +2 -2
  80. package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +8 -33
  81. package/esm2022/lib/formly/field/value/array/array.field.component.mjs +72 -50
  82. package/esm2022/lib/formly/field/value/array/array.field.module.mjs +8 -44
  83. package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +2 -2
  84. package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +4 -4
  85. package/esm2022/lib/formly/field/value/date/date.field.module.mjs +5 -9
  86. package/esm2022/lib/formly/field/value/date/date.value.mjs +1 -1
  87. package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +8 -8
  88. package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +4 -4
  89. package/esm2022/lib/formly/field/value/date/datetime.mjs +1 -1
  90. package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +8 -8
  91. package/esm2022/lib/formly/field/value/number/number.field.mjs +1 -1
  92. package/esm2022/lib/formly/field/value/number/number.field.module.mjs +4 -4
  93. package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +4 -4
  94. package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +4 -4
  95. package/esm2022/lib/formly/field/value/text/text.address.field.mjs +1 -1
  96. package/esm2022/lib/formly/field/value/text/text.field.mjs +1 -1
  97. package/esm2022/lib/formly/field/value/text/text.field.module.mjs +4 -4
  98. package/esm2022/lib/formly/field/value/value.module.mjs +4 -4
  99. package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +9 -7
  100. package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +19 -24
  101. package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +7 -4
  102. package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +11 -8
  103. package/esm2022/lib/formly/field/wrapper/form.wrapper.module.mjs +8 -39
  104. package/esm2022/lib/formly/field/wrapper/index.mjs +2 -1
  105. package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +19 -16
  106. package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +11 -7
  107. package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +16 -11
  108. package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +11 -8
  109. package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +21 -17
  110. package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +11 -8
  111. package/esm2022/lib/formly/field/wrapper/wrapper.mjs +1 -1
  112. package/esm2022/lib/formly/form/form.form.module.mjs +4 -4
  113. package/esm2022/lib/formly/form/search.form.component.mjs +4 -4
  114. package/esm2022/lib/formly/formly.component.template.mjs +29 -0
  115. package/esm2022/lib/formly/formly.context.directive.mjs +6 -5
  116. package/esm2022/lib/formly/formly.context.mjs +12 -8
  117. package/esm2022/lib/formly/formly.directive.mjs +29 -44
  118. package/esm2022/lib/formly/formly.form.component.mjs +24 -18
  119. package/esm2022/lib/formly/formly.module.mjs +10 -14
  120. package/esm2022/lib/formly/index.mjs +2 -1
  121. package/esm2022/lib/formly/template/login.mjs +1 -1
  122. package/esm2022/lib/formly/template/timezone.mjs +1 -1
  123. package/esm2022/lib/index.mjs +2 -1
  124. package/esm2022/lib/layout/form.layout.module.mjs +4 -4
  125. package/esm2022/lib/layout/form.spacer.component.mjs +3 -3
  126. package/esm2022/lib/validator/available.mjs +1 -1
  127. package/esm2022/lib/validator/boolean.mjs +1 -1
  128. package/esm2022/lib/validator/field.mjs +2 -2
  129. package/esm2022/lib/validator/number.mjs +1 -1
  130. package/esm2022/lib/validator/phone.mjs +1 -1
  131. package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +65 -47
  132. package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +13 -10
  133. package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +10 -43
  134. package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +32 -26
  135. package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +8 -36
  136. package/esm2022/mapbox/lib/mapbox.module.mjs +4 -4
  137. package/fesm2022/dereekb-dbx-form-calendar.mjs +340 -457
  138. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  139. package/fesm2022/dereekb-dbx-form-mapbox.mjs +114 -141
  140. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  141. package/fesm2022/dereekb-dbx-form.mjs +935 -1106
  142. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  143. package/lib/extension/calendar/_calendar.scss +3 -3
  144. package/lib/form/_form.scss +3 -3
  145. package/lib/form/action/form.action.directive.d.ts +35 -16
  146. package/lib/form/action/form.action.module.d.ts +4 -3
  147. package/lib/form/action/transition/form.action.transition.module.d.ts +4 -2
  148. package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +4 -2
  149. package/lib/form/io/form.changes.directive.d.ts +3 -4
  150. package/lib/form/io/form.input.directive.d.ts +7 -10
  151. package/lib/form/io/form.io.module.d.ts +8 -2
  152. package/lib/form/io/form.loading.directive.d.ts +10 -11
  153. package/lib/form.providers.d.ts +8 -0
  154. package/lib/formly/_formly.scss +3 -3
  155. package/lib/formly/field/checklist/_checklist.scss +3 -3
  156. package/lib/formly/field/checklist/checklist.field.d.ts +7 -7
  157. package/lib/formly/field/checklist/checklist.item.d.ts +7 -9
  158. package/lib/formly/field/checklist/checklist.item.field.component.d.ts +19 -18
  159. package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +5 -5
  160. package/lib/formly/field/checklist/checklist.item.field.d.ts +1 -1
  161. package/lib/formly/field/checklist/checklist.item.field.module.d.ts +3 -11
  162. package/lib/formly/field/component/_component.scss +3 -3
  163. package/lib/formly/field/component/component.field.component.d.ts +1 -1
  164. package/lib/formly/field/component/component.field.module.d.ts +2 -4
  165. package/lib/formly/field/field.d.ts +8 -5
  166. package/lib/formly/field/selection/list/_list.scss +3 -3
  167. package/lib/formly/field/selection/list/list.field.component.d.ts +7 -5
  168. package/lib/formly/field/selection/list/list.field.module.d.ts +2 -12
  169. package/lib/formly/field/selection/pickable/_pickable.scss +3 -3
  170. package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +1 -1
  171. package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +25 -23
  172. package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +2 -13
  173. package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +15 -14
  174. package/lib/formly/field/selection/searchable/_searchable.scss +3 -3
  175. package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +4 -4
  176. package/lib/formly/field/selection/searchable/searchable.d.ts +3 -3
  177. package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +8 -12
  178. package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +30 -25
  179. package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +2 -13
  180. package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +6 -8
  181. package/lib/formly/field/selection/selection.d.ts +5 -5
  182. package/lib/formly/field/selection/sourceselect/_sourceselect.scss +3 -3
  183. package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +1 -1
  184. package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +5 -3
  185. package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +2 -17
  186. package/lib/formly/field/texteditor/_texteditor.scss +9 -9
  187. package/lib/formly/field/texteditor/texteditor.field.component.d.ts +5 -4
  188. package/lib/formly/field/texteditor/texteditor.field.module.d.ts +2 -8
  189. package/lib/formly/field/value/array/_array.scss +5 -5
  190. package/lib/formly/field/value/array/array.field.component.d.ts +16 -18
  191. package/lib/formly/field/value/array/array.field.d.ts +8 -5
  192. package/lib/formly/field/value/array/array.field.module.d.ts +2 -10
  193. package/lib/formly/field/value/boolean/_boolean.scss +3 -3
  194. package/lib/formly/field/value/date/_date.scss +5 -5
  195. package/lib/formly/field/value/date/date.field.module.d.ts +8 -9
  196. package/lib/formly/field/value/date/datetime.field.service.d.ts +1 -1
  197. package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +13 -13
  198. package/lib/formly/field/value/number/_number.scss +2 -2
  199. package/lib/formly/field/value/phone/_phone.scss +6 -6
  200. package/lib/formly/field/value/phone/phone.field.component.d.ts +6 -5
  201. package/lib/formly/field/value/text/_text.scss +3 -3
  202. package/lib/formly/field/wrapper/_wrapper.scss +3 -3
  203. package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +1 -1
  204. package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +1 -1
  205. package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +2 -0
  206. package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +4 -4
  207. package/lib/formly/field/wrapper/form.wrapper.module.d.ts +2 -8
  208. package/lib/formly/field/wrapper/index.d.ts +1 -0
  209. package/lib/formly/field/wrapper/info.wrapper.component.d.ts +2 -2
  210. package/lib/formly/field/wrapper/section.wrapper.component.d.ts +1 -1
  211. package/lib/formly/field/wrapper/style.wrapper.component.d.ts +5 -3
  212. package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +1 -1
  213. package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +2 -1
  214. package/lib/formly/field/wrapper/working.wrapper.component.d.ts +2 -2
  215. package/lib/formly/form/_form.scss +3 -3
  216. package/lib/formly/formly.component.template.d.ts +19 -0
  217. package/lib/formly/formly.context.d.ts +11 -7
  218. package/lib/formly/formly.context.directive.d.ts +2 -2
  219. package/lib/formly/formly.directive.d.ts +10 -10
  220. package/lib/formly/formly.form.component.d.ts +18 -13
  221. package/lib/formly/formly.module.d.ts +1 -1
  222. package/lib/formly/index.d.ts +1 -0
  223. package/lib/index.d.ts +1 -0
  224. package/lib/layout/_layout.scss +3 -3
  225. package/lib/style/_all-typography.scss +1 -1
  226. package/lib/style/_theming.scss +1 -1
  227. package/mapbox/lib/field/latlng/latlng.field.component.d.ts +25 -23
  228. package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +2 -1
  229. package/mapbox/lib/field/latlng/latlng.module.d.ts +2 -11
  230. package/mapbox/lib/field/zoom/zoom.field.component.d.ts +13 -13
  231. package/mapbox/lib/field/zoom/zoom.module.d.ts +3 -10
  232. package/package.json +10 -11
  233. package/mapbox/esm2022/dereekb-dbx-form-mapbox.mjs +0 -5
  234. package/mapbox/esm2022/index.mjs +0 -3
  235. package/mapbox/esm2022/lib/field/index.mjs +0 -3
  236. package/mapbox/esm2022/lib/field/latlng/index.mjs +0 -5
  237. package/mapbox/esm2022/lib/field/latlng/latlng.field.component.mjs +0 -244
  238. package/mapbox/esm2022/lib/field/latlng/latlng.field.marker.component.mjs +0 -31
  239. package/mapbox/esm2022/lib/field/latlng/latlng.field.mjs +0 -35
  240. package/mapbox/esm2022/lib/field/latlng/latlng.module.mjs +0 -59
  241. package/mapbox/esm2022/lib/field/zoom/index.mjs +0 -4
  242. package/mapbox/esm2022/lib/field/zoom/zoom.field.component.mjs +0 -140
  243. package/mapbox/esm2022/lib/field/zoom/zoom.field.mjs +0 -23
  244. package/mapbox/esm2022/lib/field/zoom/zoom.module.mjs +0 -57
  245. package/mapbox/esm2022/lib/mapbox.module.mjs +0 -16
  246. package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs +0 -566
  247. package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs.map +0 -1
  248. package/mapbox/package.json +0 -21
@@ -1,88 +1,90 @@
1
- import { filterMaybe } from '@dereekb/rxjs';
2
- import { BehaviorSubject, map, shareReplay } from 'rxjs';
3
- import { Component, Directive, inject, InjectionToken, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, Directive, inject, InjectionToken, input } from '@angular/core';
4
2
  import { mergeArraysIntoArray } from '@dereekb/util';
3
+ import { DbxInjectionComponent } from '@dereekb/dbx-core';
4
+ import { DbxAnchorComponent } from '@dereekb/dbx-web';
5
+ import { MatIconModule } from '@angular/material/icon';
5
6
  import * as i0 from "@angular/core";
6
- import * as i1 from "@dereekb/dbx-web";
7
- import * as i2 from "@dereekb/dbx-core";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/material/icon";
7
+ import * as i1 from "@angular/material/icon";
10
8
  export const DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN = new InjectionToken('DbxSearchableField');
11
9
  export class DbxSearchableFieldAutocompleteItemComponent {
12
- _displayValue = new BehaviorSubject(undefined);
13
- displayValue$ = this._displayValue.pipe(filterMaybe(), shareReplay(1));
14
- config$ = this.displayValue$.pipe(map((x) => {
10
+ displayValue = input.required();
11
+ configSignal = computed(() => {
12
+ const displayValue = this.displayValue();
15
13
  const config = {
16
- ...x.display,
14
+ ...displayValue.display,
17
15
  providers: mergeArraysIntoArray([
18
16
  {
19
17
  provide: DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN,
20
- useValue: x
18
+ useValue: displayValue
21
19
  }
22
- ], x.display.providers)
20
+ ], displayValue.display.providers)
23
21
  };
24
22
  return config;
25
- }));
26
- anchor$ = this.displayValue$.pipe(map((x) => x.anchor));
27
- set displayValue(displayValue) {
28
- this._displayValue.next(displayValue);
29
- }
30
- ngOnDestroy() {
31
- this._displayValue.complete();
32
- }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: "displayValue" }, ngImport: i0, template: `
35
- <dbx-anchor [block]="true" [anchor]="anchor$ | async">
36
- <dbx-injection [config]="config$ | async"></dbx-injection>
23
+ });
24
+ anchorSignal = computed(() => this.displayValue().anchor);
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxSearchableFieldAutocompleteItemComponent, isStandalone: true, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: { classPropertyName: "displayValue", publicName: "displayValue", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
27
+ <dbx-anchor [block]="true" [anchor]="anchorSignal()">
28
+ <dbx-injection [config]="configSignal()"></dbx-injection>
37
29
  </dbx-anchor>
38
- `, isInline: true, dependencies: [{ kind: "component", type: i1.DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "component", type: i2.DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
30
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
39
31
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, decorators: [{
41
33
  type: Component,
42
34
  args: [{
43
35
  selector: 'dbx-searchable-field-autocomplete-item',
44
36
  template: `
45
- <dbx-anchor [block]="true" [anchor]="anchor$ | async">
46
- <dbx-injection [config]="config$ | async"></dbx-injection>
37
+ <dbx-anchor [block]="true" [anchor]="anchorSignal()">
38
+ <dbx-injection [config]="configSignal()"></dbx-injection>
47
39
  </dbx-anchor>
48
- `
40
+ `,
41
+ imports: [DbxAnchorComponent, DbxInjectionComponent],
42
+ changeDetection: ChangeDetectionStrategy.OnPush,
43
+ standalone: true
49
44
  }]
50
- }], propDecorators: { displayValue: [{
51
- type: Input
52
- }] } });
45
+ }] });
53
46
  // MARK: Default
54
47
  export class AbstractDbxSearchableFieldDisplayDirective {
55
48
  displayValue = inject(DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN);
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
57
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractDbxSearchableFieldDisplayDirective, ngImport: i0 });
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractDbxSearchableFieldDisplayDirective, ngImport: i0 });
58
51
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, decorators: [{
60
53
  type: Directive
61
54
  }] });
62
55
  export class DbxDefaultSearchableFieldDisplayComponent extends AbstractDbxSearchableFieldDisplayDirective {
63
- get icon() {
64
- return this.displayValue.icon;
65
- }
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxDefaultSearchableFieldDisplayComponent, selector: "dbx-default-searchable-field-display", usesInheritance: true, ngImport: i0, template: `
56
+ icon = this.displayValue.icon;
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
58
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxDefaultSearchableFieldDisplayComponent, isStandalone: true, selector: "dbx-default-searchable-field-display", usesInheritance: true, ngImport: i0, template: `
68
59
  <div class="dbx-default-searchable-field-display dbx-flex-bar">
69
- <mat-icon class="dbx-icon-spacer" *ngIf="icon">{{ icon }}</mat-icon>
60
+ @if (icon) {
61
+ <mat-icon class="dbx-icon-spacer">{{ icon }}</mat-icon>
62
+ }
70
63
  <span class="dbx-chip-label">{{ displayValue.label }}</span>
71
- <span class="dbx-chip-sublabel" *ngIf="displayValue.sublabel">({{ displayValue.sublabel }})</span>
64
+ @if (displayValue.sublabel) {
65
+ <span class="dbx-chip-sublabel">({{ displayValue.sublabel }})</span>
66
+ }
72
67
  </div>
73
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
68
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
69
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, decorators: [{
76
71
  type: Component,
77
72
  args: [{
78
73
  selector: 'dbx-default-searchable-field-display',
79
74
  template: `
80
75
  <div class="dbx-default-searchable-field-display dbx-flex-bar">
81
- <mat-icon class="dbx-icon-spacer" *ngIf="icon">{{ icon }}</mat-icon>
76
+ @if (icon) {
77
+ <mat-icon class="dbx-icon-spacer">{{ icon }}</mat-icon>
78
+ }
82
79
  <span class="dbx-chip-label">{{ displayValue.label }}</span>
83
- <span class="dbx-chip-sublabel" *ngIf="displayValue.sublabel">({{ displayValue.sublabel }})</span>
80
+ @if (displayValue.sublabel) {
81
+ <span class="dbx-chip-sublabel">({{ displayValue.sublabel }})</span>
82
+ }
84
83
  </div>
85
- `
84
+ `,
85
+ imports: [MatIconModule],
86
+ changeDetection: ChangeDetectionStrategy.OnPush,
87
+ standalone: true
86
88
  }]
87
89
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQVMsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUc1RCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBVWxHLE1BQU0sT0FBTywyQ0FBMkM7SUFDOUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUF1RCxTQUFTLENBQUMsQ0FBQztJQUNwRyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkUsT0FBTyxHQUE0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDakYsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDUixNQUFNLE1BQU0sR0FBZ0M7WUFDMUMsR0FBRyxDQUFDLENBQUMsT0FBTztZQUNaLFNBQVMsRUFBRSxvQkFBb0IsQ0FDN0I7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLHlDQUF5QztvQkFDbEQsUUFBUSxFQUFFLENBQUM7aUJBQ1o7YUFDRixFQUNELENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUNwQjtTQUNGLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRU8sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFakUsSUFDSSxZQUFZLENBQUMsWUFBMkQ7UUFDMUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7d0dBaENVLDJDQUEyQzs0RkFBM0MsMkNBQTJDLHdIQU41Qzs7OztHQUlUOzs0RkFFVSwyQ0FBMkM7a0JBUnZELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFOzs7O0dBSVQ7aUJBQ0Y7OEJBMkJLLFlBQVk7c0JBRGYsS0FBSzs7QUFVUixnQkFBZ0I7QUFFaEIsTUFBTSxPQUFnQiwwQ0FBMEM7SUFDckQsWUFBWSxHQUFHLE1BQU0sQ0FBZ0QseUNBQXlDLENBQUMsQ0FBQzt3R0FEckcsMENBQTBDOzRGQUExQywwQ0FBMEM7OzRGQUExQywwQ0FBMEM7a0JBRC9ELFNBQVM7O0FBZVYsTUFBTSxPQUFPLHlDQUE2QyxTQUFRLDBDQUE2QztJQUM3RyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7d0dBSFUseUNBQXlDOzRGQUF6Qyx5Q0FBeUMsbUdBUjFDOzs7Ozs7R0FNVDs7NEZBRVUseUNBQXlDO2tCQVZyRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFFBQVEsRUFBRTs7Ozs7O0dBTVQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcbmltcG9ydCB7IE1heWJlLCBtZXJnZUFycmF5c0ludG9BcnJheSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuXG5leHBvcnQgY29uc3QgREJYX1NFQVJDSEFCTEVfRklFTERfQ09NUE9ORU5UX0RBVEFfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0RieFNlYXJjaGFibGVGaWVsZCcpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1hbmNob3IgW2Jsb2NrXT1cInRydWVcIiBbYW5jaG9yXT1cImFuY2hvciQgfCBhc3luY1wiPlxuICAgICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJjb25maWckIHwgYXN5bmNcIj48L2RieC1pbmplY3Rpb24+XG4gICAgPC9kYngtYW5jaG9yPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNlYXJjaGFibGVGaWVsZEF1dG9jb21wbGV0ZUl0ZW1Db21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kaXNwbGF5VmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSQgPSB0aGlzLl9kaXNwbGF5VmFsdWUucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY29uZmlnJDogT2JzZXJ2YWJsZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+ID0gdGhpcy5kaXNwbGF5VmFsdWUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCBjb25maWc6IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyA9IHtcbiAgICAgICAgLi4ueC5kaXNwbGF5LFxuICAgICAgICBwcm92aWRlcnM6IG1lcmdlQXJyYXlzSW50b0FycmF5KFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogREJYX1NFQVJDSEFCTEVfRklFTERfQ09NUE9ORU5UX0RBVEFfVE9LRU4sXG4gICAgICAgICAgICAgIHVzZVZhbHVlOiB4XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICB4LmRpc3BsYXkucHJvdmlkZXJzXG4gICAgICAgIClcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBhbmNob3IkID0gdGhpcy5kaXNwbGF5VmFsdWUkLnBpcGUobWFwKCh4KSA9PiB4LmFuY2hvcikpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pIHtcbiAgICB0aGlzLl9kaXNwbGF5VmFsdWUubmV4dChkaXNwbGF5VmFsdWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheVZhbHVlLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuLy8gTUFSSzogRGVmYXVsdFxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhTZWFyY2hhYmxlRmllbGREaXNwbGF5RGlyZWN0aXZlPFQ+IHtcbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlID0gaW5qZWN0PENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPj4oREJYX1NFQVJDSEFCTEVfRklFTERfQ09NUE9ORU5UX0RBVEFfVE9LRU4pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZGVmYXVsdC1zZWFyY2hhYmxlLWZpZWxkLWRpc3BsYXknLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYngtZGVmYXVsdC1zZWFyY2hhYmxlLWZpZWxkLWRpc3BsYXkgZGJ4LWZsZXgtYmFyXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJkYngtaWNvbi1zcGFjZXJcIiAqbmdJZj1cImljb25cIj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LWNoaXAtbGFiZWxcIj57eyBkaXNwbGF5VmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRieC1jaGlwLXN1YmxhYmVsXCIgKm5nSWY9XCJkaXNwbGF5VmFsdWUuc3VibGFiZWxcIj4oe3sgZGlzcGxheVZhbHVlLnN1YmxhYmVsIH19KTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudDxUPiBleHRlbmRzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZUZpZWxkRGlzcGxheURpcmVjdGl2ZTxUPiB7XG4gIGdldCBpY29uKCkge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlWYWx1ZS5pY29uO1xuICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBK0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUV2RCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBYWxHLE1BQU0sT0FBTywyQ0FBMkM7SUFDN0MsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlELENBQUM7SUFFL0UsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFnQztZQUMxQyxHQUFHLFlBQVksQ0FBQyxPQUFPO1lBQ3ZCLFNBQVMsRUFBRSxvQkFBb0IsQ0FDN0I7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLHlDQUF5QztvQkFDbEQsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCO2FBQ0YsRUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDL0I7U0FDRixDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3R0FyQnhELDJDQUEyQzs0RkFBM0MsMkNBQTJDLDBQQVQ1Qzs7OztHQUlULDREQUNTLGtCQUFrQix3RkFBRSxxQkFBcUI7OzRGQUl4QywyQ0FBMkM7a0JBWHZELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFOzs7O0dBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3BELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBeUJELGdCQUFnQjtBQUVoQixNQUFNLE9BQWdCLDBDQUEwQztJQUNyRCxZQUFZLEdBQUcsTUFBTSxDQUFnRCx5Q0FBeUMsQ0FBQyxDQUFDO3dHQURyRywwQ0FBMEM7NEZBQTFDLDBDQUEwQzs7NEZBQTFDLDBDQUEwQztrQkFEL0QsU0FBUzs7QUFzQlYsTUFBTSxPQUFPLHlDQUE2QyxTQUFRLDBDQUE2QztJQUNwRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0dBRDVCLHlDQUF5Qzs0RkFBekMseUNBQXlDLHVIQWYxQzs7Ozs7Ozs7OztHQVVULDJEQUNTLGFBQWE7OzRGQUlaLHlDQUF5QztrQkFqQnJELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSB9IGZyb20gJy4vc2VhcmNoYWJsZSc7XG5pbXBvcnQgeyBtZXJnZUFycmF5c0ludG9BcnJheSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50LCBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhBbmNob3JDb21wb25lbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuZXhwb3J0IGNvbnN0IERCWF9TRUFSQ0hBQkxFX0ZJRUxEX0NPTVBPTkVOVF9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKCdEYnhTZWFyY2hhYmxlRmllbGQnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkYngtYW5jaG9yIFtibG9ja109XCJ0cnVlXCIgW2FuY2hvcl09XCJhbmNob3JTaWduYWwoKVwiPlxuICAgICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJjb25maWdTaWduYWwoKVwiPjwvZGJ4LWluamVjdGlvbj5cbiAgICA8L2RieC1hbmNob3I+XG4gIGAsXG4gIGltcG9ydHM6IFtEYnhBbmNob3JDb21wb25lbnQsIERieEluamVjdGlvbkNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFNlYXJjaGFibGVGaWVsZEF1dG9jb21wbGV0ZUl0ZW1Db21wb25lbnQ8VD4ge1xuICByZWFkb25seSBkaXNwbGF5VmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4+KCk7XG5cbiAgcmVhZG9ubHkgY29uZmlnU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlKCk7XG4gICAgY29uc3QgY29uZmlnOiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgPSB7XG4gICAgICAuLi5kaXNwbGF5VmFsdWUuZGlzcGxheSxcbiAgICAgIHByb3ZpZGVyczogbWVyZ2VBcnJheXNJbnRvQXJyYXkoXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEQlhfU0VBUkNIQUJMRV9GSUVMRF9DT01QT05FTlRfREFUQV9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBkaXNwbGF5VmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGRpc3BsYXlWYWx1ZS5kaXNwbGF5LnByb3ZpZGVyc1xuICAgICAgKVxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9KTtcblxuICByZWFkb25seSBhbmNob3JTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc3BsYXlWYWx1ZSgpLmFuY2hvcik7XG59XG5cbi8vIE1BUks6IERlZmF1bHRcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZUZpZWxkRGlzcGxheURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSA9IGluamVjdDxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4+KERCWF9TRUFSQ0hBQkxFX0ZJRUxEX0NPTVBPTkVOVF9EQVRBX1RPS0VOKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWRlZmF1bHQtc2VhcmNoYWJsZS1maWVsZC1kaXNwbGF5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWRlZmF1bHQtc2VhcmNoYWJsZS1maWVsZC1kaXNwbGF5IGRieC1mbGV4LWJhclwiPlxuICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRieC1pY29uLXNwYWNlclwiPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJkYngtY2hpcC1sYWJlbFwiPnt7IGRpc3BsYXlWYWx1ZS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIEBpZiAoZGlzcGxheVZhbHVlLnN1YmxhYmVsKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LWNoaXAtc3VibGFiZWxcIj4oe3sgZGlzcGxheVZhbHVlLnN1YmxhYmVsIH19KTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudDxUPiBleHRlbmRzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZUZpZWxkRGlzcGxheURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGljb24gPSB0aGlzLmRpc3BsYXlWYWx1ZS5pY29uO1xufVxuIl19
@@ -1,29 +1,33 @@
1
1
  import { convertMaybeToArray, lastValue, separateValues, asArray, filterUniqueValues } from '@dereekb/util';
2
2
  import { mergeDbxInjectionComponentConfigs } from '@dereekb/dbx-core';
3
- import { filterMaybe, SubscriptionObject, LoadingStateContextInstance, successResult, startWithBeginLoading } from '@dereekb/rxjs';
4
- import { ChangeDetectorRef, Directive, ElementRef, ViewChild, inject } from '@angular/core';
3
+ import { filterMaybe, SubscriptionObject, successResult, startWithBeginLoading, loadingStateContext, isLoadingStateInLoadingState } from '@dereekb/rxjs';
4
+ import { Directive, ElementRef, viewChild } from '@angular/core';
5
5
  import { FormControl } from '@angular/forms';
6
6
  import { FieldType } from '@ngx-formly/material';
7
7
  import { debounceTime, distinctUntilChanged, first, map, mergeMap, shareReplay, startWith, switchMap, BehaviorSubject, of } from 'rxjs';
8
8
  import { DbxDefaultSearchableFieldDisplayComponent } from './searchable.field.autocomplete.item.component';
9
- import { camelCase } from 'change-case';
9
+ import { camelCase } from 'change-case-all';
10
+ import { toSignal } from '@angular/core/rxjs-interop';
10
11
  import * as i0 from "@angular/core";
12
+ const DEFAULT_SEARCH_INPUT_PLACEHOLDER = 'Type to Search';
13
+ const DEFAULT_SEARCHABLE_FIELD_DISPLAY = {
14
+ componentClass: DbxDefaultSearchableFieldDisplayComponent
15
+ };
11
16
  /**
12
17
  * Abstract searchable field that provides a feature for searching for values, and for displaying values using Observables.
13
18
  *
14
19
  * Display values are cached for performance.
15
20
  */
16
21
  export class AbstractDbxSearchableValueFieldDirective extends FieldType {
17
- cdRef = inject(ChangeDetectorRef);
18
22
  /**
19
- * Whether or not to allow syncing to
23
+ * Optional override set by the parent class for whether or not to allow the current value to sync to the input.
20
24
  */
21
25
  allowSyncValueToInput = false;
22
26
  /**
23
- * Optional override set by the parent class for picking a default display for this directive.
27
+ * Default placeholder text to use when searchOnEmptyText is false.
24
28
  */
25
- defaultDisplay;
26
- textInput;
29
+ defaultSearchInputPlaceholder = DEFAULT_SEARCH_INPUT_PLACEHOLDER;
30
+ textInput = viewChild('textInput', { read: (ElementRef) });
27
31
  inputCtrl = new FormControl('');
28
32
  _formControlObs = new BehaviorSubject(undefined);
29
33
  formControl$ = this._formControlObs.pipe(filterMaybe());
@@ -35,12 +39,17 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
35
39
  // Return begin loading to setup the loading state.
36
40
  startWithBeginLoading())), shareReplay(1));
37
41
  _singleValueSyncSubscription = new SubscriptionObject();
38
- searchContext = new LoadingStateContextInstance({ obs: this.searchResultsState$, showLoadingOnNoValue: false });
39
- searchResults$ = this.searchResultsState$.pipe(map((x) => x?.value ?? []));
42
+ searchContext = loadingStateContext({ obs: this.searchResultsState$, showLoadingOnNoValue: false });
43
+ searchResults$ = this.searchResultsState$.pipe(map((x) => x?.value ?? []), shareReplay(1));
44
+ isLoadingSearchResults$ = this.searchResultsState$.pipe(map(isLoadingStateInLoadingState), distinctUntilChanged(), shareReplay(1));
40
45
  _formControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
41
46
  values$ = this._formControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
42
47
  displayValuesState$ = this.values$.pipe(distinctUntilChanged(), switchMap((values) => this.loadDisplayValuesForValues(values)), shareReplay(1));
43
48
  displayValues$ = this.displayValuesState$.pipe(map((x) => x?.value ?? []));
49
+ inputValueSignal = toSignal(this.inputValue$);
50
+ searchResultsSignal = toSignal(this.searchResults$);
51
+ displayValuesSignal = toSignal(this.displayValues$);
52
+ isLoadingSearchResultsSignal = toSignal(this.isLoadingSearchResults$);
44
53
  get name() {
45
54
  return this.field.name ?? camelCase(this.label ?? this.key);
46
55
  }
@@ -65,6 +74,12 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
65
74
  get searchOnEmptyText() {
66
75
  return this.searchableField.searchOnEmptyText ?? false;
67
76
  }
77
+ get searchInputPlaceholder() {
78
+ const searchOnEmpty = this.searchOnEmptyText;
79
+ const placeholder = this.searchableField.placeholder;
80
+ const test = placeholder || (searchOnEmpty ? undefined : this.defaultSearchInputPlaceholder) || '';
81
+ return test;
82
+ }
68
83
  get autocomplete() {
69
84
  return (this.props.attributes?.['autocomplete'] ?? this.key);
70
85
  }
@@ -120,7 +135,7 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
120
135
  if (needsDisplay.length > 0) {
121
136
  // Go get the display value.
122
137
  const displayValuesObs = this.displayForValue(needsDisplay.map((x) => x[2]));
123
- const defaultDisplay = mergeDbxInjectionComponentConfigs([this.defaultDisplay, this.display]);
138
+ const defaultDisplay = mergeDbxInjectionComponentConfigs([DEFAULT_SEARCHABLE_FIELD_DISPLAY, this.display]);
124
139
  const anchorForValue = this.useAnchor && this.anchorForValue;
125
140
  obs = displayValuesObs.pipe(first(), map((displayResults) => {
126
141
  // Assign the default component classes to complete configuration.
@@ -161,12 +176,6 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
161
176
  if (this.searchableField.textInputValidator) {
162
177
  this.inputCtrl.setValidators(this.searchableField.textInputValidator);
163
178
  }
164
- if (!this.defaultDisplay?.componentClass) {
165
- this.defaultDisplay = {
166
- ...this.defaultDisplay,
167
- componentClass: DbxDefaultSearchableFieldDisplayComponent
168
- };
169
- }
170
179
  if (this.allowSyncValueToInput && this.multiSelect === false) {
171
180
  this._singleValueSyncSubscription.subscription = this.displayValues$.subscribe((x) => {
172
181
  if (x[0]) {
@@ -199,7 +208,6 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
199
208
  text = (text || '').trim();
200
209
  this.inputCtrl.setValue(text.trim());
201
210
  }
202
- // console.log('Add: ', text, this.inputCtrl.valid);
203
211
  if (!this.inputCtrl.valid) {
204
212
  return;
205
213
  }
@@ -226,7 +234,10 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
226
234
  return addedValue;
227
235
  }
228
236
  addValue(value) {
229
- this.textInput.nativeElement.value = '';
237
+ const textInput = this.textInput();
238
+ if (textInput) {
239
+ textInput.nativeElement.value = '';
240
+ }
230
241
  this.inputCtrl.setValue(null);
231
242
  this.setValues([...this.values, value]);
232
243
  }
@@ -268,13 +279,10 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
268
279
  this.formControl.markAsDirty();
269
280
  this.formControl.markAsTouched();
270
281
  }
271
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
272
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractDbxSearchableValueFieldDirective, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], usesInheritance: true, ngImport: i0 });
282
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
283
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: AbstractDbxSearchableValueFieldDirective, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 });
273
284
  }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, decorators: [{
275
286
  type: Directive
276
- }], propDecorators: { textInput: [{
277
- type: ViewChild,
278
- args: ['textInput']
279
- }] } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFNBQVMsRUFBZ0IsY0FBYyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQStCLGlDQUFpQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBZ0IsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBbUIsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVwSixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQXdFeEM7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0Isd0NBQStMLFNBQVEsU0FBNkI7SUFDL08sS0FBSyxHQUFHLE1B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N0QsU0FBUzs4QkFvQlIsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlLCBjb252ZXJ0TWF5YmVUb0FycmF5LCBsYXN0VmFsdWUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIGFzQXJyYXksIGZpbHRlclVuaXF1ZVZhbHVlcyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCBtZXJnZURieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ3MgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBMb2FkaW5nU3RhdGUsIExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSwgc3VjY2Vzc1Jlc3VsdCwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbi4gSWYgcHJvdmlkZWQsIGFsbG93U3RyaW5nVmFsdWVzIGlzIGNvbnNpZGVyZWQgdHJ1ZS5cbiAgICovXG4gIGNvbnZlcnRTdHJpbmdWYWx1ZT86ICh0ZXh0OiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBoYXNoaW5nIGRpc3BsYXkgdmFsdWVzIGFuZCBvbWl0dGluZyByZXBlYXQgdmFsdWVzLlxuICAgKlxuICAgKiBJZiBoYXNoRm9yVmFsdWUgaXMgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUncyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBoYXNoRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPjtcbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKi9cbiAgc2VhcmNoOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgc2VhcmNoZXMgb24gZW1wdHkgdGV4dC4gSXMgZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNlYXJjaE9uRW1wdHlUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgaW5qZWN0ZWQgY29uZmlnIHRvIHVzZSBmb3IgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICBkaXNwbGF5PzogUGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IFwiQ2xlYXJcIiBpbiB0aGUgYXV0Y29tcGxldGUgbGlzdC5cbiAgICovXG4gIHNob3dDbGVhclZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VhcmNoIGlucHV0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaFwiXG4gICAqL1xuICBzZWFyY2hMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogQWJzdHJhY3Qgc2VhcmNoYWJsZSBmaWVsZCB0aGF0IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3Igc2VhcmNoaW5nIGZvciB2YWx1ZXMsIGFuZCBmb3IgZGlzcGxheWluZyB2YWx1ZXMgdXNpbmcgT2JzZXJ2YWJsZXMuXG4gKlxuICogRGlzcGxheSB2YWx1ZXMgYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmU8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIEMgZXh0ZW5kcyBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+ID0gU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPj4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPEM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbGxvdyBzeW5jaW5nIHRvXG4gICAqL1xuICBhbGxvd1N5bmNWYWx1ZVRvSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2V0L2dldCB2YWx1ZXMgYXMgYW4gYXJyYXkuXG4gICAqL1xuICBhYnN0cmFjdCBnZXQgbXVsdGlTZWxlY3QoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgb3ZlcnJpZGUgc2V0IGJ5IHRoZSBwYXJlbnQgY2xhc3MgZm9yIHBpY2tpbmcgYSBkZWZhdWx0IGRpc3BsYXkgZm9yIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgZGVmYXVsdERpc3BsYXk/OiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc7XG5cbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JylcbiAgdGV4dElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuaW5wdXRWYWx1ZSQucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMuaW5wdXRWYWx1ZVN0cmluZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHRleHQpID0+XG4gICAgICAodGV4dCB8fCB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0ID8gdGhpcy5zZWFyY2godGV4dCA/PyAnJykgOiBvZihbXSkpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgICAgLy8gUmV0dXJuIGJlZ2luIGxvYWRpbmcgdG8gc2V0dXAgdGhlIGxvYWRpbmcgc3RhdGUuXG4gICAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBzZWFyY2hDb250ZXh0ID0gbmV3IExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSh7IG9iczogdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlJDogT2JzZXJ2YWJsZTxUIHwgVFtdPiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHZhbHVlczogVFtdKSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQubmFtZSA/PyBjYW1lbENhc2UodGhpcy5sYWJlbCA/PyAodGhpcy5rZXkgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubGFiZWw7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZUZpZWxkKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IGFzQXJyYXlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYXNBcnJheVZhbHVlID8/IHRydWU7XG4gIH1cblxuICBnZXQgcGlja09ubHlPbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXNBcnJheVZhbHVlID09PSBmYWxzZSB8fCB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZTtcbiAgfVxuXG4gIGdldCBzZWFyY2hPbkVtcHR5VGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuc2VhcmNoT25FbXB0eVRleHQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFt0aGlzLmRlZmF1bHREaXNwbGF5LCB0aGlzLmRpc3BsYXldKTtcbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kZWZhdWx0RGlzcGxheT8uY29tcG9uZW50Q2xhc3MpIHtcbiAgICAgIHRoaXMuZGVmYXVsdERpc3BsYXkgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdERpc3BsYXksXG4gICAgICAgIGNvbXBvbmVudENsYXNzOiBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbGxvd1N5bmNWYWx1ZVRvSW5wdXQgJiYgdGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeFswXSkge1xuICAgICAgICAgIHRoaXMuX3N5bmNTaW5nbGVWYWx1ZSh4WzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXNwbGF5SGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLnNlYXJjaENvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc3luYyB0aGUgaW5wdXQgY29udHJvbCB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgaXMgZmFsc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3N5bmNTaW5nbGVWYWx1ZSh2YWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZSh2YWx1ZS5sYWJlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2FkZFdpdGhUZXh0VmFsdWUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaGFibGVGaWVsZC5hbGxvd1N0cmluZ1ZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0ZXh0ID0gKHRleHQgfHwgJycpLnRyaW0oKTtcbiAgICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHRleHQudHJpbSgpKTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZygnQWRkOiAnLCB0ZXh0LCB0aGlzLmlucHV0Q3RybC52YWxpZCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRDdHJsLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0U3RyaW5nVmFsdWUgPyB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSh0ZXh0KSA6ICh0ZXh0IGFzIHVua25vd24gYXMgVCk7XG4gICAgICB0aGlzLmFkZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZFZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICByZW1vdmVXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICBfdHJ5QWRkQ3VycmVudElucHV0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgbGV0IGFkZGVkVmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRDdHJsLnZhbHVlIHx8ICcnO1xuXG4gICAgICBpZiAoKHZhbHVlIHx8ICcnKS50cmltKCkpIHtcbiAgICAgICAgdGhpcy5fYWRkV2l0aFRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGFkZGVkVmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRlZFZhbHVlO1xuICB9XG5cbiAgYWRkVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5zZXRWYWx1ZXMoWy4uLnRoaXMudmFsdWVzLCB2YWx1ZV0pO1xuICB9XG5cbiAgcmVtb3ZlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVzO1xuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNoVG9GaWx0ZXIgPSB0aGlzLmhhc2hGb3JWYWx1ZSh2YWx1ZSk7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHggIT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZXMoW10pO1xuICB9XG5cbiAgc2V0VmFsdWVzKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgLy8gVXNlIHRvIGZpbHRlciBub24tdW5pcXVlIHZhbHVlcy5cbiAgICBpZiAodGhpcy5oYXNoRm9yVmFsdWUpIHtcbiAgICAgIHZhbHVlcyA9IGZpbHRlclVuaXF1ZVZhbHVlcyh2YWx1ZXMsIHRoaXMuaGFzaEZvclZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waWNrT25seU9uZSkge1xuICAgICAgdmFsdWVzID0gW2xhc3RWYWx1ZSh2YWx1ZXMpXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlcyk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcm90ZWN0ZWQgX2dldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZU9uRm9ybUNvbnRyb2w6IEFycmF5T3JWYWx1ZTxUPik6IFRbXSB7XG4gICAgY29uc3QgdmFsdWU6IFRbXSA9IHZhbHVlT25Gb3JtQ29udHJvbCAhPSBudWxsID8gYXNBcnJheSh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107IC8vIEFsd2F5cyByZXR1cm4gYW4gYXJyYXkuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWU6IFQgfCBUW10gPSB2YWx1ZXM7XG5cbiAgICBpZiAoIXRoaXMuYXNBcnJheVZhbHVlKSB7XG4gICAgICBuZXdWYWx1ZSA9IFt2YWx1ZXNbMF1dLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKVswXTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbn1cbiJdfQ==
287
+ }] });
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFNBQVMsRUFBZ0IsY0FBYyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUErQixpQ0FBaUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQWdCLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVwSixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXdFdEQsTUFBTSxnQ0FBZ0MsR0FBRyxnQkFBZ0Is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d0M7a0JBRDdELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlLCBjb252ZXJ0TWF5YmVUb0FycmF5LCBsYXN0VmFsdWUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIGFzQXJyYXksIGZpbHRlclVuaXF1ZVZhbHVlcywgQ29uZmlndXJhYmxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIG1lcmdlRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlncyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIExvYWRpbmdTdGF0ZSwgc3VjY2Vzc1Jlc3VsdCwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBpc0xvYWRpbmdTdGF0ZUluTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlLWFsbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICByZWFkb25seSBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbi4gSWYgcHJvdmlkZWQsIGFsbG93U3RyaW5nVmFsdWVzIGlzIGNvbnNpZGVyZWQgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnZlcnRTdHJpbmdWYWx1ZT86ICh0ZXh0OiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBoYXNoaW5nIGRpc3BsYXkgdmFsdWVzIGFuZCBvbWl0dGluZyByZXBlYXQgdmFsdWVzLlxuICAgKlxuICAgKiBJZiBoYXNoRm9yVmFsdWUgaXMgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUncyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICByZWFkb25seSBoYXNoRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPjtcbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgc2VhcmNoZXMgb24gZW1wdHkgdGV4dC4gSXMgZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNlYXJjaE9uRW1wdHlUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgaW5qZWN0ZWQgY29uZmlnIHRvIHVzZSBmb3IgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5PzogUGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IFwiQ2xlYXJcIiBpbiB0aGUgYXV0Y29tcGxldGUgbGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3dDbGVhclZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VhcmNoIGlucHV0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaFwiXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmNvbnN0IERFRkFVTFRfU0VBUkNIX0lOUFVUX1BMQUNFSE9MREVSID0gJ1R5cGUgdG8gU2VhcmNoJztcblxuY29uc3QgREVGQVVMVF9TRUFSQ0hBQkxFX0ZJRUxEX0RJU1BMQVk6IFBhcnRpYWw8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPiA9IHtcbiAgY29tcG9uZW50Q2xhc3M6IERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50XG59O1xuXG4vKipcbiAqIEFic3RyYWN0IHNlYXJjaGFibGUgZmllbGQgdGhhdCBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHNlYXJjaGluZyBmb3IgdmFsdWVzLCBhbmQgZm9yIGRpc3BsYXlpbmcgdmFsdWVzIHVzaW5nIE9ic2VydmFibGVzLlxuICpcbiAqIERpc3BsYXkgdmFsdWVzIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBDIGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiA9IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxDPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzZXQvZ2V0IHZhbHVlcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIGFic3RyYWN0IGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdmVycmlkZSBzZXQgYnkgdGhlIHBhcmVudCBjbGFzcyBmb3Igd2hldGhlciBvciBub3QgdG8gYWxsb3cgdGhlIGN1cnJlbnQgdmFsdWUgdG8gc3luYyB0byB0aGUgaW5wdXQuXG4gICAqL1xuICBhbGxvd1N5bmNWYWx1ZVRvSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmYXVsdCBwbGFjZWhvbGRlciB0ZXh0IHRvIHVzZSB3aGVuIHNlYXJjaE9uRW1wdHlUZXh0IGlzIGZhbHNlLlxuICAgKi9cbiAgZGVmYXVsdFNlYXJjaElucHV0UGxhY2Vob2xkZXI/OiBNYXliZTxzdHJpbmc+ID0gREVGQVVMVF9TRUFSQ0hfSU5QVVRfUExBQ0VIT0xERVI7XG5cbiAgcmVhZG9ubHkgdGV4dElucHV0ID0gdmlld0NoaWxkPHN0cmluZywgRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RleHRJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KTtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dFZhbHVlJC5waXBlKGRlYm91bmNlVGltZSgyMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5pbnB1dFZhbHVlU3RyaW5nJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGV4dCkgPT5cbiAgICAgICh0ZXh0IHx8IHRoaXMuc2VhcmNoT25FbXB0eVRleHQgPyB0aGlzLnNlYXJjaCh0ZXh0ID8/ICcnKSA6IG9mKFtdKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXMoeCkpLFxuICAgICAgICAvLyBSZXR1cm4gYmVnaW4gbG9hZGluZyB0byBzZXR1cCB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKClcbiAgICAgIClcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaENvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShtYXAoaXNMb2FkaW5nU3RhdGVJbkxvYWRpbmdTdGF0ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBfZm9ybUNvbnRyb2xWYWx1ZSQ6IE9ic2VydmFibGU8VCB8IFRbXT4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSksIHNoYXJlUmVwbGF5KDEpKSkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXMkOiBPYnNlcnZhYmxlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiA9IHRoaXMuZGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKG1hcCgoeCkgPT4geD8udmFsdWUgPz8gW10pKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbnB1dFZhbHVlJCk7XG4gIHJlYWRvbmx5IHNlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnNlYXJjaFJlc3VsdHMkKTtcbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZGlzcGxheVZhbHVlcyQpO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZ1NlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzTG9hZGluZ1NlYXJjaFJlc3VsdHMkKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm5hbWUgPz8gY2FtZWxDYXNlKHRoaXMubGFiZWwgPz8gKHRoaXMua2V5IGFzIHN0cmluZykpO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGVGaWVsZCgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBhc0FycmF5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFzQXJyYXlWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHBpY2tPbmx5T25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFzQXJyYXlWYWx1ZSA9PT0gZmFsc2UgfHwgdGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2U7XG4gIH1cblxuICBnZXQgc2VhcmNoT25FbXB0eVRleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNlYXJjaE9uRW1wdHlUZXh0ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaElucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgJycge1xuICAgIGNvbnN0IHNlYXJjaE9uRW1wdHkgPSB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0O1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5zZWFyY2hhYmxlRmllbGQucGxhY2Vob2xkZXI7XG4gICAgY29uc3QgdGVzdCA9IHBsYWNlaG9sZGVyIHx8IChzZWFyY2hPbkVtcHR5ID8gdW5kZWZpbmVkIDogdGhpcy5kZWZhdWx0U2VhcmNoSW5wdXRQbGFjZWhvbGRlcikgfHwgJyc7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtERUZBVUxUX1NFQVJDSEFCTEVfRklFTERfRElTUExBWSwgdGhpcy5kaXNwbGF5XSk7XG5cbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyYWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPj5bXSkuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93U3luY1ZhbHVlVG9JbnB1dCAmJiB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4WzBdKSB7XG4gICAgICAgICAgdGhpcy5fc3luY1NpbmdsZVZhbHVlKHhbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzeW5jIHRoZSBpbnB1dCBjb250cm9sIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCBpcyBmYWxzZS5cbiAgICovXG4gIHByb3RlY3RlZCBfc3luY1NpbmdsZVZhbHVlKHZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHZhbHVlLmxhYmVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkV2l0aFRleHRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoYWJsZUZpZWxkLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRleHQgPSAodGV4dCB8fCAnJykudHJpbSgpO1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUodGV4dC50cmltKCkpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbnB1dEN0cmwudmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSA/IHRoaXMuY29udmVydFN0cmluZ1ZhbHVlKHRleHQpIDogKHRleHQgYXMgdW5rbm93biBhcyBUKTtcbiAgICAgIHRoaXMuYWRkVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuYWRkVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZVdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIF90cnlBZGRDdXJyZW50SW5wdXRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICBsZXQgYWRkZWRWYWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTdHJpbmdWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEN0cmwudmFsdWUgfHwgJyc7XG5cbiAgICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xuICAgICAgICB0aGlzLl9hZGRXaXRoVGV4dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgYWRkZWRWYWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZGVkVmFsdWU7XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRJbnB1dCA9IHRoaXMudGV4dElucHV0KCk7XG5cbiAgICBpZiAodGV4dElucHV0KSB7XG4gICAgICB0ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcztcblxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSAhPT0gaGFzaFRvRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB4ICE9PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFtdKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaWx0ZXJVbmlxdWVWYWx1ZXModmFsdWVzLCB0aGlzLmhhc2hGb3JWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGlja09ubHlPbmUpIHtcbiAgICAgIHZhbHVlcyA9IFtsYXN0VmFsdWUodmFsdWVzKV0uZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXMpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBBcnJheU9yVmFsdWU8VD4pOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlOiBUW10gPSB2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCA/IGFzQXJyYXkodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbClbMF07XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
@@ -66,4 +66,4 @@ export function searchableTextField(config) {
66
66
  })
67
67
  });
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBbUQsTUFBTSxhQUFhLENBQUM7QUFLN0k7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsMkNBQTJDLENBQTJELEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQWtQO0lBQy9ZLE9BQU8sQ0FBQyxNQUF5QyxFQUFFLEVBQUU7UUFDbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLFNBQXdELENBQUM7UUFFN0QsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxTQUFTLEdBQW1ELFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFckcsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNuQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUM7b0JBQzlDLE1BQU0sSUFBSSxHQUFhLFVBQVUsRUFBRSxJQUFJLENBQUM7b0JBRXhDLE9BQU87d0JBQ0wsR0FBRyxDQUFDO3dCQUNKLE1BQU07d0JBQ04sSUFBSTtxQkFDTCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQ3hDLENBQUM7U0FDSDthQUFNO1lBQ0wsU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLFVBQVUseUJBQXlCLENBQWMsTUFBMEM7SUFDL0YsT0FBTyxtQkFBbUIsQ0FBQztRQUN6QixHQUFHLE1BQU07UUFDVCxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFJRCxNQUFNLFVBQVUsbUJBQW1CLENBQXdELE1BQTBDO0lBQ25JLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZELE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsTUFBTTtZQUNULFdBQVcsRUFBRSxXQUFXLElBQUksUUFBUTtZQUNwQyxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUtELE1BQU0sVUFBVSxtQkFBbUIsQ0FBd0QsTUFBMEM7SUFDbkksTUFBTSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxQyxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixHQUFHLE1BQU07WUFDVCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5VG9NYXAsIE1heWJlLCBQcmltYXRpdmVLZXksIHNlcGFyYXRlVmFsdWVzIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuLCBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZSB9IGZyb20gJy4vc2VhcmNoYWJsZSc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlQ2hpcFZhbHVlRmllbGRzRmllbGRQcm9wcyB9IGZyb20gJy4vc2VhcmNoYWJsZS5jaGlwLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVGV4dFZhbHVlRmllbGRzRmllbGRQcm9wcyB9IGZyb20gJy4vc2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVXNlZCB0byBjcmVhdGUgYSBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlGbiBmdW5jdGlvbiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvciBpdGVtcyB0aGF0IGFyZSBtaXNzaW5nIHRoZWlyIG1ldGFkYXRhIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBwcm9wZXJseS5cbiAqXG4gKiBAcGFyYW0gcGFyYW0wXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZU1ldGFGaWx0ZXJTZWFyY2hhYmxlRmllbGRWYWx1ZURpc3BsYXlGbjxUIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gc3RyaW5nIHwgbnVtYmVyLCBNID0gdW5rbm93bj4oeyBsb2FkTWV0YUZvclZhbHVlcywgbWFrZURpc3BsYXlGb3JWYWx1ZXMgfTogeyBsb2FkTWV0YUZvclZhbHVlczogKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKSA9PiBPYnNlcnZhYmxlPFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXT47IG1ha2VEaXNwbGF5Rm9yVmFsdWVzOiAodmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pID0+IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4gfSk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgcmV0dXJuICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSkgPT4ge1xuICAgIGNvbnN0IHsgaW5jbHVkZWQ6IGxvYWRlZCwgZXhjbHVkZWQ6IG5lZWRMb2FkaW5nIH0gPSBzZXBhcmF0ZVZhbHVlcyh2YWx1ZXMsICh4KSA9PiBCb29sZWFuKHgubWV0YSkpO1xuICAgIGxldCBhbGxWYWx1ZXM6IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdPjtcblxuICAgIGlmIChuZWVkTG9hZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2FkaW5nUmVzdWx0ID0gbG9hZE1ldGFGb3JWYWx1ZXMobmVlZExvYWRpbmcpO1xuICAgICAgYWxsVmFsdWVzID0gbG9hZGluZ1Jlc3VsdC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdE1hcDogTWFwPE1heWJlPFQ+LCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+PiA9IGFycmF5VG9NYXAocmVzdWx0LCAoeCkgPT4geC52YWx1ZSk7XG5cbiAgICAgICAgICBjb25zdCBtZXJnZWRXaXRoTG9hZCA9IG5lZWRMb2FkaW5nLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSB4LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgbG9hZGVkSXRlbSA9IHJlc3VsdE1hcC5nZXQoaWQpO1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0geC5hbmNob3IgPz8gbG9hZGVkSXRlbT8uYW5jaG9yO1xuICAgICAgICAgICAgY29uc3QgbWV0YTogTWF5YmU8TT4gPSBsb2FkZWRJdGVtPy5tZXRhO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgIG1ldGFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbWVyZ2VkV2l0aExvYWQ7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4gWy4uLmxvYWRlZCwgLi4ucmVzdWx0XSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbFZhbHVlcyA9IG9mKGxvYWRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFZhbHVlcy5waXBlKHN3aXRjaE1hcChtYWtlRGlzcGxheUZvclZhbHVlcykpO1xuICB9O1xufVxuXG4vLyBNQVJLOiBDaGlwc1xuZXhwb3J0IHR5cGUgU3RyaW5nU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxNID0gdW5rbm93bj4gPSBPbWl0PFNlYXJjaGFibGVDaGlwRmllbGRDb25maWc8c3RyaW5nLCBNPiwgJ2FsbG93U3RyaW5nVmFsdWVzJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hhYmxlU3RyaW5nQ2hpcEZpZWxkPE0gPSB1bmtub3duPihjb25maWc6IFN0cmluZ1NlYXJjaGFibGVDaGlwRmllbGRDb25maWc8TT4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiBzZWFyY2hhYmxlQ2hpcEZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAgYWxsb3dTdHJpbmdWYWx1ZXM6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxUID0gdW5rbm93biwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU2VhcmNoYWJsZUNoaXBWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVDaGlwRmllbGQ8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+KGNvbmZpZzogU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxULCBNLCBIPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXksIHBsYWNlaG9sZGVyLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc2VhcmNoYWJsZWNoaXBmaWVsZCcsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyID8/ICdBZGQuLi4nLFxuICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZVxuICAgIH0pXG4gIH0pO1xufVxuXG4vLyBNQVJLOiBUZXh0XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVUZXh0RmllbGRDb25maWc8VCA9IHVua25vd24sIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcsIFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hhYmxlVGV4dEZpZWxkPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5Pihjb25maWc6IFNlYXJjaGFibGVUZXh0RmllbGRDb25maWc8VCwgTSwgSD4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc2VhcmNoYWJsZXRleHRmaWVsZCcsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZVxuICAgIH0pXG4gIH0pO1xufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBbUQsTUFBTSxhQUFhLENBQUM7QUFLN0k7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsMkNBQTJDLENBQTJELEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQWtQO0lBQy9ZLE9BQU8sQ0FBQyxNQUF5QyxFQUFFLEVBQUU7UUFDbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLFNBQXdELENBQUM7UUFFN0QsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDYixNQUFNLFNBQVMsR0FBbUQsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVyRyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ25CLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQztvQkFDOUMsTUFBTSxJQUFJLEdBQWEsVUFBVSxFQUFFLElBQUksQ0FBQztvQkFFeEMsT0FBTzt3QkFDTCxHQUFHLENBQUM7d0JBQ0osTUFBTTt3QkFDTixJQUFJO3FCQUNMLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUtELE1BQU0sVUFBVSx5QkFBeUIsQ0FBYyxNQUEwQztJQUMvRixPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLEdBQUcsTUFBTTtRQUNULGlCQUFpQixFQUFFLElBQUk7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUlELE1BQU0sVUFBVSxtQkFBbUIsQ0FBd0QsTUFBMEM7SUFDbkksTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkQsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRztRQUNILElBQUksRUFBRSxxQkFBcUI7UUFDM0IsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsR0FBRyxNQUFNO1lBQ1QsV0FBVyxFQUFFLFdBQVcsSUFBSSxRQUFRO1lBQ3BDLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBS0QsTUFBTSxVQUFVLG1CQUFtQixDQUF3RCxNQUEwQztJQUNuSSxNQUFNLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFDLE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsTUFBTTtZQUNULFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXJyYXlUb01hcCwgTWF5YmUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcbmltcG9ydCB7IFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50JztcblxuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgbWV0YWRhdGEgZm9yIGl0ZW1zIHRoYXQgYXJlIG1pc3NpbmcgdGhlaXIgbWV0YWRhdGEgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIHByb3Blcmx5LlxuICpcbiAqIEBwYXJhbSBwYXJhbTBcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTWV0YUZpbHRlclNlYXJjaGFibGVGaWVsZFZhbHVlRGlzcGxheUZuPFQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBzdHJpbmcgfCBudW1iZXIsIE0gPSB1bmtub3duPih7IGxvYWRNZXRhRm9yVmFsdWVzLCBtYWtlRGlzcGxheUZvclZhbHVlcyB9OiB7IGxvYWRNZXRhRm9yVmFsdWVzOiAodmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pID0+IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdPjsgbWFrZURpc3BsYXlGb3JWYWx1ZXM6ICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSkgPT4gT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiB9KTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT4ge1xuICByZXR1cm4gKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKSA9PiB7XG4gICAgY29uc3QgeyBpbmNsdWRlZDogbG9hZGVkLCBleGNsdWRlZDogbmVlZExvYWRpbmcgfSA9IHNlcGFyYXRlVmFsdWVzKHZhbHVlcywgKHgpID0+IEJvb2xlYW4oeC5tZXRhKSk7XG4gICAgbGV0IGFsbFZhbHVlczogT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10+O1xuXG4gICAgaWYgKG5lZWRMb2FkaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvYWRpbmdSZXN1bHQgPSBsb2FkTWV0YUZvclZhbHVlcyhuZWVkTG9hZGluZyk7XG4gICAgICBhbGxWYWx1ZXMgPSBsb2FkaW5nUmVzdWx0LnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0TWFwOiBNYXA8TWF5YmU8VD4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT4+ID0gYXJyYXlUb01hcChyZXN1bHQsICh4KSA9PiB4LnZhbHVlKTtcblxuICAgICAgICAgIGNvbnN0IG1lcmdlZFdpdGhMb2FkID0gbmVlZExvYWRpbmcubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHgudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBsb2FkZWRJdGVtID0gcmVzdWx0TWFwLmdldChpZCk7XG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSB4LmFuY2hvciA/PyBsb2FkZWRJdGVtPy5hbmNob3I7XG4gICAgICAgICAgICBjb25zdCBtZXRhOiBNYXliZTxNPiA9IGxvYWRlZEl0ZW0/Lm1ldGE7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgICAgbWV0YVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBtZXJnZWRXaXRoTG9hZDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiBbLi4ubG9hZGVkLCAuLi5yZXN1bHRdKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxsVmFsdWVzID0gb2YobG9hZGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsVmFsdWVzLnBpcGUoc3dpdGNoTWFwKG1ha2VEaXNwbGF5Rm9yVmFsdWVzKSk7XG4gIH07XG59XG5cbi8vIE1BUks6IENoaXBzXG5leHBvcnQgdHlwZSBTdHJpbmdTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPE0gPSB1bmtub3duPiA9IE9taXQ8U2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxzdHJpbmcsIE0+LCAnYWxsb3dTdHJpbmdWYWx1ZXMnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVTdHJpbmdDaGlwRmllbGQ8TSA9IHVua25vd24+KGNvbmZpZzogU3RyaW5nU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxNPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIHNlYXJjaGFibGVDaGlwRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBhbGxvd1N0cmluZ1ZhbHVlczogdHJ1ZVxuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPFQgPSB1bmtub3duLCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnLCBTZWFyY2hhYmxlQ2hpcFZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoYWJsZUNoaXBGaWVsZDxULCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4oY29uZmlnOiBTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPFQsIE0sIEg+KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgcGxhY2Vob2xkZXIsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdzZWFyY2hhYmxlY2hpcGZpZWxkJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIgPz8gJ0FkZC4uLicsXG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSlcbiAgfSk7XG59XG5cbi8vIE1BUks6IFRleHRcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVRleHRGaWVsZENvbmZpZzxUID0gdW5rbm93biwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVUZXh0RmllbGQ8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+KGNvbmZpZzogU2VhcmNoYWJsZVRleHRGaWVsZENvbmZpZzxULCBNLCBIPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXksIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdzZWFyY2hhYmxldGV4dGZpZWxkJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSlcbiAgfSk7XG59XG4iXX0=