@simpleangularcontrols/sac-common 16.0.0-rc.2 → 16.0.0-rc.20

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 (296) hide show
  1. package/README.md +15 -15
  2. package/common/basedatetimecontrol.d.ts +116 -30
  3. package/common/basedatetimecontrol.d.ts.map +1 -1
  4. package/common/baseinputcontrol.d.ts +9 -13
  5. package/common/baseinputcontrol.d.ts.map +1 -1
  6. package/common/basemodelcontrol.d.ts +168 -85
  7. package/common/basemodelcontrol.d.ts.map +1 -1
  8. package/common/baseuploadcontrol.d.ts +160 -144
  9. package/common/baseuploadcontrol.d.ts.map +1 -1
  10. package/components/browser/browser.d.ts +11 -6
  11. package/components/browser/browser.d.ts.map +1 -1
  12. package/controls/buttons/button.d.ts +23 -22
  13. package/controls/buttons/button.d.ts.map +1 -1
  14. package/controls/checkbox/checkbox.d.ts +18 -5
  15. package/controls/checkbox/checkbox.d.ts.map +1 -1
  16. package/controls/checkbox/radiobutton.d.ts +68 -24
  17. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  18. package/controls/checkbox/radiobuttons.d.ts +23 -22
  19. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  20. package/controls/confirm/confirm.button.d.ts +14 -8
  21. package/controls/confirm/confirm.button.d.ts.map +1 -1
  22. package/controls/confirm/confirm.service.d.ts +24 -19
  23. package/controls/confirm/confirm.service.d.ts.map +1 -1
  24. package/controls/contextmenu/contextmenu.d.ts +51 -44
  25. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  26. package/controls/contextmenu/contextmenu.interface.d.ts +4 -0
  27. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -0
  28. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  29. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  30. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  31. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  32. package/controls/contextmenu/contextmenuitem.d.ts +6 -1
  33. package/controls/contextmenu/contextmenuitem.d.ts.map +1 -1
  34. package/controls/contextmenu/contextmenuitembutton.d.ts +22 -21
  35. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  36. package/controls/datetime/date.d.ts +33 -36
  37. package/controls/datetime/date.d.ts.map +1 -1
  38. package/controls/datetime/datetime.d.ts +33 -40
  39. package/controls/datetime/datetime.d.ts.map +1 -1
  40. package/controls/datetime/time.d.ts +32 -36
  41. package/controls/datetime/time.d.ts.map +1 -1
  42. package/controls/dialog/dialog.d.ts +32 -44
  43. package/controls/dialog/dialog.d.ts.map +1 -1
  44. package/controls/form/form.d.ts +7 -43
  45. package/controls/form/form.d.ts.map +1 -1
  46. package/controls/grid/grid.d.ts +67 -62
  47. package/controls/grid/grid.d.ts.map +1 -1
  48. package/controls/grid/gridbutton.d.ts +14 -14
  49. package/controls/grid/gridbutton.d.ts.map +1 -1
  50. package/controls/grid/gridcolumn.d.ts +8 -8
  51. package/controls/grid/gridcolumn.d.ts.map +1 -1
  52. package/controls/grid/gridcolumnaction.d.ts +3 -3
  53. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  54. package/controls/grid/gridcolumnbase.d.ts +46 -38
  55. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  56. package/controls/grid/gridimage.d.ts +2 -2
  57. package/controls/grid/gridimage.d.ts.map +1 -1
  58. package/controls/grid/model.d.ts +51 -42
  59. package/controls/grid/model.d.ts.map +1 -1
  60. package/controls/grid/paging.d.ts +77 -76
  61. package/controls/grid/paging.d.ts.map +1 -1
  62. package/controls/input/input.d.ts +12 -12
  63. package/controls/input/input.d.ts.map +1 -1
  64. package/controls/input/inputarea.d.ts +6 -6
  65. package/controls/input/inputarea.d.ts.map +1 -1
  66. package/controls/input/inputcurrency.d.ts +6 -1
  67. package/controls/input/inputcurrency.d.ts.map +1 -1
  68. package/controls/input/inputdecimal.d.ts +21 -21
  69. package/controls/input/inputdecimal.d.ts.map +1 -1
  70. package/controls/input/inputemail.d.ts.map +1 -1
  71. package/controls/input/inputinteger.d.ts +21 -21
  72. package/controls/input/inputinteger.d.ts.map +1 -1
  73. package/controls/input/inputpassword.d.ts +28 -8
  74. package/controls/input/inputpassword.d.ts.map +1 -1
  75. package/controls/input/inputsearch.d.ts +14 -5
  76. package/controls/input/inputsearch.d.ts.map +1 -1
  77. package/controls/layout/formlayout.d.ts +66 -0
  78. package/controls/layout/formlayout.d.ts.map +1 -0
  79. package/controls/list/buildvaluestring.d.ts +7 -0
  80. package/controls/list/buildvaluestring.d.ts.map +1 -0
  81. package/controls/list/dropdown.d.ts +36 -80
  82. package/controls/list/dropdown.d.ts.map +1 -1
  83. package/controls/list/dropdownoptions.d.ts +42 -0
  84. package/controls/list/dropdownoptions.d.ts.map +1 -0
  85. package/controls/list/listbox.d.ts +20 -20
  86. package/controls/list/listbox.d.ts.map +1 -1
  87. package/controls/multilanguage/multilanguageinput.d.ts +36 -35
  88. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  89. package/controls/multilanguage/multilanguageinputarea.d.ts +41 -40
  90. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  91. package/controls/static/formcontainer.d.ts +8 -4
  92. package/controls/static/formcontainer.d.ts.map +1 -1
  93. package/controls/tinymce/tinymce.d.ts +63 -63
  94. package/controls/tinymce/tinymce.d.ts.map +1 -1
  95. package/controls/tooltip/tooltip.d.ts +76 -69
  96. package/controls/tooltip/tooltip.d.ts.map +1 -1
  97. package/controls/treeview/treeview.d.ts +109 -109
  98. package/controls/treeview/treeview.d.ts.map +1 -1
  99. package/controls/upload/dropzonemultiple.d.ts +21 -21
  100. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  101. package/controls/upload/dropzonesingle.d.ts +18 -18
  102. package/controls/upload/dropzonesingle.d.ts.map +1 -1
  103. package/controls/upload/uploadmultiple.d.ts +10 -10
  104. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  105. package/controls/upload/uploadsingle.d.ts +1 -1
  106. package/controls/upload/uploadsingle.d.ts.map +1 -1
  107. package/controls/validation/validationsummary.d.ts +18 -13
  108. package/controls/validation/validationsummary.d.ts.map +1 -1
  109. package/enums/ButtonRoleType.d.ts +2 -0
  110. package/enums/ButtonRoleType.d.ts.map +1 -0
  111. package/enums/ControlHeight.d.ts +18 -0
  112. package/enums/ControlHeight.d.ts.map +1 -0
  113. package/esm2022/common/basedatetimecontrol.mjs +83 -164
  114. package/esm2022/common/baseinputcontrol.mjs +21 -80
  115. package/esm2022/common/baselistcontrol.mjs +11 -56
  116. package/esm2022/common/basemodelcontrol.mjs +134 -353
  117. package/esm2022/common/baseselectcontrol.mjs +6 -27
  118. package/esm2022/common/baseuploadcontrol.mjs +120 -435
  119. package/esm2022/components/browser/browser.mjs +66 -474
  120. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  121. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  122. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  123. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  124. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  125. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  126. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  127. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  128. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  129. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  130. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  131. package/esm2022/controls/buttons/button.mjs +32 -131
  132. package/esm2022/controls/checkbox/checkbox.mjs +15 -30
  133. package/esm2022/controls/checkbox/radiobutton.mjs +45 -102
  134. package/esm2022/controls/checkbox/radiobuttons.mjs +29 -106
  135. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  136. package/esm2022/controls/confirm/confirm.mjs +19 -69
  137. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  138. package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -0
  139. package/esm2022/controls/contextmenu/contextmenu.mjs +43 -171
  140. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +8 -19
  141. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +8 -19
  142. package/esm2022/controls/contextmenu/contextmenuitem.mjs +7 -13
  143. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +25 -93
  144. package/esm2022/controls/datetime/date.mjs +42 -206
  145. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  146. package/esm2022/controls/datetime/datetime.mjs +42 -224
  147. package/esm2022/controls/datetime/time.mjs +40 -204
  148. package/esm2022/controls/dialog/dialog.mjs +35 -209
  149. package/esm2022/controls/form/form.mjs +27 -153
  150. package/esm2022/controls/grid/grid.mjs +48 -155
  151. package/esm2022/controls/grid/gridbutton.mjs +21 -59
  152. package/esm2022/controls/grid/gridcolumn.mjs +21 -46
  153. package/esm2022/controls/grid/gridcolumnaction.mjs +8 -22
  154. package/esm2022/controls/grid/gridcolumnbase.mjs +35 -124
  155. package/esm2022/controls/grid/gridimage.mjs +5 -16
  156. package/esm2022/controls/grid/model.mjs +49 -74
  157. package/esm2022/controls/grid/paging.mjs +82 -251
  158. package/esm2022/controls/input/input.mjs +17 -65
  159. package/esm2022/controls/input/inputarea.mjs +18 -56
  160. package/esm2022/controls/input/inputcurrency.mjs +9 -14
  161. package/esm2022/controls/input/inputdecimal.mjs +33 -143
  162. package/esm2022/controls/input/inputemail.mjs +10 -37
  163. package/esm2022/controls/input/inputinteger.mjs +32 -127
  164. package/esm2022/controls/input/inputpassword.mjs +26 -45
  165. package/esm2022/controls/input/inputsearch.mjs +16 -38
  166. package/esm2022/controls/layout/formlayout.mjs +31 -0
  167. package/esm2022/controls/list/buildvaluestring.mjs +10 -0
  168. package/esm2022/controls/list/dropdown.mjs +45 -236
  169. package/esm2022/controls/list/dropdownoptions.mjs +22 -0
  170. package/esm2022/controls/list/listbox.mjs +40 -159
  171. package/esm2022/controls/multilanguage/multilanguageinput.mjs +48 -215
  172. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +51 -217
  173. package/esm2022/controls/static/formcontainer.mjs +18 -45
  174. package/esm2022/controls/static/staticlabel.mjs +7 -28
  175. package/esm2022/controls/tabs/tab.mjs +14 -68
  176. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  177. package/esm2022/controls/tinymce/tinymce.mjs +62 -232
  178. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  179. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  180. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  181. package/esm2022/controls/tooltip/tooltip.mjs +74 -358
  182. package/esm2022/controls/treeview/treeview.mjs +103 -343
  183. package/esm2022/controls/upload/dropzonemultiple.mjs +31 -151
  184. package/esm2022/controls/upload/dropzonesingle.mjs +23 -99
  185. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  186. package/esm2022/controls/upload/uploadsingle.mjs +11 -50
  187. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  188. package/esm2022/controls/wizard/wizard.mjs +20 -128
  189. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  190. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  191. package/esm2022/enums/ControlHeight.mjs +11 -0
  192. package/esm2022/enums/IconType.mjs +4 -8
  193. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -0
  194. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  195. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  196. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -0
  197. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  198. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  199. package/esm2022/interfaces/ISacUploadEventCompleteState.mjs +3 -0
  200. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  201. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  202. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  203. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  204. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  205. package/esm2022/interfaces/treeviewaction.interface.mjs +3 -0
  206. package/esm2022/models/languagemodel.mjs +5 -11
  207. package/esm2022/public_api.mjs +25 -94
  208. package/esm2022/services/index.mjs +3 -5
  209. package/esm2022/services/sac-configuration.service.mjs +35 -0
  210. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  211. package/esm2022/services/sac-icon.service.mjs +67 -157
  212. package/esm2022/services/sac-language.service.mjs +7 -45
  213. package/esm2022/services/sac-localisation.service.mjs +32 -426
  214. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  215. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  216. package/esm2022/utilities/convertion.mjs +6 -26
  217. package/esm2022/utilities/datatypes.mjs +4 -6
  218. package/esm2022/utilities/enums.mjs +10 -15
  219. package/esm2022/utilities/guid.mjs +8 -0
  220. package/esm2022/utilities/interpolation.mjs +7 -42
  221. package/esm2022/utilities/popuphelper.mjs +80 -0
  222. package/esm2022/utilities/positioning.mjs +23 -266
  223. package/esm2022/validation/email.validator.mjs +3 -13
  224. package/esm2022/validation/equals.validator.mjs +3 -0
  225. package/esm2022/validation/index.mjs +3 -3
  226. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  227. package/esm2022/validation/isDateValid.mjs +9 -13
  228. package/esm2022/validation/maxdate.validator.mjs +4 -21
  229. package/esm2022/validation/maxtime.validator.mjs +4 -21
  230. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  231. package/esm2022/validation/mindate.validator.mjs +4 -21
  232. package/esm2022/validation/minfiles.validator.mjs +4 -19
  233. package/esm2022/validation/mintextlength.validator.mjs +5 -0
  234. package/esm2022/validation/mintime.validator.mjs +4 -21
  235. package/esm2022/validation/minvalue.validator.mjs +3 -16
  236. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  237. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  238. package/esm2022/validation/notequals.validator.mjs +3 -0
  239. package/esm2022/validation/pattern.validator.mjs +3 -16
  240. package/esm2022/validation/required.validator.mjs +3 -13
  241. package/esm2022/validation/validation.mjs +74 -134
  242. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  243. package/esm2022/validation/validationerroritem.mjs +7 -19
  244. package/fesm2022/simpleangularcontrols-sac-common.mjs +2367 -9261
  245. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  246. package/interfaces/ISacConfigurationService.d.ts +59 -0
  247. package/interfaces/ISacConfigurationService.d.ts.map +1 -0
  248. package/interfaces/ISacIconService.d.ts +34 -2
  249. package/interfaces/ISacIconService.d.ts.map +1 -1
  250. package/interfaces/ISacLabelSizes.d.ts +27 -0
  251. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  252. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  253. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -0
  254. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  255. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  256. package/interfaces/treeviewaction.interface.d.ts +5 -0
  257. package/interfaces/treeviewaction.interface.d.ts.map +1 -0
  258. package/package.json +2 -2
  259. package/public_api.d.ts +33 -21
  260. package/public_api.d.ts.map +1 -1
  261. package/services/index.d.ts +6 -4
  262. package/services/index.d.ts.map +1 -1
  263. package/services/sac-configuration.service.d.ts +127 -0
  264. package/services/sac-configuration.service.d.ts.map +1 -0
  265. package/services/sac-icon.service.d.ts +69 -5
  266. package/services/sac-icon.service.d.ts.map +1 -1
  267. package/services/sac-localisation.service.d.ts +100 -94
  268. package/services/sac-localisation.service.d.ts.map +1 -1
  269. package/services/sac-validationkey.service.d.ts +59 -0
  270. package/services/sac-validationkey.service.d.ts.map +1 -0
  271. package/simpleangularcontrols-sac-common-16.0.0-rc.20.tgz +0 -0
  272. package/utilities/enums.d.ts +3 -1
  273. package/utilities/enums.d.ts.map +1 -1
  274. package/utilities/guid.d.ts +5 -0
  275. package/utilities/guid.d.ts.map +1 -0
  276. package/utilities/popuphelper.d.ts +84 -0
  277. package/utilities/popuphelper.d.ts.map +1 -0
  278. package/validation/equals.validator.d.ts +3 -0
  279. package/validation/equals.validator.d.ts.map +1 -0
  280. package/validation/isDateValid.d.ts.map +1 -1
  281. package/validation/mintextlength.validator.d.ts +3 -0
  282. package/validation/mintextlength.validator.d.ts.map +1 -0
  283. package/validation/notequals.validator.d.ts +3 -0
  284. package/validation/notequals.validator.d.ts.map +1 -0
  285. package/validation/validation.d.ts +70 -52
  286. package/validation/validation.d.ts.map +1 -1
  287. package/controls/treeview/ngtreeitemaction.d.ts +0 -44
  288. package/controls/treeview/ngtreeitemaction.d.ts.map +0 -1
  289. package/controls/treeview/treeviewchild.d.ts +0 -16
  290. package/controls/treeview/treeviewchild.d.ts.map +0 -1
  291. package/esm2022/controls/treeview/ngtreeitemaction.mjs +0 -63
  292. package/esm2022/controls/treeview/treeviewchild.mjs +0 -22
  293. package/esm2022/validation/minlength.validator.mjs +0 -21
  294. package/simpleangularcontrols-sac-common-16.0.0-rc.2.tgz +0 -0
  295. package/validation/minlength.validator.d.ts +0 -3
  296. package/validation/minlength.validator.d.ts.map +0 -1
@@ -1,366 +1,82 @@
1
- import { Directive, Input, ViewChild } from '@angular/core';
2
- import { convertToBoolean } from '../../utilities/convertion';
3
- import { TooltipPosition } from '../../utilities/enums';
4
- import * as i0 from "@angular/core";
5
- /**
1
+ function cov_1cdwwf0oat(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/controls/tooltip/tooltip.mjs";var hash="f0824b3c48a5bfa15a3d72fc1efa926b9845d4d7";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/controls/tooltip/tooltip.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:27}},"1":{start:{line:26,column:8},end:{line:26,column:23}},"2":{start:{line:31,column:8},end:{line:31,column:45}},"3":{start:{line:35,column:8},end:{line:35,column:39}},"4":{start:{line:39,column:8},end:{line:39,column:45}},"5":{start:{line:43,column:8},end:{line:43,column:25}},"6":{start:{line:47,column:8},end:{line:47,column:47}},"7":{start:{line:51,column:8},end:{line:51,column:24}},"8":{start:{line:55,column:8},end:{line:55,column:33}},"9":{start:{line:59,column:8},end:{line:59,column:32}},"10":{start:{line:65,column:8},end:{line:65,column:37}},"11":{start:{line:69,column:8},end:{line:78,column:10}},"12":{start:{line:71,column:12},end:{line:73,column:13}},"13":{start:{line:72,column:16},end:{line:72,column:23}},"14":{start:{line:74,column:12},end:{line:77,column:15}},"15":{start:{line:75,column:16},end:{line:75,column:39}},"16":{start:{line:76,column:16},end:{line:76,column:38}},"17":{start:{line:86,column:8},end:{line:86,column:32}},"18":{start:{line:92,column:8},end:{line:92,column:51}},"19":{start:{line:98,column:8},end:{line:100,column:9}},"20":{start:{line:99,column:12},end:{line:99,column:61}},"21":{start:{line:101,column:8},end:{line:101,column:40}},"22":{start:{line:102,column:8},end:{line:102,column:31}},"23":{start:{line:103,column:8},end:{line:103,column:35}},"24":{start:{line:106,column:8},end:{line:106,column:37}},"25":{start:{line:114,column:8},end:{line:114,column:159}},"26":{start:{line:120,column:8},end:{line:120,column:39}},"27":{start:{line:121,column:8},end:{line:121,column:45}},"28":{start:{line:127,column:8},end:{line:127,column:38}},"29":{start:{line:133,column:8},end:{line:133,column:38}},"30":{start:{line:134,column:8},end:{line:134,column:35}},"31":{start:{line:135,column:8},end:{line:139,column:11}},"32":{start:{line:136,column:12},end:{line:136,column:35}},"33":{start:{line:137,column:12},end:{line:137,column:34}},"34":{start:{line:138,column:12},end:{line:138,column:48}},"35":{start:{line:145,column:8},end:{line:145,column:70}},"36":{start:{line:151,column:8},end:{line:151,column:69}},"37":{start:{line:158,column:8},end:{line:160,column:9}},"38":{start:{line:159,column:12},end:{line:159,column:19}},"39":{start:{line:161,column:8},end:{line:161,column:35}},"40":{start:{line:168,column:8},end:{line:170,column:9}},"41":{start:{line:169,column:12},end:{line:169,column:19}},"42":{start:{line:171,column:8},end:{line:171,column:31}},"43":{start:{line:172,column:8},end:{line:172,column:30}},"44":{start:{line:179,column:8},end:{line:179,column:73}},"45":{start:{line:180,column:8},end:{line:180,column:73}},"46":{start:{line:181,column:8},end:{line:183,column:9}},"47":{start:{line:182,column:12},end:{line:182,column:75}},"48":{start:{line:190,column:8},end:{line:190,column:70}},"49":{start:{line:191,column:8},end:{line:191,column:70}},"50":{start:{line:192,column:8},end:{line:194,column:9}},"51":{start:{line:193,column:12},end:{line:193,column:75}},"52":{start:{line:202,column:22},end:{line:202,column:172}},"53":{start:{line:203,column:8},end:{line:203,column:29}},"54":{start:{line:204,column:33},end:{line:204,column:58}},"55":{start:{line:205,column:8},end:{line:210,column:9}},"56":{start:{line:206,column:12},end:{line:206,column:65}},"57":{start:{line:209,column:12},end:{line:209,column:36}},"58":{start:{line:211,column:8},end:{line:211,column:21}},"59":{start:{line:217,column:22},end:{line:217,column:171}},"60":{start:{line:218,column:8},end:{line:218,column:28}},"61":{start:{line:219,column:33},end:{line:219,column:58}},"62":{start:{line:220,column:8},end:{line:225,column:9}},"63":{start:{line:221,column:12},end:{line:221,column:65}},"64":{start:{line:224,column:12},end:{line:224,column:37}},"65":{start:{line:226,column:8},end:{line:226,column:21}},"66":{start:{line:228,column:13},end:{line:228,column:236}},"67":{start:{line:229,column:13},end:{line:229,column:422}},"68":{start:{line:232,column:0},end:{line:246,column:20}},"69":{start:{line:234,column:42},end:{line:234,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:28},end:{line:79,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:69,column:31},end:{line:69,column:32}},loc:{start:{line:69,column:37},end:{line:78,column:9}},line:69},"2":{name:"(anonymous_2)",decl:{start:{line:74,column:23},end:{line:74,column:24}},loc:{start:{line:74,column:29},end:{line:77,column:13}},line:74},"3":{name:"(anonymous_3)",decl:{start:{line:85,column:4},end:{line:85,column:5}},loc:{start:{line:85,column:21},end:{line:87,column:5}},line:85},"4":{name:"(anonymous_4)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:26},end:{line:93,column:5}},line:91},"5":{name:"(anonymous_5)",decl:{start:{line:97,column:4},end:{line:97,column:5}},loc:{start:{line:97,column:25},end:{line:104,column:5}},line:97},"6":{name:"(anonymous_6)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:18},end:{line:107,column:5}},line:105},"7":{name:"(anonymous_7)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:25},end:{line:115,column:5}},line:113},"8":{name:"(anonymous_8)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:18},end:{line:122,column:5}},line:119},"9":{name:"(anonymous_9)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:23},end:{line:128,column:5}},line:126},"10":{name:"(anonymous_10)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:18},end:{line:140,column:5}},line:132},"11":{name:"(anonymous_11)",decl:{start:{line:135,column:19},end:{line:135,column:20}},loc:{start:{line:135,column:25},end:{line:139,column:9}},line:135},"12":{name:"(anonymous_12)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:23},end:{line:146,column:5}},line:144},"13":{name:"(anonymous_13)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:22},end:{line:152,column:5}},line:150},"14":{name:"(anonymous_14)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:25},end:{line:162,column:5}},line:156},"15":{name:"(anonymous_15)",decl:{start:{line:166,column:4},end:{line:166,column:5}},loc:{start:{line:166,column:16},end:{line:173,column:5}},line:166},"16":{name:"(anonymous_16)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:18},end:{line:184,column:5}},line:177},"17":{name:"(anonymous_17)",decl:{start:{line:188,column:4},end:{line:188,column:5}},loc:{start:{line:188,column:15},end:{line:195,column:5}},line:188},"18":{name:"(anonymous_18)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:22},end:{line:212,column:5}},line:201},"19":{name:"(anonymous_19)",decl:{start:{line:216,column:4},end:{line:216,column:5}},loc:{start:{line:216,column:21},end:{line:227,column:5}},line:216},"20":{name:"(anonymous_20)",decl:{start:{line:234,column:28},end:{line:234,column:29}},loc:{start:{line:234,column:40},end:{line:234,column:109}},line:234}},branchMap:{"0":{loc:{start:{line:71,column:12},end:{line:73,column:13}},type:"if",locations:[{start:{line:71,column:12},end:{line:73,column:13}},{start:{line:71,column:12},end:{line:73,column:13}}],line:71},"1":{loc:{start:{line:98,column:8},end:{line:100,column:9}},type:"if",locations:[{start:{line:98,column:8},end:{line:100,column:9}},{start:{line:98,column:8},end:{line:100,column:9}}],line:98},"2":{loc:{start:{line:158,column:8},end:{line:160,column:9}},type:"if",locations:[{start:{line:158,column:8},end:{line:160,column:9}},{start:{line:158,column:8},end:{line:160,column:9}}],line:158},"3":{loc:{start:{line:168,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:168,column:8},end:{line:170,column:9}},{start:{line:168,column:8},end:{line:170,column:9}}],line:168},"4":{loc:{start:{line:181,column:8},end:{line:183,column:9}},type:"if",locations:[{start:{line:181,column:8},end:{line:183,column:9}},{start:{line:181,column:8},end:{line:183,column:9}}],line:181},"5":{loc:{start:{line:192,column:8},end:{line:194,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:194,column:9}},{start:{line:192,column:8},end:{line:194,column:9}}],line:192},"6":{loc:{start:{line:205,column:8},end:{line:210,column:9}},type:"if",locations:[{start:{line:205,column:8},end:{line:210,column:9}},{start:{line:205,column:8},end:{line:210,column:9}}],line:205},"7":{loc:{start:{line:205,column:12},end:{line:205,column:99}},type:"binary-expr",locations:[{start:{line:205,column:12},end:{line:205,column:53}},{start:{line:205,column:57},end:{line:205,column:99}}],line:205},"8":{loc:{start:{line:220,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:225,column:9}},{start:{line:220,column:8},end:{line:225,column:9}}],line:220},"9":{loc:{start:{line:220,column:12},end:{line:220,column:99}},type:"binary-expr",locations:[{start:{line:220,column:12},end:{line:220,column:55}},{start:{line:220,column:59},end:{line:220,column:99}}],line:220}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"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",sourcesContent:["import { convertToBoolean } from '../../utilities/convertion';\nimport { TooltipPosition } from '../../utilities/enums';\nimport { PopUpHelper } from '../../utilities/popuphelper';\nimport {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\n/**\n * Tooltip Component\n *\n * Requires the following identifiers in the HTML markup\n * - container: Container for ng-content in which the element is displayed where the tooltip is attached.\n * - tooltip: Container for tooltip\n *\n * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step\n * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.\n *\n */\n@Directive()\nexport abstract class SacTooltipCommon implements OnInit, OnDestroy, AfterViewChecked, DoCheck {\n // #region Properties\n\n /**\n * Helper class to display tooltip on correct position\n */\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\n\n /**\n * Inline mode for tooltip\n */\n private _inlinemode: boolean;\n\n /**\n * Defines whether the tooltip is visible\n */\n private _isTooltipVisible: boolean = false;\n\n /**\n * Containers for the tooltip\n */\n private tooltipcontainer: ElementRef<HTMLElement>;\n\n /**\n * Position of the tooltip on the left\n */\n public IsTooltipContentVisible: boolean = false;\n\n /**\n * Position des Tooltips links\n */\n public LeftPos: number = 0;\n\n /**\n * Property for enum in Angular HTML template\n */\n public TooltipPosition = TooltipPosition;\n\n /**\n * Position of the tooltip at the top\n */\n public TopPos: number = 0;\n\n /**\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\n */\n @ViewChild('container', { static: true })\n public content: ElementRef<HTMLElement>;\n\n /**\n * Position of the picker arrow at the left\n */\n public posArrowLeft: number | null = null;\n\n /**\n * Position of the picker arrow at the top\n */\n public posArrowTop: number | null = null;\n\n /**\n * Position of the tooltip. Values: left|top|right|bottom|auto\n *\n * Value 'auto' can be combined with another value.\n */\n @Input()\n public position: string = 'right|auto';\n\n /**\n * Text for ToolTip\n */\n @Input()\n public tooltiptext: string;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Konstruktor\n * @param ref Element Referenz\n */\n constructor(private readonly cdRef: ChangeDetectorRef, private readonly ref: ElementRef) {}\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`\n */\n public get inlinemode(): boolean {\n return this._inlinemode;\n }\n\n /**\n * Setter for inline mode for tooltip\n */\n @Input()\n public set inlinemode(value: boolean) {\n this._inlinemode = convertToBoolean(value);\n }\n\n /**\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\n */\n @ViewChild('tooltip', { static: false })\n public set tooltip(content: ElementRef) {\n if (content !== undefined) {\n document.body.appendChild(content.nativeElement);\n }\n\n this.tooltipcontainer = content;\n this.onContentChange();\n this.cdRef.detectChanges();\n }\n\n public get tooltop(): ElementRef {\n return this.tooltipcontainer;\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Returns the position of the tooltip\n */\n public GetTooltipPosition(): TooltipPosition {\n return this.popupHelper.getDisplayPosition(\n this.content,\n this.tooltipcontainer,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n }\n\n /**\n * Hide tooltip\n */\n public HideTooltip(): void {\n this._isTooltipVisible = false;\n this.IsTooltipContentVisible = false;\n }\n\n /**\n * Defines whether the tooltip is present in the markup\n */\n public IsTooltipVisible(): boolean {\n return this._isTooltipVisible;\n }\n\n /**\n * Show tooltip\n */\n public ShowTooltip(): void {\n this._isTooltipVisible = true;\n this.cdRef.detectChanges();\n\n setTimeout(() => {\n this.getLeftPosition();\n this.getTopPosition();\n this.IsTooltipContentVisible = true;\n });\n }\n\n /**\n * Calculates the height of the tooltip\n */\n public getToolTipHeight(): number {\n return this.popupHelper.getPopupHeight(this.tooltipcontainer);\n }\n\n /**\n * Calculates the width of the tooltips\n */\n public getToolTipWidth(): number {\n return this.popupHelper.getPopupWidth(this.tooltipcontainer);\n }\n\n /**\n * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error\n */\n public ngAfterViewChecked(): void {\n // Do nothing if is not visibile\n if (!this._isTooltipVisible) {\n return;\n }\n\n this.cdRef.detectChanges();\n }\n\n /**\n * Detect UI Changes to Calculate Tooltip correct\n */\n public ngDoCheck(): void {\n // Do nothing if is not visibile\n if (!this._isTooltipVisible) {\n return;\n }\n\n this.getLeftPosition();\n this.getTopPosition();\n }\n\n /**\n * Event when the control is destroyed.\n */\n public ngOnDestroy() {\n // Unregister Event Listener\n window.removeEventListener('scroll', this.onContentChange, true);\n window.removeEventListener('resize', this.onContentChange, true);\n\n if (this.tooltipcontainer !== undefined) {\n document.body.removeChild(this.tooltipcontainer.nativeElement);\n }\n }\n\n /**\n * Event when the control is initialized\n */\n public ngOnInit() {\n // Register Event Listener\n window.addEventListener('scroll', this.onContentChange, true);\n window.addEventListener('resize', this.onContentChange, true);\n\n if (this.tooltipcontainer !== undefined) {\n document.body.appendChild(this.tooltipcontainer.nativeElement);\n }\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n /**\n * Offset for Tooltip. Required for BS4/BS5 to create padding\n */\n protected abstract getTooltipOffset(): number;\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n /**\n * Calculates the position of the tooltip from links\n */\n private getLeftPosition(): number {\n const value = this.popupHelper.getPositionLeft(\n this.content,\n this.tooltipcontainer,\n this.ref,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n this.LeftPos = value;\n\n const requiredPosition = this.GetTooltipPosition();\n if (requiredPosition === TooltipPosition.left || requiredPosition === TooltipPosition.right) {\n this.posArrowTop = this.getToolTipHeight() / 2 - 6.5;\n } else {\n this.posArrowTop = null;\n }\n\n return value;\n }\n\n /**\n * Calculates the position of the tooltip from the top\n */\n private getTopPosition(): number {\n const value = this.popupHelper.getPositionTop(\n this.content,\n this.tooltipcontainer,\n this.ref,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n this.TopPos = value;\n\n const requiredPosition = this.GetTooltipPosition();\n if (requiredPosition === TooltipPosition.bottom || requiredPosition === TooltipPosition.top) {\n this.posArrowLeft = this.getToolTipWidth() / 2 - 6.5;\n } else {\n this.posArrowLeft = null;\n }\n\n return value;\n }\n\n /**\n * method if content has changed and proportions need to be reset in the UI.\n */\n private readonly onContentChange = (): void => {\n // Do nothing if is not visible\n if (!this._isTooltipVisible) {\n return;\n }\n\n setTimeout(() => {\n this.getLeftPosition();\n this.getTopPosition();\n });\n };\n\n // #endregion Private Methods\n}\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f0824b3c48a5bfa15a3d72fc1efa926b9845d4d7"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_1cdwwf0oat=function(){return actualCoverage;};}return actualCoverage;}cov_1cdwwf0oat();import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import{PopUpHelper}from'../../utilities/popuphelper';import{Directive,Input,ViewChild}from'@angular/core';import*as i0 from"@angular/core";/**
6
3
  * Tooltip Component
7
4
  *
8
- * Benötigt im HTML Markup folgende Identifier
9
- * - container: Container für ng-content in welchem das Element angezeigt wird, wo der Tooltip angehängt wird.
10
- * - tooltip: Container für Tooltip
5
+ * Requires the following identifiers in the HTML markup
6
+ * - container: Container for ng-content in which the element is displayed where the tooltip is attached.
7
+ * - tooltip: Container for tooltip
11
8
  *
12
- * Tooltip muss in 2 Schritten angezeigt werden. In einem ersten Schritt wird der Tooltip Markup erzeugt mit (ngIf). In einem 2. Schritt
13
- * kann der Tooltip dann über die CSS visibility angezeigt werden. Wird dies nicht so gemacht, kann es bei gewissen Browsern zu einem Flacker Effekt führen.
9
+ * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step
10
+ * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.
14
11
  *
15
- */
16
- class SacTooltipCommon {
17
- /**
18
- * Setter für Inline Mode für Tooltip
19
- */
20
- set inlinemode(value) {
21
- this._inlinemode = convertToBoolean(value);
22
- }
23
- /**
24
- * Getter für Inline Mode für Tooltip
25
- */
26
- get inlinemode() {
27
- return this._inlinemode;
28
- }
29
- /**
30
- * Setter für Name des Containers für den Tooltip. Wird benötigt, da Tooltip via NGIF ausgeblendet werden kann.
31
- */
32
- set tooltip(content) {
33
- if (content !== undefined) {
34
- document.body.appendChild(content.nativeElement);
35
- }
36
- this.tooltipcontainer = content;
37
- this.onContentChange();
38
- this.cdRef.detectChanges();
39
- }
40
- /**
12
+ */class SacTooltipCommon{// #endregion Properties
13
+ // #region Constructors
14
+ /**
41
15
  * Konstruktor
42
16
  * @param ref Element Referenz
43
- */
44
- constructor(cdRef, ref) {
45
- this.cdRef = cdRef;
46
- this.ref = ref;
47
- /**
48
- * Property für Enum in Angular HTML Template
49
- */
50
- this.TooltipPosition = TooltipPosition;
51
- /**
52
- * Definiert ob der Tooltip sichtbar ist
53
- */
54
- this._isTooltipVisible = false;
55
- /**
56
- * Position des Tooltips oben
57
- */
58
- this.TopPos = 0;
59
- /**
17
+ */constructor(cdRef,ref){cov_1cdwwf0oat().f[0]++;cov_1cdwwf0oat().s[0]++;this.cdRef=cdRef;cov_1cdwwf0oat().s[1]++;this.ref=ref;// #region Properties
18
+ /**
19
+ * Helper class to display tooltip on correct position
20
+ */cov_1cdwwf0oat().s[2]++;this.popupHelper=new PopUpHelper();/**
21
+ * Defines whether the tooltip is visible
22
+ */cov_1cdwwf0oat().s[3]++;this._isTooltipVisible=false;/**
23
+ * Position of the tooltip on the left
24
+ */cov_1cdwwf0oat().s[4]++;this.IsTooltipContentVisible=false;/**
60
25
  * Position des Tooltips links
61
- */
62
- this.LeftPos = 0;
63
- /**
64
- * Position des Tooltips. Werte: left|top|right|bottom|auto
26
+ */cov_1cdwwf0oat().s[5]++;this.LeftPos=0;/**
27
+ * Property for enum in Angular HTML template
28
+ */cov_1cdwwf0oat().s[6]++;this.TooltipPosition=TooltipPosition;/**
29
+ * Position of the tooltip at the top
30
+ */cov_1cdwwf0oat().s[7]++;this.TopPos=0;/**
31
+ * Position of the picker arrow at the left
32
+ */cov_1cdwwf0oat().s[8]++;this.posArrowLeft=null;/**
33
+ * Position of the picker arrow at the top
34
+ */cov_1cdwwf0oat().s[9]++;this.posArrowTop=null;/**
35
+ * Position of the tooltip. Values: left|top|right|bottom|auto
65
36
  *
66
- * Wert 'auto' kann mit einem anderen Wert kombiniert werden.
67
- */
68
- this.position = 'right|auto';
69
- /**
70
- * Definiert ob der Tooltip sichtbar sein soll
71
- */
72
- this.IsTooltipContentVisible = false;
73
- /**
74
- * Methode wenn Content geändert hat und Proporties im UI neu gesetzt werden müssen.
75
- */
76
- this.onContentChange = () => {
77
- setTimeout(() => {
78
- this.getLeftPosition();
79
- this.getTopPosition();
80
- });
81
- };
82
- }
83
- /**
84
- * Ervent wenn das Control initialisert wird
85
- */
86
- ngOnInit() {
87
- // Register Event Listener
88
- window.addEventListener('scroll', this.onContentChange, true);
89
- window.addEventListener('resize', this.onContentChange, true);
90
- if (this.tooltipcontainer !== undefined) {
91
- document.body.appendChild(this.tooltipcontainer.nativeElement);
92
- }
93
- }
94
- /**
95
- * Event wenn das Control zerstört wird.
96
- */
97
- ngOnDestroy() {
98
- // Unregister Event Listener
99
- window.removeEventListener('scroll', this.onContentChange, true);
100
- window.removeEventListener('resize', this.onContentChange, true);
101
- if (this.tooltipcontainer !== undefined) {
102
- document.body.removeChild(this.tooltipcontainer.nativeElement);
103
- }
104
- }
105
- /**
106
- * Berechnet die Position des Tooltips von Oben
107
- */
108
- getTopPosition() {
109
- if (this.content !== null && this.content !== undefined) {
110
- const item = this.content.nativeElement;
111
- if (item.children.length >= 1) {
112
- const childItem = item.firstElementChild;
113
- const contentPosition = childItem.getBoundingClientRect();
114
- switch (this.GetTooltipPosition()) {
115
- case TooltipPosition.top:
116
- this.TopPos = contentPosition.top - this.getToolTipHeight();
117
- return contentPosition.top - this.getToolTipHeight();
118
- case TooltipPosition.right:
119
- this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
120
- return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
121
- case TooltipPosition.bottom:
122
- this.TopPos = contentPosition.top + contentPosition.height;
123
- return contentPosition.top + contentPosition.height;
124
- case TooltipPosition.left:
125
- this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
126
- return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
127
- }
128
- return childItem.clientTop + childItem.offsetTop - ((this.getToolTipHeight() / 2) - (childItem.clientHeight / 2));
129
- }
130
- else {
131
- return this.content.nativeElement.offsetTop;
132
- }
133
- }
134
- else {
135
- return this.ref.nativeElement.offsetTop;
136
- }
137
- }
138
- /**
139
- * Berechnet die Position des Tooltips von Links
140
- */
141
- getLeftPosition() {
142
- if (this.content !== null && this.content !== undefined) {
143
- const item = this.content.nativeElement;
144
- if (item.children.length >= 1) {
145
- const childItem = item.firstElementChild;
146
- const contentPosition = childItem.getBoundingClientRect();
147
- switch (this.GetTooltipPosition()) {
148
- case TooltipPosition.top:
149
- this.LeftPos = contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);
150
- return contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);
151
- case TooltipPosition.right:
152
- this.LeftPos = contentPosition.left + contentPosition.width;
153
- return contentPosition.left + contentPosition.width;
154
- case TooltipPosition.bottom:
155
- this.LeftPos = contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);
156
- return contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);
157
- case TooltipPosition.left:
158
- this.LeftPos = contentPosition.left - this.getToolTipWidth();
159
- return contentPosition.left - this.getToolTipWidth();
160
- }
161
- return this.content.nativeElement.offsetTop;
162
- }
163
- else {
164
- return this.content.nativeElement.offsetTop;
165
- }
166
- }
167
- else {
168
- return this.ref.nativeElement.offsetLeft;
169
- }
170
- }
171
- /**
172
- * Berechnet die Höhe des Tooltips
173
- */
174
- getToolTipHeight() {
175
- if (this.tooltipcontainer) {
176
- return this.tooltipcontainer.nativeElement.clientHeight;
177
- }
178
- else {
179
- return 0;
180
- }
181
- }
182
- /**
183
- * Berechnet die Breite die Tooltips
184
- */
185
- getToolTipWidth() {
186
- if (this.tooltipcontainer) {
187
- return this.tooltipcontainer.nativeElement.clientWidth;
188
- }
189
- else {
190
- return 0;
191
- }
192
- }
193
- /**
194
- * Definiert ob der Tooltip im Markup vorhanden ist
195
- */
196
- IsTooltipVisible() {
197
- return this._isTooltipVisible;
198
- }
199
- /**
200
- * Tooltip anzeigen
201
- */
202
- ShowTooltip() {
203
- this._isTooltipVisible = true;
204
- setTimeout(() => {
205
- this.getLeftPosition();
206
- this.getTopPosition();
207
- this.IsTooltipContentVisible = true;
208
- });
209
- }
210
- /**
211
- * Tooltip ausblenden
212
- */
213
- HideTooltip() {
214
- this._isTooltipVisible = false;
215
- this.IsTooltipContentVisible = false;
216
- }
217
- /**
218
- * Gibt die Position des Tooltips zurück
219
- */
220
- GetTooltipPosition() {
221
- const validPositions = this.ValidatePositions();
222
- // tslint:disable-next-line:no-bitwise
223
- if (this.HasPosition(TooltipPosition.right) && (validPositions & TooltipPosition.right)) {
224
- return TooltipPosition.right;
225
- }
226
- // tslint:disable-next-line:no-bitwise
227
- if (this.HasPosition(TooltipPosition.top) && (validPositions & TooltipPosition.top)) {
228
- return TooltipPosition.top;
229
- }
230
- // tslint:disable-next-line:no-bitwise
231
- if (this.HasPosition(TooltipPosition.left) && (validPositions & TooltipPosition.left)) {
232
- return TooltipPosition.left;
233
- }
234
- // tslint:disable-next-line:no-bitwise
235
- if (this.HasPosition(TooltipPosition.bottom) && (validPositions & TooltipPosition.bottom)) {
236
- return TooltipPosition.bottom;
237
- }
238
- // Get Auto Position or Default
239
- if (this.IsAutoPosition()) {
240
- // tslint:disable-next-line:no-bitwise
241
- if (validPositions & TooltipPosition.right) {
242
- return TooltipPosition.right;
243
- }
244
- // tslint:disable-next-line:no-bitwise
245
- if (validPositions & TooltipPosition.top) {
246
- return TooltipPosition.top;
247
- }
248
- // tslint:disable-next-line:no-bitwise
249
- if (validPositions & TooltipPosition.left) {
250
- return TooltipPosition.left;
251
- }
252
- // tslint:disable-next-line:no-bitwise
253
- if (validPositions & TooltipPosition.bottom) {
254
- return TooltipPosition.bottom;
255
- }
256
- return TooltipPosition.right;
257
- }
258
- else {
259
- return this.GetPosition();
260
- }
261
- }
262
- /**
263
- * Definiert ob AutoPosition aktiv ist
264
- */
265
- IsAutoPosition() {
266
- const positions = this.position.split('|');
267
- return positions.indexOf('auto') >= 0;
268
- }
269
- /**
270
- * Gibt die definierte Position für den Tooltip zurück
271
- */
272
- GetPosition() {
273
- const positions = this.position.split('|');
274
- if (this.HasPosition(TooltipPosition.left)) {
275
- return TooltipPosition.left;
276
- }
277
- if (this.HasPosition(TooltipPosition.top)) {
278
- return TooltipPosition.top;
279
- }
280
- if (this.HasPosition(TooltipPosition.right)) {
281
- return TooltipPosition.right;
282
- }
283
- if (this.HasPosition(TooltipPosition.bottom)) {
284
- return TooltipPosition.bottom;
285
- }
286
- // Default Position if empty
287
- return TooltipPosition.right;
288
- }
289
- /**
290
- * Gibt zurück, ob die Position konfiguriert wurde
291
- *
292
- * @param position Position auf welche geprüft wird
293
- */
294
- HasPosition(position) {
295
- const positions = this.position.split('|');
296
- if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {
297
- return true;
298
- }
299
- if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {
300
- return true;
301
- }
302
- if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {
303
- return true;
304
- }
305
- if (position === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {
306
- return true;
307
- }
308
- return false;
309
- }
310
- /**
311
- * Prüft ob die Position gültig ist, resp. der Tooltip auf die Position platz hat
312
- */
313
- ValidatePositions() {
314
- // Check if Container is false
315
- if (this.tooltipcontainer === undefined) {
316
- return TooltipPosition.right;
317
- }
318
- let allowedPositions = TooltipPosition.none;
319
- const basePosition = this.content.nativeElement.firstElementChild.getBoundingClientRect();
320
- const tooltipRect = this.tooltipcontainer.nativeElement.getBoundingClientRect();
321
- const leftPosOk = basePosition.left - tooltipRect.width > 0;
322
- const rightPosOk = basePosition.right + tooltipRect.width < window.innerWidth;
323
- const topPosOk = basePosition.top - tooltipRect.height > 0;
324
- const bottomPosOk = basePosition.bottom + tooltipRect.height < window.innerHeight;
325
- const leftHalfPosOk = basePosition.left - (tooltipRect.width / 2) > 0;
326
- const rightHalfPosOk = basePosition.right + (tooltipRect.width / 2) < window.innerWidth;
327
- const topHalfPosOk = basePosition.top - (tooltipRect.height / 2) > 0;
328
- const bottomHalfPosOk = basePosition.bottom + (tooltipRect.height / 2) < window.innerHeight;
329
- if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {
330
- // tslint:disable-next-line:no-bitwise
331
- allowedPositions = allowedPositions | TooltipPosition.left;
332
- }
333
- if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {
334
- // tslint:disable-next-line:no-bitwise
335
- allowedPositions = allowedPositions | TooltipPosition.right;
336
- }
337
- if (topPosOk && leftHalfPosOk && rightHalfPosOk) {
338
- // tslint:disable-next-line:no-bitwise
339
- allowedPositions = allowedPositions | TooltipPosition.top;
340
- }
341
- if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {
342
- // tslint:disable-next-line:no-bitwise
343
- allowedPositions = allowedPositions | TooltipPosition.bottom;
344
- }
345
- return allowedPositions;
346
- }
347
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipCommon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
348
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacTooltipCommon, inputs: { position: "position", tooltiptext: "tooltiptext", inlinemode: "inlinemode" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, static: true }], ngImport: i0 }); }
349
- }
350
- export { SacTooltipCommon };
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipCommon, decorators: [{
352
- type: Directive
353
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { position: [{
354
- type: Input
355
- }], tooltiptext: [{
356
- type: Input
357
- }], inlinemode: [{
358
- type: Input
359
- }], content: [{
360
- type: ViewChild,
361
- args: ['container', { static: true }]
362
- }], tooltip: [{
363
- type: ViewChild,
364
- args: ['tooltip', { static: true }]
365
- }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUNhLGdCQUFnQjtJQTZDM0I7O09BRUc7SUFDSCxJQUNJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFZRDs7T0FFRztJQUNILElBQ0ksT0FBTyxDQUFDLE9BQW1CO1FBQzdCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFvQixLQUF3QixFQUFVLEdBQWU7UUFBakQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBdEZyRTs7V0FFRztRQUNILG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRWxD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QUNqRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM3RDtRQUVELElBQUksUUFBUSxJQUFJLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDL0Msc0NBQXNDO1lBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7U0FDM0Q7UUFFRCxJQUFJLFdBQVcsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO1lBQ2xELHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzlEO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDOytHQXhaVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7U0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFNBQVM7aUlBNEJSLFFBQVE7c0JBRFAsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBaUJGLFVBQVU7c0JBRGIsS0FBSztnQkFjb0MsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVdwQyxPQUFPO3NCQURWLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogQmVuw7Z0aWd0IGltIEhUTUwgTWFya3VwIGZvbGdlbmRlIElkZW50aWZpZXJcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmw7xyIG5nLWNvbnRlbnQgaW4gd2VsY2hlbSBkYXMgRWxlbWVudCBhbmdlemVpZ3Qgd2lyZCwgd28gZGVyIFRvb2x0aXAgYW5nZWjDpG5ndCB3aXJkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmw7xyIFRvb2x0aXBcclxuICpcclxuICogVG9vbHRpcCBtdXNzIGluIDIgU2Nocml0dGVuIGFuZ2V6ZWlndCB3ZXJkZW4uIEluIGVpbmVtIGVyc3RlbiBTY2hyaXR0IHdpcmQgZGVyIFRvb2x0aXAgTWFya3VwIGVyemV1Z3QgbWl0IChuZ0lmKS4gSW4gZWluZW0gMi4gU2Nocml0dFxyXG4gKiBrYW5uIGRlciBUb29sdGlwIGRhbm4gw7xiZXIgZGllIENTUyB2aXNpYmlsaXR5IGFuZ2V6ZWlndCB3ZXJkZW4uIFdpcmQgZGllcyBuaWNodCBzbyBnZW1hY2h0LCBrYW5uIGVzIGJlaSBnZXdpc3NlbiBCcm93c2VybiB6dSBlaW5lbSBGbGFja2VyIEVmZmVrdCBmw7xocmVuLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGbDvHIgRW51bSBpbiBBbmd1bGFyIEhUTUwgVGVtcGxhdGVcclxuICAgKi9cclxuICBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBpc3RcclxuICAgKi9cclxuICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBvYmVuXHJcbiAgICovXHJcbiAgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgKi9cclxuICBMZWZ0UG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMuIFdlcnRlOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAqXHJcbiAgICogV2VydCAnYXV0bycga2FubiBtaXQgZWluZW0gYW5kZXJlbiBXZXJ0IGtvbWJpbmllcnQgd2VyZGVuLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBmw7xyIFRvb2xUaXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBzZWluIHNvbGxcclxuICAgKi9cclxuICBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBJbmxpbmUgTW9kZSBmw7xyIFRvb2x0aXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmxpbmVtb2RlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlcyBDb250YWluZXJzIGbDvHIgQ29udGVudCAoei5CLiBJY29uKSBhdWYgd2VsY2hlbSBkZXIgVG9vbHRpcCBhbmdlemVpZ3Qgd2lyZC5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b29sdGlwY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGbDvHIgTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwLiBXaXJkIGJlbsO2dGlndCwgZGEgVG9vbHRpcCB2aWEgTkdJRiBhdXNnZWJsZW5kZXQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b29sdGlwY29udGFpbmVyID0gY29udGVudDtcclxuICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXJ2ZW50IHdlbm4gZGFzIENvbnRyb2wgaW5pdGlhbGlzZXJ0IHdpcmRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGRhcyBDb250cm9sIHplcnN0w7ZydCB3aXJkLlxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmVyZWNobmV0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgdm9uIE9iZW5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IENsaWVudFJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0O1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLnRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQ7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkSXRlbS5jbGllbnRUb3AgKyBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC0gKCh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpIC0gKGNoaWxkSXRlbS5jbGllbnRIZWlnaHQgLyAyKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlcmVjaG5ldCBkaWUgUG9zaXRpb24gZGVzIFRvb2x0aXBzIHZvbiBMaW5rc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udGVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkSXRlbSA9IGl0ZW0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBDbGllbnRSZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCkpIHtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgdGhpcy5MZWZ0UG9zID0gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGg7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEjDtmhlIGRlcyBUb29sdGlwc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEJyZWl0ZSBkaWUgVG9vbHRpcHNcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvb2xUaXBXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGVyIFRvb2x0aXAgaW0gTWFya3VwIHZvcmhhbmRlbiBpc3RcclxuICAgKi9cclxuICBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzVG9vbHRpcFZpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGFuemVpZ2VuXHJcbiAgICovXHJcbiAgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGF1c2JsZW5kZW5cclxuICAgKi9cclxuICBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgd2VubiBDb250ZW50IGdlw6RuZGVydCBoYXQgdW5kIFByb3BvcnRpZXMgaW0gVUkgbmV1IGdlc2V0enQgd2VyZGVuIG3DvHNzZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgenVyw7xja1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLlZhbGlkYXRlUG9zaXRpb25zKCk7XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSAmJiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBBdXRvIFBvc2l0aW9uIG9yIERlZmF1bHRcclxuICAgIGlmICh0aGlzLklzQXV0b1Bvc2l0aW9uKCkpIHtcclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgQXV0b1Bvc2l0aW9uIGFrdGl2IGlzdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSXNBdXRvUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBkaWUgZGVmaW5pZXJ0ZSBQb3NpdGlvbiBmw7xyIGRlbiBUb29sdGlwIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIEdldFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxyXG4gICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpYnQgenVyw7xjaywgb2IgZGllIFBvc2l0aW9uIGtvbmZpZ3VyaWVydCB3dXJkZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFBvc2l0aW9uIGF1ZiB3ZWxjaGUgZ2VwcsO8ZnQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSGFzUG9zaXRpb24ocG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID49IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSAmJiBwb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIFBvc2l0aW9uIGfDvGx0aWcgaXN0LCByZXNwLiBkZXIgVG9vbHRpcCBhdWYgZGllIFBvc2l0aW9uIHBsYXR6IGhhdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgVmFsaWRhdGVQb3NpdGlvbnMoKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIC8vIENoZWNrIGlmIENvbnRhaW5lciBpcyBmYWxzZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xyXG4gICAgY29uc3QgYmFzZVBvc2l0aW9uOiBDbGllbnRSZWN0ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b29sdGlwUmVjdDogQ2xpZW50UmVjdCA9IHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggPiAwO1xyXG4gICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtICh0b29sdGlwUmVjdC53aWR0aCAvIDIpID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgKHRvb2x0aXBSZWN0LndpZHRoIC8gMikgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMikgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArICh0b29sdGlwUmVjdC5oZWlnaHQgLyAyKSA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmlnaHRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
37
+ * Value 'auto' can be combined with another value.
38
+ */cov_1cdwwf0oat().s[10]++;this.position='right|auto';/**
39
+ * method if content has changed and proportions need to be reset in the UI.
40
+ */cov_1cdwwf0oat().s[11]++;this.onContentChange=()=>{cov_1cdwwf0oat().f[1]++;cov_1cdwwf0oat().s[12]++;// Do nothing if is not visible
41
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[0][0]++;cov_1cdwwf0oat().s[13]++;return;}else{cov_1cdwwf0oat().b[0][1]++;}cov_1cdwwf0oat().s[14]++;setTimeout(()=>{cov_1cdwwf0oat().f[2]++;cov_1cdwwf0oat().s[15]++;this.getLeftPosition();cov_1cdwwf0oat().s[16]++;this.getTopPosition();});};}// #endregion Constructors
42
+ // #region Public Getters And Setters
43
+ /**
44
+ * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`
45
+ */get inlinemode(){cov_1cdwwf0oat().f[3]++;cov_1cdwwf0oat().s[17]++;return this._inlinemode;}/**
46
+ * Setter for inline mode for tooltip
47
+ */set inlinemode(value){cov_1cdwwf0oat().f[4]++;cov_1cdwwf0oat().s[18]++;this._inlinemode=convertToBoolean(value);}/**
48
+ * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
49
+ */set tooltip(content){cov_1cdwwf0oat().f[5]++;cov_1cdwwf0oat().s[19]++;if(content!==undefined){cov_1cdwwf0oat().b[1][0]++;cov_1cdwwf0oat().s[20]++;document.body.appendChild(content.nativeElement);}else{cov_1cdwwf0oat().b[1][1]++;}cov_1cdwwf0oat().s[21]++;this.tooltipcontainer=content;cov_1cdwwf0oat().s[22]++;this.onContentChange();cov_1cdwwf0oat().s[23]++;this.cdRef.detectChanges();}get tooltop(){cov_1cdwwf0oat().f[6]++;cov_1cdwwf0oat().s[24]++;return this.tooltipcontainer;}// #endregion Public Getters And Setters
50
+ // #region Public Methods
51
+ /**
52
+ * Returns the position of the tooltip
53
+ */GetTooltipPosition(){cov_1cdwwf0oat().f[7]++;cov_1cdwwf0oat().s[25]++;return this.popupHelper.getDisplayPosition(this.content,this.tooltipcontainer,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true);}/**
54
+ * Hide tooltip
55
+ */HideTooltip(){cov_1cdwwf0oat().f[8]++;cov_1cdwwf0oat().s[26]++;this._isTooltipVisible=false;cov_1cdwwf0oat().s[27]++;this.IsTooltipContentVisible=false;}/**
56
+ * Defines whether the tooltip is present in the markup
57
+ */IsTooltipVisible(){cov_1cdwwf0oat().f[9]++;cov_1cdwwf0oat().s[28]++;return this._isTooltipVisible;}/**
58
+ * Show tooltip
59
+ */ShowTooltip(){cov_1cdwwf0oat().f[10]++;cov_1cdwwf0oat().s[29]++;this._isTooltipVisible=true;cov_1cdwwf0oat().s[30]++;this.cdRef.detectChanges();cov_1cdwwf0oat().s[31]++;setTimeout(()=>{cov_1cdwwf0oat().f[11]++;cov_1cdwwf0oat().s[32]++;this.getLeftPosition();cov_1cdwwf0oat().s[33]++;this.getTopPosition();cov_1cdwwf0oat().s[34]++;this.IsTooltipContentVisible=true;});}/**
60
+ * Calculates the height of the tooltip
61
+ */getToolTipHeight(){cov_1cdwwf0oat().f[12]++;cov_1cdwwf0oat().s[35]++;return this.popupHelper.getPopupHeight(this.tooltipcontainer);}/**
62
+ * Calculates the width of the tooltips
63
+ */getToolTipWidth(){cov_1cdwwf0oat().f[13]++;cov_1cdwwf0oat().s[36]++;return this.popupHelper.getPopupWidth(this.tooltipcontainer);}/**
64
+ * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error
65
+ */ngAfterViewChecked(){cov_1cdwwf0oat().f[14]++;cov_1cdwwf0oat().s[37]++;// Do nothing if is not visibile
66
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[2][0]++;cov_1cdwwf0oat().s[38]++;return;}else{cov_1cdwwf0oat().b[2][1]++;}cov_1cdwwf0oat().s[39]++;this.cdRef.detectChanges();}/**
67
+ * Detect UI Changes to Calculate Tooltip correct
68
+ */ngDoCheck(){cov_1cdwwf0oat().f[15]++;cov_1cdwwf0oat().s[40]++;// Do nothing if is not visibile
69
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[3][0]++;cov_1cdwwf0oat().s[41]++;return;}else{cov_1cdwwf0oat().b[3][1]++;}cov_1cdwwf0oat().s[42]++;this.getLeftPosition();cov_1cdwwf0oat().s[43]++;this.getTopPosition();}/**
70
+ * Event when the control is destroyed.
71
+ */ngOnDestroy(){cov_1cdwwf0oat().f[16]++;cov_1cdwwf0oat().s[44]++;// Unregister Event Listener
72
+ window.removeEventListener('scroll',this.onContentChange,true);cov_1cdwwf0oat().s[45]++;window.removeEventListener('resize',this.onContentChange,true);cov_1cdwwf0oat().s[46]++;if(this.tooltipcontainer!==undefined){cov_1cdwwf0oat().b[4][0]++;cov_1cdwwf0oat().s[47]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_1cdwwf0oat().b[4][1]++;}}/**
73
+ * Event when the control is initialized
74
+ */ngOnInit(){cov_1cdwwf0oat().f[17]++;cov_1cdwwf0oat().s[48]++;// Register Event Listener
75
+ window.addEventListener('scroll',this.onContentChange,true);cov_1cdwwf0oat().s[49]++;window.addEventListener('resize',this.onContentChange,true);cov_1cdwwf0oat().s[50]++;if(this.tooltipcontainer!==undefined){cov_1cdwwf0oat().b[5][0]++;cov_1cdwwf0oat().s[51]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_1cdwwf0oat().b[5][1]++;}}// #endregion Protected Methods
76
+ // #region Private Methods
77
+ /**
78
+ * Calculates the position of the tooltip from links
79
+ */getLeftPosition(){cov_1cdwwf0oat().f[18]++;const value=(cov_1cdwwf0oat().s[52]++,this.popupHelper.getPositionLeft(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[53]++;this.LeftPos=value;const requiredPosition=(cov_1cdwwf0oat().s[54]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[55]++;if((cov_1cdwwf0oat().b[7][0]++,requiredPosition===TooltipPosition.left)||(cov_1cdwwf0oat().b[7][1]++,requiredPosition===TooltipPosition.right)){cov_1cdwwf0oat().b[6][0]++;cov_1cdwwf0oat().s[56]++;this.posArrowTop=this.getToolTipHeight()/2-6.5;}else{cov_1cdwwf0oat().b[6][1]++;cov_1cdwwf0oat().s[57]++;this.posArrowTop=null;}cov_1cdwwf0oat().s[58]++;return value;}/**
80
+ * Calculates the position of the tooltip from the top
81
+ */getTopPosition(){cov_1cdwwf0oat().f[19]++;const value=(cov_1cdwwf0oat().s[59]++,this.popupHelper.getPositionTop(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[60]++;this.TopPos=value;const requiredPosition=(cov_1cdwwf0oat().s[61]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[62]++;if((cov_1cdwwf0oat().b[9][0]++,requiredPosition===TooltipPosition.bottom)||(cov_1cdwwf0oat().b[9][1]++,requiredPosition===TooltipPosition.top)){cov_1cdwwf0oat().b[8][0]++;cov_1cdwwf0oat().s[63]++;this.posArrowLeft=this.getToolTipWidth()/2-6.5;}else{cov_1cdwwf0oat().b[8][1]++;cov_1cdwwf0oat().s[64]++;this.posArrowLeft=null;}cov_1cdwwf0oat().s[65]++;return value;}static{cov_1cdwwf0oat().s[66]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_1cdwwf0oat().s[67]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});}}export{SacTooltipCommon};cov_1cdwwf0oat().s[68]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_1cdwwf0oat().f[20]++;cov_1cdwwf0oat().s[69]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{content:[{type:ViewChild,args:['container',{static:true}]}],position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFHSCxTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQ3NCLGdCQUFnQjtJQXlFbEMsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7O09BR0c7SUFDSCxZQUE2QixLQUF3QixFQUFtQixHQUFlO1FBQTFELFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQW1CLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFoRnZGLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNjLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFPOUQ7O1dBRUc7UUFDSyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFPM0M7O1dBRUc7UUFDSSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFFaEQ7O1dBRUc7UUFDSSxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFFekM7O1dBRUc7UUFDSSxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBUTFCOztXQUVHO1FBQ0ksaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBRTFDOztXQUVHO1FBQ0ksZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBRXpDOzs7O1dBSUc7UUFFSSxhQUFRLEdBQVcsWUFBWSxDQUFDO1FBc092Qzs7V0FFRztRQUNjLG9CQUFlLEdB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QUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXJTaUIsZ0JBQWdCO21HQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTO2lJQWdEQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFtQmpDLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQTRCSyxVQUFVO3NCQURwQixLQUFLO2dCQVNLLE9BQU87c0JBRGpCLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW51bXMnO1xuaW1wb3J0IHsgUG9wVXBIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9wdXBoZWxwZXInO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRvb2x0aXAgQ29tcG9uZW50XG4gKlxuICogUmVxdWlyZXMgdGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBpbiB0aGUgSFRNTCBtYXJrdXBcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxuICogLSB0b29sdGlwOiBDb250YWluZXIgZm9yIHRvb2x0aXBcbiAqXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxuICogdGhlIHRvb2x0aXAgY2FuIHRoZW4gYmUgZGlzcGxheWVkIHZpYSB0aGUgQ1NTIHZpc2liaWxpdHkuIElmIHRoaXMgaXMgbm90IGRvbmUsIGl0IGNhbiBsZWFkIHRvIGEgZmxpY2tlcmluZyBlZmZlY3QgaW4gY2VydGFpbiBicm93c2Vycy5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1Rvb2x0aXBDb21tb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgRG9DaGVjayB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbmxpbmVtb2RlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHZpc2libGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gZGVzIFRvb2x0aXBzIGxpbmtzXG4gICAgICovXG4gICAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBUb3BQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0fGF1dG8nO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgVG9vbFRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBLb25zdHJ1a3RvclxuICAgICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXAuIFNldHMgdGhlIGRpc3BsYXkgbW9kZSBvbiB0aGUgd3JhcHBlciBlbGVtZW50IHRvIGBpbmxpbmVgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlubGluZW1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faW5saW5lbW9kZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lciA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXG4gICAgICovXG4gICAgcHVibGljIElzVG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVjdCBDaGFuZ2VzIGFmdGVyIHZpZXcgY2hlY2tlZC4gUHJldmVudCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIGVycm9yXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgVUkgQ2hhbmdlcyB0byBDYWxjdWxhdGUgVG9vbHRpcCBjb3JyZWN0XG4gICAgICovXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VG9vbHRpcE9mZnNldCgpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLnJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLkxlZnRQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0IHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5Ub3BQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gfHwgcmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMWNkd3dmMG9hdCIsImFjdHVhbENvdmVyYWdlIiwiY29udmVydFRvQm9vbGVhbiIsIlRvb2x0aXBQb3NpdGlvbiIsIlBvcFVwSGVscGVyIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJTYWNUb29sdGlwQ29tbW9uIiwiY29uc3RydWN0b3IiLCJjZFJlZiIsInJlZiIsImYiLCJzIiwicG9wdXBIZWxwZXIiLCJfaXNUb29sdGlwVmlzaWJsZSIsIklzVG9vbHRpcENvbnRlbnRWaXNpYmxlIiwiTGVmdFBvcyIsIlRvcFBvcyIsInBvc0Fycm93TGVmdCIsInBvc0Fycm93VG9wIiwicG9zaXRpb24iLCJvbkNvbnRlbnRDaGFuZ2UiLCJiIiwic2V0VGltZW91dCIsImdldExlZnRQb3NpdGlvbiIsImdldFRvcFBvc2l0aW9uIiwiaW5saW5lbW9kZSIsIl9pbmxpbmVtb2RlIiwidmFsdWUiLCJ0b29sdGlwIiwiY29udGVudCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInRvb2x0aXBjb250YWluZXIiLCJkZXRlY3RDaGFuZ2VzIiwidG9vbHRvcCIsIkdldFRvb2x0aXBQb3NpdGlvbiIsImdldERpc3BsYXlQb3NpdGlvbiIsImdldFRvb2x0aXBPZmZzZXQiLCJIaWRlVG9vbHRpcCIsIklzVG9vbHRpcFZpc2libGUiLCJTaG93VG9vbHRpcCIsImdldFRvb2xUaXBIZWlnaHQiLCJnZXRQb3B1cEhlaWdodCIsImdldFRvb2xUaXBXaWR0aCIsImdldFBvcHVwV2lkdGgiLCJuZ0FmdGVyVmlld0NoZWNrZWQiLCJuZ0RvQ2hlY2siLCJuZ09uRGVzdHJveSIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVDaGlsZCIsIm5nT25Jbml0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImdldFBvc2l0aW9uTGVmdCIsInJlcXVpcmVkUG9zaXRpb24iLCJsZWZ0IiwicmlnaHQiLCJnZXRQb3NpdGlvblRvcCIsImJvdHRvbSIsInRvcCIsImRlcHMiLCJ0b2tlbiIsImkwIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJFbGVtZW50UmVmIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJ0b29sdGlwdGV4dCIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudW1zJztcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUb29sdGlwIENvbXBvbmVudFxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXG4gKiAtIGNvbnRhaW5lcjogQ29udGFpbmVyIGZvciBuZy1jb250ZW50IGluIHdoaWNoIHRoZSBlbGVtZW50IGlzIGRpc3BsYXllZCB3aGVyZSB0aGUgdG9vbHRpcCBpcyBhdHRhY2hlZC5cbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXG4gKlxuICogVG9vbHRpcCBtdXN0IGJlIGRpc3BsYXllZCBpbiAyIHN0ZXBzLiBJbiBhIGZpcnN0IHN0ZXAgdGhlIHRvb2x0aXAgbWFya3VwIGlzIGNyZWF0ZWQgd2l0aCAobmdJZikuIEluIGEgMm5kIHN0ZXBcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcCBvbiBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNUb29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xuICAgICAqL1xuICAgIHB1YmxpYyBMZWZ0UG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gcmVmIEVsZW1lbnQgUmVmZXJlbnpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwLiBTZXRzIHRoZSBkaXNwbGF5IG1vZGUgb24gdGhlIHdyYXBwZXIgZWxlbWVudCB0byBgaW5saW5lYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0VG9vbHRpcFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgdG9vbHRpcHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMucmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuVG9wUG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tIHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IncrdkJBeUJHO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXpCSCxPQUFTRSxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDQUN2RCxPQUFTQyxXQUFXLEtBQVEsNkJBQTZCLENBQ3pELE9BR0lDLFNBQVMsQ0FHVEMsS0FBSyxDQUdMQyxTQUFTLEtBQ04sZUFBZSxDLGlDQUV0Qjs7Ozs7Ozs7OztHQVdBLEtBQ3NCLENBQUFDLGdCQUFnQixDQXlFbEM7QUFFQTtBQUVBOzs7T0FJQUMsWUFBNkJDLEtBQXdCLENBQW1CQyxHQUFlLEVBQUFYLGNBQUEsR0FBQVksQ0FBQSxNQUFBWixjQUFBLEdBQUFhLENBQUEsTUFBMUQsS0FBQUgsS0FBSyxDQUFMQSxLQUFLLENBQW1CVixjQUFBLEdBQUFhLENBQUEsTUFBbUIsS0FBQUYsR0FBRyxDQUFIQSxHQUFHLENBaEYzRTtBQUVBOztXQUFBWCxjQUFBLEdBQUFhLENBQUEsTUFHaUIsS0FBQUMsV0FBVyxDQUFnQixHQUFJLENBQUFWLFdB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