@simpleangularcontrols/sac-common 13.0.0-rc.21 → 13.0.0-rc.22

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 (403) hide show
  1. package/common/basedatetimecontrol.d.ts +45 -18
  2. package/common/basedatetimecontrol.d.ts.map +1 -1
  3. package/common/baseinputcontrol.d.ts +10 -8
  4. package/common/baseinputcontrol.d.ts.map +1 -1
  5. package/common/baselistcontrol.d.ts +16 -16
  6. package/common/baselistcontrol.d.ts.map +1 -1
  7. package/common/basemodelcontrol.d.ts +60 -44
  8. package/common/basemodelcontrol.d.ts.map +1 -1
  9. package/common/baseselectcontrol.d.ts +6 -6
  10. package/common/baseselectcontrol.d.ts.map +1 -1
  11. package/common/baseuploadcontrol.d.ts +78 -58
  12. package/common/baseuploadcontrol.d.ts.map +1 -1
  13. package/components/browser/browser.d.ts +86 -89
  14. package/components/browser/browser.d.ts.map +1 -1
  15. package/components/browser/models/browserfile.d.ts +6 -6
  16. package/components/browser/models/browserfile.d.ts.map +1 -1
  17. package/components/browser/models/browserfiledeleterequest.d.ts +7 -7
  18. package/components/browser/models/browserfiledeleterequest.d.ts.map +1 -1
  19. package/components/browser/models/browserfilerenamerequest.d.ts +10 -10
  20. package/components/browser/models/browserfilerenamerequest.d.ts.map +1 -1
  21. package/components/browser/models/browserfileresponse.d.ts +2 -2
  22. package/components/browser/models/browserfileresponse.d.ts.map +1 -1
  23. package/components/browser/models/browserfilesaverequest.d.ts +7 -7
  24. package/components/browser/models/browserfilesaverequest.d.ts.map +1 -1
  25. package/components/browser/models/browsernode.d.ts +13 -13
  26. package/components/browser/models/browsernode.d.ts.map +1 -1
  27. package/components/browser/models/browsernodedeleterequest.d.ts +6 -6
  28. package/components/browser/models/browsernodedeleterequest.d.ts.map +1 -1
  29. package/components/browser/models/browsernodenewrequest.d.ts +7 -7
  30. package/components/browser/models/browsernodenewrequest.d.ts.map +1 -1
  31. package/components/browser/models/browsernoderenamerequest.d.ts +7 -7
  32. package/components/browser/models/browsernoderenamerequest.d.ts.map +1 -1
  33. package/components/browser/models/browsernoderequest.d.ts +7 -7
  34. package/components/browser/models/browsernoderequest.d.ts.map +1 -1
  35. package/components/browser/models/browsernoderesponse.d.ts +1 -1
  36. package/components/browser/models/browsernoderesponse.d.ts.map +1 -1
  37. package/controls/buttons/button.d.ts +25 -19
  38. package/controls/buttons/button.d.ts.map +1 -1
  39. package/controls/checkbox/checkbox.d.ts +3 -3
  40. package/controls/checkbox/checkbox.d.ts.map +1 -1
  41. package/controls/checkbox/radiobutton.d.ts +19 -13
  42. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  43. package/controls/checkbox/radiobuttons.d.ts +13 -10
  44. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  45. package/controls/confirm/confirm.button.d.ts +3 -3
  46. package/controls/confirm/confirm.button.d.ts.map +1 -1
  47. package/controls/confirm/confirm.d.ts +13 -12
  48. package/controls/confirm/confirm.d.ts.map +1 -1
  49. package/controls/confirm/confirm.service.d.ts +14 -14
  50. package/controls/confirm/confirm.service.d.ts.map +1 -1
  51. package/controls/contextmenu/contextmenu.d.ts +33 -27
  52. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  53. package/controls/contextmenu/contextmenu.interface.d.ts +6 -0
  54. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -1
  55. package/controls/contextmenu/contextmenuanchor.d.ts +4 -4
  56. package/controls/contextmenu/contextmenucontainer.d.ts +4 -4
  57. package/controls/contextmenu/contextmenuitembutton.d.ts +12 -12
  58. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  59. package/controls/datetime/date.d.ts +11 -11
  60. package/controls/datetime/date.d.ts.map +1 -1
  61. package/controls/datetime/dateselector.d.ts +47 -40
  62. package/controls/datetime/dateselector.d.ts.map +1 -1
  63. package/controls/datetime/datetime.d.ts +15 -14
  64. package/controls/datetime/datetime.d.ts.map +1 -1
  65. package/controls/datetime/time.d.ts +22 -12
  66. package/controls/datetime/time.d.ts.map +1 -1
  67. package/controls/dialog/dialog.d.ts +29 -23
  68. package/controls/dialog/dialog.d.ts.map +1 -1
  69. package/controls/form/form.d.ts +17 -12
  70. package/controls/form/form.d.ts.map +1 -1
  71. package/controls/grid/grid.d.ts +1 -0
  72. package/controls/grid/grid.d.ts.map +1 -1
  73. package/controls/grid/gridbutton.d.ts +1 -0
  74. package/controls/grid/gridbutton.d.ts.map +1 -1
  75. package/controls/grid/gridcolumn.d.ts +5 -1
  76. package/controls/grid/gridcolumn.d.ts.map +1 -1
  77. package/controls/grid/gridcolumnaction.d.ts +1 -1
  78. package/controls/grid/gridcolumnbase.d.ts +8 -3
  79. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  80. package/controls/grid/model.d.ts +5 -2
  81. package/controls/grid/model.d.ts.map +1 -1
  82. package/controls/grid/model.ngfactory.d.ts +3 -0
  83. package/controls/grid/model.ngfactory.d.ts.map +1 -1
  84. package/controls/grid/paging.d.ts +2 -3
  85. package/controls/grid/paging.d.ts.map +1 -1
  86. package/controls/input/input.d.ts +7 -7
  87. package/controls/input/inputarea.d.ts +8 -6
  88. package/controls/input/inputarea.d.ts.map +1 -1
  89. package/controls/input/inputcurrency.d.ts +4 -1
  90. package/controls/input/inputcurrency.d.ts.map +1 -1
  91. package/controls/input/inputdecimal.d.ts +14 -14
  92. package/controls/input/inputdecimal.d.ts.map +1 -1
  93. package/controls/input/inputemail.d.ts +4 -4
  94. package/controls/input/inputinteger.d.ts +14 -14
  95. package/controls/input/inputinteger.d.ts.map +1 -1
  96. package/controls/input/inputpassword.d.ts +3 -3
  97. package/controls/input/inputpassword.d.ts.map +1 -1
  98. package/controls/input/inputsearch.d.ts +8 -5
  99. package/controls/input/inputsearch.d.ts.map +1 -1
  100. package/controls/layout/formlayout.d.ts +9 -6
  101. package/controls/layout/formlayout.d.ts.map +1 -1
  102. package/controls/list/buildvaluestring.d.ts +2 -2
  103. package/controls/list/dropdown.d.ts +23 -22
  104. package/controls/list/dropdown.d.ts.map +1 -1
  105. package/controls/list/dropdownoptions.d.ts +10 -10
  106. package/controls/list/dropdownoptions.d.ts.map +1 -1
  107. package/controls/list/listbox.d.ts +25 -23
  108. package/controls/list/listbox.d.ts.map +1 -1
  109. package/controls/multilanguage/multilanguageinput.d.ts +25 -25
  110. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  111. package/controls/multilanguage/multilanguageinputarea.d.ts +27 -27
  112. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  113. package/controls/static/formcontainer.d.ts +8 -8
  114. package/controls/static/formcontainer.d.ts.map +1 -1
  115. package/controls/static/staticlabel.d.ts +5 -5
  116. package/controls/static/staticlabel.d.ts.map +1 -1
  117. package/controls/tabs/tab.d.ts +2 -2
  118. package/controls/tabs/tabitem.d.ts +7 -7
  119. package/controls/tabs/tabitem.d.ts.map +1 -1
  120. package/controls/tinymce/tinymce.d.ts +37 -37
  121. package/controls/tinymce/tinymce.d.ts.map +1 -1
  122. package/controls/tinymce/tinymcedialogsettings.d.ts +6 -6
  123. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +2 -2
  124. package/controls/tinymce/tinymceinstance.d.ts +2 -2
  125. package/controls/tooltip/tooltip.d.ts +10 -5
  126. package/controls/tooltip/tooltip.d.ts.map +1 -1
  127. package/controls/treeview/treeview.d.ts +50 -5
  128. package/controls/treeview/treeview.d.ts.map +1 -1
  129. package/controls/upload/dropzonemultiple.d.ts +16 -16
  130. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  131. package/controls/upload/dropzonesingle.d.ts +11 -11
  132. package/controls/upload/uploadmultiple.d.ts +12 -12
  133. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  134. package/controls/upload/uploadsingle.d.ts +7 -7
  135. package/controls/upload/uploadsingle.d.ts.map +1 -1
  136. package/controls/validation/validationsummary.d.ts +12 -11
  137. package/controls/validation/validationsummary.d.ts.map +1 -1
  138. package/controls/wizard/wizard.d.ts +25 -18
  139. package/controls/wizard/wizard.d.ts.map +1 -1
  140. package/controls/wizard/wizarditem.d.ts +5 -5
  141. package/controls/wizard/wizarditem.d.ts.map +1 -1
  142. package/enums/ButtonRoleType.d.ts +26 -1
  143. package/enums/ButtonRoleType.d.ts.map +1 -1
  144. package/enums/ControlHeight.d.ts +1 -1
  145. package/enums/ControlHeight.d.ts.map +1 -1
  146. package/enums/IconType.d.ts +1 -1
  147. package/enums/IconType.d.ts.map +1 -1
  148. package/esm2020/common/basedatetimecontrol.mjs +58 -37
  149. package/esm2020/common/baseinputcontrol.mjs +15 -13
  150. package/esm2020/common/baselistcontrol.mjs +19 -17
  151. package/esm2020/common/basemodelcontrol.mjs +81 -70
  152. package/esm2020/common/baseselectcontrol.mjs +10 -9
  153. package/esm2020/common/baseuploadcontrol.mjs +72 -56
  154. package/esm2020/components/browser/browser.mjs +87 -89
  155. package/esm2020/components/browser/models/browserfile.mjs +3 -3
  156. package/esm2020/components/browser/models/browserfiledeleterequest.mjs +9 -7
  157. package/esm2020/components/browser/models/browserfilerenamerequest.mjs +9 -7
  158. package/esm2020/components/browser/models/browserfileresponse.mjs +3 -3
  159. package/esm2020/components/browser/models/browserfilesaverequest.mjs +8 -6
  160. package/esm2020/components/browser/models/browsernode.mjs +3 -3
  161. package/esm2020/components/browser/models/browsernodedeleterequest.mjs +9 -7
  162. package/esm2020/components/browser/models/browsernodenewrequest.mjs +9 -7
  163. package/esm2020/components/browser/models/browsernoderenamerequest.mjs +9 -7
  164. package/esm2020/components/browser/models/browsernoderequest.mjs +9 -7
  165. package/esm2020/components/browser/models/browsernoderesponse.mjs +3 -3
  166. package/esm2020/controls/buttons/button.mjs +28 -24
  167. package/esm2020/controls/checkbox/checkbox.mjs +5 -5
  168. package/esm2020/controls/checkbox/radiobutton.mjs +22 -17
  169. package/esm2020/controls/checkbox/radiobuttons.mjs +16 -13
  170. package/esm2020/controls/confirm/confirm.button.mjs +6 -6
  171. package/esm2020/controls/confirm/confirm.mjs +16 -15
  172. package/esm2020/controls/confirm/confirm.service.mjs +23 -23
  173. package/esm2020/controls/contextmenu/contextmenu.interface.mjs +3 -3
  174. package/esm2020/controls/contextmenu/contextmenu.mjs +31 -26
  175. package/esm2020/controls/contextmenu/contextmenuanchor.mjs +6 -6
  176. package/esm2020/controls/contextmenu/contextmenucontainer.mjs +6 -6
  177. package/esm2020/controls/contextmenu/contextmenuitembutton.mjs +12 -12
  178. package/esm2020/controls/datetime/date.mjs +15 -15
  179. package/esm2020/controls/datetime/dateselector.mjs +94 -93
  180. package/esm2020/controls/datetime/datetime.mjs +19 -18
  181. package/esm2020/controls/datetime/time.mjs +26 -16
  182. package/esm2020/controls/dialog/dialog.mjs +40 -36
  183. package/esm2020/controls/form/form.mjs +20 -16
  184. package/esm2020/controls/grid/grid.mjs +4 -3
  185. package/esm2020/controls/grid/gridbutton.mjs +4 -3
  186. package/esm2020/controls/grid/gridcolumn.mjs +8 -4
  187. package/esm2020/controls/grid/gridcolumnaction.mjs +4 -4
  188. package/esm2020/controls/grid/gridcolumnbase.mjs +11 -6
  189. package/esm2020/controls/grid/model.mjs +9 -7
  190. package/esm2020/controls/grid/model.ngfactory.mjs +5 -3
  191. package/esm2020/controls/grid/paging.mjs +8 -9
  192. package/esm2020/controls/input/input.mjs +10 -10
  193. package/esm2020/controls/input/inputarea.mjs +11 -9
  194. package/esm2020/controls/input/inputcurrency.mjs +8 -6
  195. package/esm2020/controls/input/inputdecimal.mjs +20 -20
  196. package/esm2020/controls/input/inputemail.mjs +7 -7
  197. package/esm2020/controls/input/inputinteger.mjs +19 -19
  198. package/esm2020/controls/input/inputpassword.mjs +6 -6
  199. package/esm2020/controls/input/inputsearch.mjs +11 -9
  200. package/esm2020/controls/layout/formlayout.mjs +11 -8
  201. package/esm2020/controls/list/buildvaluestring.mjs +8 -8
  202. package/esm2020/controls/list/dropdown.mjs +30 -29
  203. package/esm2020/controls/list/dropdownoptions.mjs +14 -14
  204. package/esm2020/controls/list/listbox.mjs +28 -26
  205. package/esm2020/controls/multilanguage/multilanguageinput.mjs +31 -31
  206. package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +33 -33
  207. package/esm2020/controls/static/formcontainer.mjs +12 -12
  208. package/esm2020/controls/static/staticlabel.mjs +9 -9
  209. package/esm2020/controls/tabs/tab.mjs +4 -4
  210. package/esm2020/controls/tabs/tabitem.mjs +7 -7
  211. package/esm2020/controls/tinymce/tinymce.mjs +37 -37
  212. package/esm2020/controls/tinymce/tinymcedialogsettings.mjs +6 -6
  213. package/esm2020/controls/tinymce/tinymcedialogsettingsmeta.mjs +3 -3
  214. package/esm2020/controls/tinymce/tinymceinstance.mjs +3 -3
  215. package/esm2020/controls/tooltip/tooltip.mjs +15 -10
  216. package/esm2020/controls/treeview/treeview.mjs +46 -10
  217. package/esm2020/controls/upload/dropzonemultiple.mjs +20 -20
  218. package/esm2020/controls/upload/dropzonesingle.mjs +14 -14
  219. package/esm2020/controls/upload/uploadmultiple.mjs +16 -16
  220. package/esm2020/controls/upload/uploadsingle.mjs +10 -10
  221. package/esm2020/controls/validation/validationsummary.mjs +16 -15
  222. package/esm2020/controls/wizard/wizard.mjs +25 -19
  223. package/esm2020/controls/wizard/wizarditem.mjs +6 -6
  224. package/esm2020/enums/ButtonRoleType.mjs +3 -3
  225. package/esm2020/enums/ControlHeight.mjs +4 -4
  226. package/esm2020/enums/IconType.mjs +4 -4
  227. package/esm2020/interfaces/ISacConfigurationService.mjs +3 -3
  228. package/esm2020/interfaces/ISacFileBrowserService.mjs +3 -3
  229. package/esm2020/interfaces/ISacIconService.mjs +3 -3
  230. package/esm2020/interfaces/ISacLabelSizes.mjs +3 -3
  231. package/esm2020/interfaces/ISacLanguageService.mjs +3 -3
  232. package/esm2020/interfaces/ISacLocalisationService.mjs +3 -3
  233. package/esm2020/interfaces/ISacUploadEventCompleteState.mjs +3 -3
  234. package/esm2020/interfaces/ISacValidationKeyService.mjs +3 -3
  235. package/esm2020/interfaces/iabstractcontrollabel.mjs +3 -3
  236. package/esm2020/interfaces/iconfirmcomponent.mjs +3 -3
  237. package/esm2020/interfaces/idatetimecontrol.mjs +3 -3
  238. package/esm2020/interfaces/iuploadcontrol.mjs +3 -3
  239. package/esm2020/interfaces/treeviewaction.interface.mjs +3 -3
  240. package/esm2020/models/languagemodel.mjs +8 -6
  241. package/esm2020/public_api.mjs +4 -4
  242. package/esm2020/services/index.mjs +3 -3
  243. package/esm2020/services/sac-configuration.service.mjs +11 -9
  244. package/esm2020/services/sac-filebrowser.service.mjs +65 -51
  245. package/esm2020/services/sac-language.service.mjs +10 -6
  246. package/esm2020/services/sac-localisation.service.mjs +13 -9
  247. package/esm2020/services/sac-validationkey.service.mjs +108 -6
  248. package/esm2020/utilities/convertion.mjs +10 -8
  249. package/esm2020/utilities/datatypes.mjs +8 -6
  250. package/esm2020/utilities/enums.mjs +4 -10
  251. package/esm2020/utilities/guid.mjs +8 -8
  252. package/esm2020/utilities/interpolation.mjs +21 -14
  253. package/esm2020/utilities/popuphelper.mjs +52 -32
  254. package/esm2020/utilities/positioncalculator.mjs +61 -0
  255. package/esm2020/utilities/positioncalculator.ngfactory.mjs +3 -0
  256. package/esm2020/utilities/positioncalculator.ngsummary.mjs +3 -0
  257. package/esm2020/utilities/positionelements.mjs +32 -0
  258. package/esm2020/utilities/positionelements.ngfactory.mjs +3 -0
  259. package/esm2020/utilities/positionelements.ngsummary.mjs +3 -0
  260. package/esm2020/utilities/testingattribute.pipe.mjs +19 -6
  261. package/esm2020/validation/email.validator.mjs +11 -3
  262. package/esm2020/validation/equals.validator.mjs +12 -3
  263. package/esm2020/validation/index.mjs +3 -3
  264. package/esm2020/validation/invaliddate.validator.mjs +11 -3
  265. package/esm2020/validation/isDateValid.mjs +12 -10
  266. package/esm2020/validation/maxdate.validator.mjs +13 -4
  267. package/esm2020/validation/maxtime.validator.mjs +13 -4
  268. package/esm2020/validation/maxvalue.validator.mjs +12 -3
  269. package/esm2020/validation/mindate.validator.mjs +13 -4
  270. package/esm2020/validation/minfiles.validator.mjs +13 -4
  271. package/esm2020/validation/mintextlength.validator.mjs +11 -4
  272. package/esm2020/validation/mintime.validator.mjs +13 -4
  273. package/esm2020/validation/minvalue.validator.mjs +12 -3
  274. package/esm2020/validation/multilanguagerequired.validator.mjs +12 -3
  275. package/esm2020/validation/multilanguagerequiredany.validator.mjs +12 -3
  276. package/esm2020/validation/notequals.validator.mjs +12 -3
  277. package/esm2020/validation/pattern.validator.mjs +12 -3
  278. package/esm2020/validation/required.validator.mjs +11 -3
  279. package/esm2020/validation/validation.mjs +86 -102
  280. package/esm2020/validation/validationerrorcreator.mjs +13 -3
  281. package/esm2020/validation/validationerroritem.mjs +14 -12
  282. package/fesm2015/simpleangularcontrols-sac-common.mjs +2661 -2151
  283. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  284. package/fesm2020/simpleangularcontrols-sac-common.mjs +2661 -2151
  285. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  286. package/interfaces/ISacConfigurationService.d.ts +9 -1
  287. package/interfaces/ISacConfigurationService.d.ts.map +1 -1
  288. package/interfaces/ISacFileBrowserService.d.ts +43 -43
  289. package/interfaces/ISacFileBrowserService.d.ts.map +1 -1
  290. package/interfaces/ISacIconService.d.ts +28 -28
  291. package/interfaces/ISacIconService.d.ts.map +1 -1
  292. package/interfaces/ISacLabelSizes.d.ts +9 -6
  293. package/interfaces/ISacLabelSizes.d.ts.map +1 -1
  294. package/interfaces/ISacLanguageService.d.ts +3 -3
  295. package/interfaces/ISacLanguageService.d.ts.map +1 -1
  296. package/interfaces/ISacLocalisationService.d.ts +2 -2
  297. package/interfaces/ISacLocalisationService.d.ts.map +1 -1
  298. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  299. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -1
  300. package/interfaces/iabstractcontrollabel.d.ts +4 -1
  301. package/interfaces/iabstractcontrollabel.d.ts.map +1 -1
  302. package/interfaces/iconfirmcomponent.d.ts +6 -6
  303. package/interfaces/iconfirmcomponent.d.ts.map +1 -1
  304. package/interfaces/idatetimecontrol.d.ts +10 -1
  305. package/interfaces/idatetimecontrol.d.ts.map +1 -1
  306. package/interfaces/iuploadcontrol.d.ts.map +1 -1
  307. package/interfaces/treeviewaction.interface.d.ts +9 -0
  308. package/interfaces/treeviewaction.interface.d.ts.map +1 -1
  309. package/models/languagemodel.d.ts +9 -9
  310. package/models/languagemodel.d.ts.map +1 -1
  311. package/package.json +1 -1
  312. package/public_api.d.ts +2 -1
  313. package/public_api.d.ts.map +1 -1
  314. package/services/index.d.ts +3 -3
  315. package/services/index.d.ts.map +1 -1
  316. package/services/sac-configuration.service.d.ts +8 -0
  317. package/services/sac-configuration.service.d.ts.map +1 -1
  318. package/services/sac-filebrowser.service.d.ts +97 -89
  319. package/services/sac-filebrowser.service.d.ts.map +1 -1
  320. package/services/sac-language.service.d.ts +2 -2
  321. package/services/sac-language.service.d.ts.map +1 -1
  322. package/services/sac-localisation.service.d.ts +11 -7
  323. package/services/sac-localisation.service.d.ts.map +1 -1
  324. package/services/sac-validationkey.service.d.ts +152 -5
  325. package/services/sac-validationkey.service.d.ts.map +1 -1
  326. package/simpleangularcontrols-sac-common-13.0.0-rc.22.tgz +0 -0
  327. package/utilities/convertion.d.ts +4 -4
  328. package/utilities/convertion.d.ts.map +1 -1
  329. package/utilities/datatypes.d.ts +3 -3
  330. package/utilities/datatypes.d.ts.map +1 -1
  331. package/utilities/enums.d.ts +8 -1
  332. package/utilities/enums.d.ts.map +1 -1
  333. package/utilities/guid.d.ts +1 -1
  334. package/utilities/guid.d.ts.map +1 -1
  335. package/utilities/interpolation.d.ts +9 -8
  336. package/utilities/interpolation.d.ts.map +1 -1
  337. package/utilities/popuphelper.d.ts +47 -10
  338. package/utilities/popuphelper.d.ts.map +1 -1
  339. package/utilities/positioncalculator.d.ts +83 -0
  340. package/utilities/positioncalculator.d.ts.map +1 -0
  341. package/utilities/positioncalculator.ngfactory.d.ts +2 -0
  342. package/utilities/positioncalculator.ngfactory.d.ts.map +1 -0
  343. package/utilities/positioncalculator.ngsummary.d.ts +2 -0
  344. package/utilities/positioncalculator.ngsummary.d.ts.map +1 -0
  345. package/utilities/positionelements.d.ts +31 -0
  346. package/utilities/positionelements.d.ts.map +1 -0
  347. package/utilities/positionelements.ngfactory.d.ts +2 -0
  348. package/utilities/positionelements.ngfactory.d.ts.map +1 -0
  349. package/utilities/positionelements.ngsummary.d.ts +2 -0
  350. package/utilities/positionelements.ngsummary.d.ts.map +1 -0
  351. package/utilities/testingattribute.pipe.d.ts +16 -1
  352. package/utilities/testingattribute.pipe.d.ts.map +1 -1
  353. package/validation/email.validator.d.ts +7 -0
  354. package/validation/email.validator.d.ts.map +1 -1
  355. package/validation/equals.validator.d.ts +8 -0
  356. package/validation/equals.validator.d.ts.map +1 -1
  357. package/validation/index.d.ts.map +1 -1
  358. package/validation/invaliddate.validator.d.ts +7 -0
  359. package/validation/invaliddate.validator.d.ts.map +1 -1
  360. package/validation/isDateValid.d.ts +5 -2
  361. package/validation/isDateValid.d.ts.map +1 -1
  362. package/validation/maxdate.validator.d.ts +8 -0
  363. package/validation/maxdate.validator.d.ts.map +1 -1
  364. package/validation/maxtime.validator.d.ts +8 -0
  365. package/validation/maxtime.validator.d.ts.map +1 -1
  366. package/validation/maxvalue.validator.d.ts +8 -0
  367. package/validation/maxvalue.validator.d.ts.map +1 -1
  368. package/validation/mindate.validator.d.ts +8 -0
  369. package/validation/mindate.validator.d.ts.map +1 -1
  370. package/validation/minfiles.validator.d.ts +8 -0
  371. package/validation/minfiles.validator.d.ts.map +1 -1
  372. package/validation/mintextlength.validator.d.ts +8 -0
  373. package/validation/mintextlength.validator.d.ts.map +1 -1
  374. package/validation/mintime.validator.d.ts +8 -0
  375. package/validation/mintime.validator.d.ts.map +1 -1
  376. package/validation/minvalue.validator.d.ts +8 -0
  377. package/validation/minvalue.validator.d.ts.map +1 -1
  378. package/validation/multilanguagerequired.validator.d.ts +9 -1
  379. package/validation/multilanguagerequired.validator.d.ts.map +1 -1
  380. package/validation/multilanguagerequiredany.validator.d.ts +9 -1
  381. package/validation/multilanguagerequiredany.validator.d.ts.map +1 -1
  382. package/validation/notequals.validator.d.ts +8 -0
  383. package/validation/notequals.validator.d.ts.map +1 -1
  384. package/validation/pattern.validator.d.ts +8 -0
  385. package/validation/pattern.validator.d.ts.map +1 -1
  386. package/validation/required.validator.d.ts +7 -0
  387. package/validation/required.validator.d.ts.map +1 -1
  388. package/validation/validation.d.ts +83 -99
  389. package/validation/validation.d.ts.map +1 -1
  390. package/validation/validationerrorcreator.d.ts +9 -0
  391. package/validation/validationerrorcreator.d.ts.map +1 -1
  392. package/validation/validationerroritem.d.ts +16 -16
  393. package/validation/validationerroritem.d.ts.map +1 -1
  394. package/esm2020/utilities/positioning.mjs +0 -58
  395. package/esm2020/utilities/positioning.ngfactory.mjs +0 -3
  396. package/esm2020/utilities/positioning.ngsummary.mjs +0 -3
  397. package/simpleangularcontrols-sac-common-13.0.0-rc.21.tgz +0 -0
  398. package/utilities/positioning.d.ts +0 -83
  399. package/utilities/positioning.d.ts.map +0 -1
  400. package/utilities/positioning.ngfactory.d.ts +0 -2
  401. package/utilities/positioning.ngfactory.d.ts.map +0 -1
  402. package/utilities/positioning.ngsummary.d.ts +0 -2
  403. package/utilities/positioning.ngsummary.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
- function cov_2icfa0wtpo(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/common/baseuploadcontrol.mjs";var hash="747dba4fb9046389407e040dff9c8828d49b109f";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/common/baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:32,column:8},end:{line:32,column:33}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:33}},"6":{start:{line:44,column:8},end:{line:44,column:30}},"7":{start:{line:48,column:8},end:{line:48,column:27}},"8":{start:{line:52,column:8},end:{line:52,column:26}},"9":{start:{line:56,column:8},end:{line:73,column:10}},"10":{start:{line:58,column:12},end:{line:60,column:13}},"11":{start:{line:59,column:16},end:{line:59,column:23}},"12":{start:{line:61,column:12},end:{line:71,column:13}},"13":{start:{line:62,column:33},end:{line:62,column:78}},"14":{start:{line:63,column:38},end:{line:63,column:92}},"15":{start:{line:64,column:16},end:{line:70,column:17}},"16":{start:{line:65,column:41},end:{line:65,column:59}},"17":{start:{line:66,column:34},end:{line:66,column:153}},"18":{start:{line:68,column:20},end:{line:68,column:74}},"19":{start:{line:68,column:44},end:{line:68,column:72}},"20":{start:{line:69,column:20},end:{line:69,column:78}},"21":{start:{line:72,column:12},end:{line:72,column:81}},"22":{start:{line:77,column:8},end:{line:77,column:32}},"23":{start:{line:81,column:8},end:{line:81,column:29}},"24":{start:{line:85,column:8},end:{line:85,column:46}},"25":{start:{line:89,column:8},end:{line:89,column:51}},"26":{start:{line:93,column:8},end:{line:93,column:91}},"27":{start:{line:97,column:8},end:{line:97,column:105}},"28":{start:{line:98,column:8},end:{line:98,column:113}},"29":{start:{line:99,column:8},end:{line:99,column:134}},"30":{start:{line:100,column:8},end:{line:100,column:26}},"31":{start:{line:101,column:8},end:{line:101,column:40}},"32":{start:{line:102,column:8},end:{line:102,column:37}},"33":{start:{line:103,column:8},end:{line:103,column:41}},"34":{start:{line:104,column:8},end:{line:104,column:51}},"35":{start:{line:105,column:8},end:{line:105,column:44}},"36":{start:{line:106,column:8},end:{line:106,column:47}},"37":{start:{line:107,column:8},end:{line:109,column:11}},"38":{start:{line:107,column:39},end:{line:109,column:9}},"39":{start:{line:111,column:8},end:{line:111,column:190}},"40":{start:{line:112,column:8},end:{line:112,column:46}},"41":{start:{line:114,column:8},end:{line:114,column:77}},"42":{start:{line:114,column:55},end:{line:114,column:75}},"43":{start:{line:122,column:8},end:{line:122,column:58}},"44":{start:{line:128,column:8},end:{line:128,column:60}},"45":{start:{line:134,column:8},end:{line:134,column:58}},"46":{start:{line:140,column:8},end:{line:140,column:57}},"47":{start:{line:146,column:8},end:{line:146,column:58}},"48":{start:{line:149,column:8},end:{line:149,column:34}},"49":{start:{line:155,column:8},end:{line:155,column:35}},"50":{start:{line:156,column:8},end:{line:156,column:36}},"51":{start:{line:159,column:8},end:{line:159,column:32}},"52":{start:{line:165,column:8},end:{line:165,column:29}},"53":{start:{line:166,column:8},end:{line:166,column:36}},"54":{start:{line:167,column:8},end:{line:167,column:49}},"55":{start:{line:170,column:8},end:{line:170,column:33}},"56":{start:{line:176,column:8},end:{line:176,column:30}},"57":{start:{line:179,column:8},end:{line:179,column:30}},"58":{start:{line:185,column:8},end:{line:185,column:27}},"59":{start:{line:186,column:8},end:{line:186,column:28}},"60":{start:{line:192,column:8},end:{line:192,column:27}},"61":{start:{line:198,column:8},end:{line:198,column:24}},"62":{start:{line:199,column:8},end:{line:199,column:25}},"63":{start:{line:206,column:8},end:{line:211,column:9}},"64":{start:{line:207,column:12},end:{line:207,column:44}},"65":{start:{line:210,column:12},end:{line:210,column:102}},"66":{start:{line:218,column:8},end:{line:218,column:39}},"67":{start:{line:225,column:8},end:{line:230,column:9}},"68":{start:{line:226,column:12},end:{line:226,column:88}},"69":{start:{line:226,column:48},end:{line:226,column:73}},"70":{start:{line:229,column:12},end:{line:229,column:25}},"71":{start:{line:237,column:8},end:{line:237,column:80}},"72":{start:{line:237,column:44},end:{line:237,column:67}},"73":{start:{line:244,column:8},end:{line:244,column:106}},"74":{start:{line:244,column:44},end:{line:244,column:93}},"75":{start:{line:251,column:8},end:{line:251,column:83}},"76":{start:{line:251,column:44},end:{line:251,column:70}},"77":{start:{line:258,column:8},end:{line:263,column:9}},"78":{start:{line:259,column:12},end:{line:259,column:44}},"79":{start:{line:262,column:12},end:{line:262,column:21}},"80":{start:{line:270,column:8},end:{line:270,column:77}},"81":{start:{line:276,column:8},end:{line:278,column:9}},"82":{start:{line:277,column:12},end:{line:277,column:61}},"83":{start:{line:284,column:8},end:{line:286,column:9}},"84":{start:{line:285,column:12},end:{line:285,column:30}},"85":{start:{line:292,column:8},end:{line:292,column:25}},"86":{start:{line:294,column:8},end:{line:294,column:108}},"87":{start:{line:295,column:8},end:{line:295,column:49}},"88":{start:{line:296,column:8},end:{line:296,column:41}},"89":{start:{line:297,column:8},end:{line:297,column:35}},"90":{start:{line:298,column:8},end:{line:300,column:9}},"91":{start:{line:299,column:12},end:{line:299,column:56}},"92":{start:{line:301,column:8},end:{line:301,column:49}},"93":{start:{line:309,column:22},end:{line:309,column:82}},"94":{start:{line:309,column:52},end:{line:309,column:81}},"95":{start:{line:310,column:8},end:{line:348,column:9}},"96":{start:{line:311,column:12},end:{line:324,column:13}},"97":{start:{line:314,column:16},end:{line:314,column:60}},"98":{start:{line:317,column:16},end:{line:317,column:44}},"99":{start:{line:318,column:16},end:{line:323,column:17}},"100":{start:{line:319,column:20},end:{line:319,column:63}},"101":{start:{line:321,column:21},end:{line:323,column:17}},"102":{start:{line:322,column:20},end:{line:322,column:62}},"103":{start:{line:326,column:13},end:{line:348,column:9}},"104":{start:{line:327,column:12},end:{line:329,column:13}},"105":{start:{line:328,column:16},end:{line:328,column:46}},"106":{start:{line:330,column:12},end:{line:330,column:38}},"107":{start:{line:332,column:13},end:{line:348,column:9}},"108":{start:{line:333,column:12},end:{line:333,column:58}},"109":{start:{line:334,column:12},end:{line:334,column:54}},"110":{start:{line:335,column:12},end:{line:335,column:39}},"111":{start:{line:336,column:32},end:{line:340,column:13}},"112":{start:{line:341,column:12},end:{line:341,column:52}},"113":{start:{line:344,column:12},end:{line:347,column:13}},"114":{start:{line:345,column:16},end:{line:345,column:62}},"115":{start:{line:346,column:16},end:{line:346,column:58}},"116":{start:{line:349,column:8},end:{line:349,column:31}},"117":{start:{line:356,column:8},end:{line:356,column:66}},"118":{start:{line:362,column:8},end:{line:364,column:9}},"119":{start:{line:363,column:12},end:{line:363,column:60}},"120":{start:{line:370,column:8},end:{line:370,column:35}},"121":{start:{line:378,column:8},end:{line:378,column:67}},"122":{start:{line:384,column:8},end:{line:386,column:9}},"123":{start:{line:385,column:12},end:{line:385,column:61}},"124":{start:{line:393,column:20},end:{line:393,column:24}},"125":{start:{line:394,column:8},end:{line:396,column:9}},"126":{start:{line:395,column:12},end:{line:395,column:114}},"127":{start:{line:397,column:8},end:{line:397,column:21}},"128":{start:{line:403,column:8},end:{line:405,column:9}},"129":{start:{line:404,column:12},end:{line:404,column:72}},"130":{start:{line:411,column:8},end:{line:411,column:78}},"131":{start:{line:411,column:44},end:{line:411,column:69}},"132":{start:{line:419,column:8},end:{line:421,column:9}},"133":{start:{line:420,column:12},end:{line:420,column:24}},"134":{start:{line:422,column:22},end:{line:422,column:27}},"135":{start:{line:423,column:27},end:{line:423,column:56}},"136":{start:{line:424,column:8},end:{line:428,column:11}},"137":{start:{line:425,column:12},end:{line:427,column:13}},"138":{start:{line:426,column:16},end:{line:426,column:31}},"139":{start:{line:429,column:8},end:{line:429,column:23}},"140":{start:{line:437,column:8},end:{line:439,column:9}},"141":{start:{line:438,column:12},end:{line:438,column:24}},"142":{start:{line:440,column:8},end:{line:440,column:44}},"143":{start:{line:449,column:8},end:{line:451,column:9}},"144":{start:{line:450,column:12},end:{line:450,column:88}},"145":{start:{line:452,column:8},end:{line:452,column:42}},"146":{start:{line:459,column:8},end:{line:459,column:36}},"147":{start:{line:462,column:0},end:{line:462,column:275}},"148":{start:{line:463,column:0},end:{line:463,column:657}},"149":{start:{line:464,column:0},end:{line:491,column:20}},"150":{start:{line:466,column:42},end:{line:466,column:152}},"151":{start:{line:503,column:8},end:{line:503,column:39}},"152":{start:{line:504,column:8},end:{line:504,column:31}},"153":{start:{line:505,column:8},end:{line:505,column:39}},"154":{start:{line:506,column:8},end:{line:506,column:35}},"155":{start:{line:507,column:8},end:{line:507,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:115,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:56,column:28},end:{line:56,column:29}},loc:{start:{line:56,column:34},end:{line:73,column:9}},line:56},"2":{name:"(anonymous_2)",decl:{start:{line:68,column:34},end:{line:68,column:35}},loc:{start:{line:68,column:44},end:{line:68,column:72}},line:68},"3":{name:"(anonymous_3)",decl:{start:{line:107,column:31},end:{line:107,column:32}},loc:{start:{line:107,column:39},end:{line:109,column:9}},line:107},"4":{name:"(anonymous_4)",decl:{start:{line:114,column:44},end:{line:114,column:45}},loc:{start:{line:114,column:55},end:{line:114,column:75}},line:114},"5":{name:"(anonymous_5)",decl:{start:{line:121,column:4},end:{line:121,column:5}},loc:{start:{line:121,column:21},end:{line:123,column:5}},line:121},"6":{name:"(anonymous_6)",decl:{start:{line:127,column:4},end:{line:127,column:5}},loc:{start:{line:127,column:23},end:{line:129,column:5}},line:127},"7":{name:"(anonymous_7)",decl:{start:{line:133,column:4},end:{line:133,column:5}},loc:{start:{line:133,column:21},end:{line:135,column:5}},line:133},"8":{name:"(anonymous_8)",decl:{start:{line:139,column:4},end:{line:139,column:5}},loc:{start:{line:139,column:20},end:{line:141,column:5}},line:139},"9":{name:"(anonymous_9)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:21},end:{line:147,column:5}},line:145},"10":{name:"(anonymous_10)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:23},end:{line:150,column:5}},line:148},"11":{name:"(anonymous_11)",decl:{start:{line:154,column:4},end:{line:154,column:5}},loc:{start:{line:154,column:28},end:{line:157,column:5}},line:154},"12":{name:"(anonymous_12)",decl:{start:{line:158,column:4},end:{line:158,column:5}},loc:{start:{line:158,column:21},end:{line:160,column:5}},line:158},"13":{name:"(anonymous_13)",decl:{start:{line:164,column:4},end:{line:164,column:5}},loc:{start:{line:164,column:22},end:{line:168,column:5}},line:164},"14":{name:"(anonymous_14)",decl:{start:{line:169,column:4},end:{line:169,column:5}},loc:{start:{line:169,column:22},end:{line:171,column:5}},line:169},"15":{name:"(anonymous_15)",decl:{start:{line:175,column:4},end:{line:175,column:5}},loc:{start:{line:175,column:23},end:{line:177,column:5}},line:175},"16":{name:"(anonymous_16)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:19},end:{line:180,column:5}},line:178},"17":{name:"(anonymous_17)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:20},end:{line:187,column:5}},line:184},"18":{name:"(anonymous_18)",decl:{start:{line:191,column:4},end:{line:191,column:5}},loc:{start:{line:191,column:16},end:{line:193,column:5}},line:191},"19":{name:"(anonymous_19)",decl:{start:{line:197,column:4},end:{line:197,column:5}},loc:{start:{line:197,column:17},end:{line:200,column:5}},line:197},"20":{name:"(anonymous_20)",decl:{start:{line:205,column:4},end:{line:205,column:5}},loc:{start:{line:205,column:15},end:{line:212,column:5}},line:205},"21":{name:"(anonymous_21)",decl:{start:{line:217,column:4},end:{line:217,column:5}},loc:{start:{line:217,column:19},end:{line:219,column:5}},line:217},"22":{name:"(anonymous_22)",decl:{start:{line:224,column:4},end:{line:224,column:5}},loc:{start:{line:224,column:23},end:{line:231,column:5}},line:224},"23":{name:"(anonymous_23)",decl:{start:{line:226,column:39},end:{line:226,column:40}},loc:{start:{line:226,column:48},end:{line:226,column:73}},line:226},"24":{name:"(anonymous_24)",decl:{start:{line:236,column:4},end:{line:236,column:5}},loc:{start:{line:236,column:15},end:{line:238,column:5}},line:236},"25":{name:"(anonymous_25)",decl:{start:{line:237,column:35},end:{line:237,column:36}},loc:{start:{line:237,column:44},end:{line:237,column:67}},line:237},"26":{name:"(anonymous_26)",decl:{start:{line:243,column:4},end:{line:243,column:5}},loc:{start:{line:243,column:22},end:{line:245,column:5}},line:243},"27":{name:"(anonymous_27)",decl:{start:{line:244,column:35},end:{line:244,column:36}},loc:{start:{line:244,column:44},end:{line:244,column:93}},line:244},"28":{name:"(anonymous_28)",decl:{start:{line:250,column:4},end:{line:250,column:5}},loc:{start:{line:250,column:18},end:{line:252,column:5}},line:250},"29":{name:"(anonymous_29)",decl:{start:{line:251,column:35},end:{line:251,column:36}},loc:{start:{line:251,column:44},end:{line:251,column:70}},line:251},"30":{name:"(anonymous_30)",decl:{start:{line:257,column:4},end:{line:257,column:5}},loc:{start:{line:257,column:15},end:{line:264,column:5}},line:257},"31":{name:"(anonymous_31)",decl:{start:{line:269,column:4},end:{line:269,column:5}},loc:{start:{line:269,column:21},end:{line:271,column:5}},line:269},"32":{name:"(anonymous_32)",decl:{start:{line:275,column:4},end:{line:275,column:5}},loc:{start:{line:275,column:16},end:{line:279,column:5}},line:275},"33":{name:"(anonymous_33)",decl:{start:{line:283,column:4},end:{line:283,column:5}},loc:{start:{line:283,column:18},end:{line:287,column:5}},line:283},"34":{name:"(anonymous_34)",decl:{start:{line:291,column:4},end:{line:291,column:5}},loc:{start:{line:291,column:15},end:{line:302,column:5}},line:291},"35":{name:"(anonymous_35)",decl:{start:{line:308,column:4},end:{line:308,column:5}},loc:{start:{line:308,column:20},end:{line:350,column:5}},line:308},"36":{name:"(anonymous_36)",decl:{start:{line:309,column:45},end:{line:309,column:46}},loc:{start:{line:309,column:52},end:{line:309,column:81}},line:309},"37":{name:"(anonymous_37)",decl:{start:{line:355,column:4},end:{line:355,column:5}},loc:{start:{line:355,column:20},end:{line:357,column:5}},line:355},"38":{name:"(anonymous_38)",decl:{start:{line:361,column:4},end:{line:361,column:5}},loc:{start:{line:361,column:15},end:{line:365,column:5}},line:361},"39":{name:"(anonymous_39)",decl:{start:{line:369,column:4},end:{line:369,column:5}},loc:{start:{line:369,column:20},end:{line:371,column:5}},line:369},"40":{name:"(anonymous_40)",decl:{start:{line:377,column:4},end:{line:377,column:5}},loc:{start:{line:377,column:21},end:{line:379,column:5}},line:377},"41":{name:"(anonymous_41)",decl:{start:{line:383,column:4},end:{line:383,column:5}},loc:{start:{line:383,column:16},end:{line:387,column:5}},line:383},"42":{name:"(anonymous_42)",decl:{start:{line:392,column:4},end:{line:392,column:5}},loc:{start:{line:392,column:20},end:{line:398,column:5}},line:392},"43":{name:"(anonymous_43)",decl:{start:{line:401,column:4},end:{line:401,column:5}},loc:{start:{line:401,column:22},end:{line:406,column:5}},line:401},"44":{name:"(anonymous_44)",decl:{start:{line:410,column:4},end:{line:410,column:5}},loc:{start:{line:410,column:24},end:{line:412,column:5}},line:410},"45":{name:"(anonymous_45)",decl:{start:{line:411,column:35},end:{line:411,column:36}},loc:{start:{line:411,column:44},end:{line:411,column:69}},line:411},"46":{name:"(anonymous_46)",decl:{start:{line:418,column:4},end:{line:418,column:5}},loc:{start:{line:418,column:31},end:{line:430,column:5}},line:418},"47":{name:"(anonymous_47)",decl:{start:{line:424,column:27},end:{line:424,column:28}},loc:{start:{line:424,column:36},end:{line:428,column:9}},line:424},"48":{name:"(anonymous_48)",decl:{start:{line:436,column:4},end:{line:436,column:5}},loc:{start:{line:436,column:30},end:{line:441,column:5}},line:436},"49":{name:"(anonymous_49)",decl:{start:{line:447,column:4},end:{line:447,column:5}},loc:{start:{line:447,column:27},end:{line:453,column:5}},line:447},"50":{name:"(anonymous_50)",decl:{start:{line:458,column:4},end:{line:458,column:5}},loc:{start:{line:458,column:21},end:{line:460,column:5}},line:458},"51":{name:"(anonymous_51)",decl:{start:{line:466,column:28},end:{line:466,column:29}},loc:{start:{line:466,column:40},end:{line:466,column:154}},line:466},"52":{name:"(anonymous_52)",decl:{start:{line:502,column:4},end:{line:502,column:5}},loc:{start:{line:502,column:23},end:{line:508,column:5}},line:502}},branchMap:{"0":{loc:{start:{line:58,column:12},end:{line:60,column:13}},type:"if",locations:[{start:{line:58,column:12},end:{line:60,column:13}},{start:{line:58,column:12},end:{line:60,column:13}}],line:58},"1":{loc:{start:{line:61,column:12},end:{line:71,column:13}},type:"if",locations:[{start:{line:61,column:12},end:{line:71,column:13}},{start:{line:61,column:12},end:{line:71,column:13}}],line:61},"2":{loc:{start:{line:64,column:16},end:{line:70,column:17}},type:"if",locations:[{start:{line:64,column:16},end:{line:70,column:17}},{start:{line:64,column:16},end:{line:70,column:17}}],line:64},"3":{loc:{start:{line:206,column:8},end:{line:211,column:9}},type:"if",locations:[{start:{line:206,column:8},end:{line:211,column:9}},{start:{line:206,column:8},end:{line:211,column:9}}],line:206},"4":{loc:{start:{line:225,column:8},end:{line:230,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:230,column:9}},{start:{line:225,column:8},end:{line:230,column:9}}],line:225},"5":{loc:{start:{line:244,column:44},end:{line:244,column:93}},type:"binary-expr",locations:[{start:{line:244,column:44},end:{line:244,column:66}},{start:{line:244,column:70},end:{line:244,column:93}}],line:244},"6":{loc:{start:{line:258,column:8},end:{line:263,column:9}},type:"if",locations:[{start:{line:258,column:8},end:{line:263,column:9}},{start:{line:258,column:8},end:{line:263,column:9}}],line:258},"7":{loc:{start:{line:276,column:8},end:{line:278,column:9}},type:"if",locations:[{start:{line:276,column:8},end:{line:278,column:9}},{start:{line:276,column:8},end:{line:278,column:9}}],line:276},"8":{loc:{start:{line:284,column:8},end:{line:286,column:9}},type:"if",locations:[{start:{line:284,column:8},end:{line:286,column:9}},{start:{line:284,column:8},end:{line:286,column:9}}],line:284},"9":{loc:{start:{line:298,column:8},end:{line:300,column:9}},type:"if",locations:[{start:{line:298,column:8},end:{line:300,column:9}},{start:{line:298,column:8},end:{line:300,column:9}}],line:298},"10":{loc:{start:{line:310,column:8},end:{line:348,column:9}},type:"if",locations:[{start:{line:310,column:8},end:{line:348,column:9}},{start:{line:310,column:8},end:{line:348,column:9}}],line:310},"11":{loc:{start:{line:310,column:12},end:{line:310,column:79}},type:"binary-expr",locations:[{start:{line:310,column:12},end:{line:310,column:36}},{start:{line:310,column:41},end:{line:310,column:65}},{start:{line:310,column:69},end:{line:310,column:78}}],line:310},"12":{loc:{start:{line:311,column:12},end:{line:324,column:13}},type:"if",locations:[{start:{line:311,column:12},end:{line:324,column:13}},{start:{line:311,column:12},end:{line:324,column:13}}],line:311},"13":{loc:{start:{line:311,column:16},end:{line:313,column:47}},type:"binary-expr",locations:[{start:{line:311,column:16},end:{line:311,column:49}},{start:{line:312,column:16},end:{line:312,column:48}},{start:{line:313,column:16},end:{line:313,column:47}}],line:311},"14":{loc:{start:{line:318,column:16},end:{line:323,column:17}},type:"if",locations:[{start:{line:318,column:16},end:{line:323,column:17}},{start:{line:318,column:16},end:{line:323,column:17}}],line:318},"15":{loc:{start:{line:321,column:21},end:{line:323,column:17}},type:"if",locations:[{start:{line:321,column:21},end:{line:323,column:17}},{start:{line:321,column:21},end:{line:323,column:17}}],line:321},"16":{loc:{start:{line:326,column:13},end:{line:348,column:9}},type:"if",locations:[{start:{line:326,column:13},end:{line:348,column:9}},{start:{line:326,column:13},end:{line:348,column:9}}],line:326},"17":{loc:{start:{line:327,column:12},end:{line:329,column:13}},type:"if",locations:[{start:{line:327,column:12},end:{line:329,column:13}},{start:{line:327,column:12},end:{line:329,column:13}}],line:327},"18":{loc:{start:{line:332,column:13},end:{line:348,column:9}},type:"if",locations:[{start:{line:332,column:13},end:{line:348,column:9}},{start:{line:332,column:13},end:{line:348,column:9}}],line:332},"19":{loc:{start:{line:344,column:12},end:{line:347,column:13}},type:"if",locations:[{start:{line:344,column:12},end:{line:347,column:13}},{start:{line:344,column:12},end:{line:347,column:13}}],line:344},"20":{loc:{start:{line:362,column:8},end:{line:364,column:9}},type:"if",locations:[{start:{line:362,column:8},end:{line:364,column:9}},{start:{line:362,column:8},end:{line:364,column:9}}],line:362},"21":{loc:{start:{line:384,column:8},end:{line:386,column:9}},type:"if",locations:[{start:{line:384,column:8},end:{line:386,column:9}},{start:{line:384,column:8},end:{line:386,column:9}}],line:384},"22":{loc:{start:{line:394,column:8},end:{line:396,column:9}},type:"if",locations:[{start:{line:394,column:8},end:{line:396,column:9}},{start:{line:394,column:8},end:{line:396,column:9}}],line:394},"23":{loc:{start:{line:403,column:8},end:{line:405,column:9}},type:"if",locations:[{start:{line:403,column:8},end:{line:405,column:9}},{start:{line:403,column:8},end:{line:405,column:9}}],line:403},"24":{loc:{start:{line:419,column:8},end:{line:421,column:9}},type:"if",locations:[{start:{line:419,column:8},end:{line:421,column:9}},{start:{line:419,column:8},end:{line:421,column:9}}],line:419},"25":{loc:{start:{line:425,column:12},end:{line:427,column:13}},type:"if",locations:[{start:{line:425,column:12},end:{line:427,column:13}},{start:{line:425,column:12},end:{line:427,column:13}}],line:425},"26":{loc:{start:{line:437,column:8},end:{line:439,column:9}},type:"if",locations:[{start:{line:437,column:8},end:{line:439,column:9}},{start:{line:437,column:8},end:{line:439,column:9}}],line:437},"27":{loc:{start:{line:449,column:8},end:{line:451,column:9}},type:"if",locations:[{start:{line:449,column:8},end:{line:451,column:9}},{start:{line:449,column:8},end:{line:451,column:9}}],line:449},"28":{loc:{start:{line:449,column:12},end:{line:449,column:62}},type:"binary-expr",locations:[{start:{line:449,column:12},end:{line:449,column:28}},{start:{line:449,column:32},end:{line:449,column:62}}],line:449}},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,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":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,"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},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],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\nimport { ISacUploadEventCompleteState } from '../interfaces/ISacUploadEventCompleteState';\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\nimport { SACVALIDATIONKEY_SERVICE, SacDefaultValidationKeyService } from '../services';\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\nimport { Validation } from '../validation';\nimport { SacBaseModelControl } from './basemodelcontrol';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport {\n IdService,\n UPLOADX_AJAX,\n UPLOADX_FACTORY_OPTIONS,\n UPLOADX_OPTIONS,\n UploadState,\n UploadxOptions,\n UploadxService,\n} from 'ngx-uploadx';\nimport { Observable, of } from 'rxjs';\n\n// #region Exported Classes\n\n/**\n * Base Klasse f\xFCr Uploader Control\n */\n@Directive()\nexport abstract class SacUploadBase<VALUE> extends SacBaseModelControl<VALUE> implements OnInit, OnDestroy {\n // #region Properties\n\n /**\n * Erlaubte Dateitypen\n */\n private _allowedtypes: string = '*';\n\n /**\n * Files automatisch hochladen\n */\n private _autoupload: boolean = false;\n\n /**\n * Pausieren von Uploads erlauben\n */\n private _enablepause: boolean = true;\n\n /**\n * API Endpoint\n */\n private _endpoint: string = null;\n\n /**\n * Token for Bearer Authentication\n */\n private _token: string | null = null;\n\n /**\n * Upload Settings\n */\n private options: UploadxOptions = {};\n\n /**\n * File Input Control\n */\n @ViewChild('files', { static: true })\n private uploadInput: ElementRef;\n\n /**\n * Upload Service\n */\n protected uploadService: UploadxService;\n\n /**\n * Handling von neuen Files im Input Control\n */\n public fileListener = () => {\n // exit if files is null or undefined\n if (!this.uploadInput.nativeElement.files) {\n return;\n }\n\n if (this.GetMaxFiles() > 0) {\n const maxFiles = this.GetMaxFiles() + this.UploadedFileCount();\n const possibleFiles = maxFiles - this.uploadInput.nativeElement.files.length;\n\n if (possibleFiles < 0) {\n const dataTransfer = new DataTransfer();\n\n const files = Array.from(this.uploadInput.nativeElement.files).splice(\n 0,\n this.uploadInput.nativeElement.files.length + possibleFiles\n );\n\n // clone files\n files.forEach((file: File) => dataTransfer.items.add(file));\n\n this.uploadInput.nativeElement.files = dataTransfer.files;\n }\n }\n\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\n };\n\n /**\n * Definiert das Control als Required\n */\n @Input() public isrequired: boolean = false;\n\n /**\n * Listener f\xFCr Files\n */\n public listenerFn: () => void;\n\n /**\n * Service f\xFCr Error Localisation\n */\n public lngResourceService: ISacLocalisationService;\n\n /**\n * Max. Dateigr\xF6sse f\xFCr Files die hochgeladen werden k\xF6nnen. 0 deaktiviert den Filter\n */\n @Input() public maxfilesize: number = 0;\n\n /**\n * Event when an error is triggered in the component.\n */\n @Output() public onfileerror = new EventEmitter<string>();\n\n /**\n * Event when a file has been uploaded. The event is triggered for multiple uploads per file.\n */\n @Output()\n public onuploadcomplete = new EventEmitter<ISacUploadEventCompleteState>();\n\n /**\n * Array von Uploads\n */\n public uploads: SacUploadFile[];\n\n /**\n * Resource Key f\xFCr Validation Message Required bei Control\n */\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\n\n /**\n * Resource Key f\xFCr Validation Message Required in Validation Summary\n */\n @Input()\n public validationmessagesummaryrequired: string = this.validationKeyService.ValidationErrorSummaryRequired;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\n * @param injector Injector for injecting services\n * @param renderer angular rendering engine\n * @param ngZone ngzone for handling external scripts\n */\n constructor(\n formlayout: SacFormLayoutCommon,\n injector: Injector,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n super(formlayout, injector);\n\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\n\n this.lngResourceService = injector.get(\n SACLOCALISATION_SERVICE,\n new SacDefaultLocalisationService(this.validationKeyService)\n );\n\n this.uploads = [];\n\n this.options.allowedTypes = '*';\n this.options.concurrency = 1;\n this.options.token = 'sometoken';\n this.options.autoUpload = this._autoupload;\n this.options.withCredentials = true;\n this.options.chunkSize = 1024 * 16 * 8;\n this.options.headers = (f: File) => ({\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\n });\n\n // Init new Service Instance\n this.uploadService = new UploadxService(\n injector.get(UPLOADX_OPTIONS, null),\n injector.get(UPLOADX_FACTORY_OPTIONS),\n injector.get(UPLOADX_AJAX),\n this.ngZone,\n injector.get(IdService)\n );\n this.uploadService.init(this.options);\n\n // Subscripe Event for State changes\n this.uploadService.events.subscribe((ufile: UploadState) => this.onUpload(ufile));\n }\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Icon for browse button\n */\n public get IconBrowse(): string {\n return this.iconService.UploadComponentBrowseIcon;\n }\n\n /**\n * icon for continous buttons\n */\n public get IconContinue(): string {\n return this.iconService.UploadComponentContinueIcon;\n }\n\n /**\n * icon for delete buttons\n */\n public get IconDelete(): string {\n return this.iconService.UploadComponentDeleteIcon;\n }\n\n /**\n * icon for pause buttons\n */\n public get IconPause(): string {\n return this.iconService.UploadComponentPauseIcon;\n }\n\n /**\n * icon for upload button\n */\n public get IconUpload(): string {\n return this.iconService.UploadComponentUploadIcon;\n }\n\n public get allowedtypes(): string {\n return this._allowedtypes;\n }\n\n /**\n * Erlaubte Dateitypen f\xFCr den Upload. Format: \".xxx,.yyy,.zzz\"\n */\n @Input()\n public set allowedtypes(types: string) {\n this._allowedtypes = types;\n this.setAllowedTypes(types);\n }\n\n public get autoupload(): boolean {\n return this._autoupload;\n }\n\n /**\n * Files nach der Auswahl automatisch hochladen\n */\n @Input()\n public set autoupload(v: boolean) {\n this._autoupload = v;\n this.options.autoUpload = v;\n this.uploadService.connect(this.options);\n }\n\n public get enablepause(): boolean {\n return this._enablepause;\n }\n\n /**\n * Uploads k\xF6nnen unterbrochen werden\n */\n @Input()\n public set enablepause(v: boolean) {\n this._enablepause = v;\n }\n\n public get endpoint(): string {\n return this._endpoint;\n }\n\n /**\n * Definiert den Registration Endpoint f\xFCr Uploads.\n */\n @Input()\n public set endpoint(v: string) {\n this._endpoint = v;\n this.setEndpoint(v);\n }\n\n /**\n * Token for Bearer Authentication\n */\n public get token(): string | null {\n return this._token;\n }\n\n /**\n * Token for Bearer Authentication\n */\n @Input()\n public set token(v: string | null) {\n this._token = v;\n this.setToken(v);\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Methode kann f\xFCr Controls verwendet werden, zus\xE4tzliche Validierungen bei hinzuf\xFCgen der Files zu machen\n *\n * @param file File das hinzugef\xFCgt wurde.\n * @returns Valdierung ist erfolgreich\n */\n public abstract CustomAddValidation(file: UploadState): boolean;\n\n /**\n * Name der Datei die Hochgeladen wird\n * @returns Observable des Dateinamens.\n */\n public Filename(): Observable<string> {\n if (this.uploads.length > 0) {\n return of(this.uploads[0].name);\n } else {\n return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);\n }\n }\n\n /**\n * Gibt an ob Queue Elemente beinhaltet\n * @returns Elemente in der Queue\n */\n public HasQueueItem(): boolean {\n return this.uploads.length > 0;\n }\n\n /**\n * Gibt an ob ein Upload abgeschlossen ist\n * @returns Upload erfolgreich\n */\n public HasSuccessUpload(): boolean {\n if (this.uploads.length > 0) {\n return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;\n } else {\n return false;\n }\n }\n\n /**\n * Pr\xFCft ob ein Upload pausiert\n * @returns Pausierter Upload ist vorhanden\n */\n public IsPaused(): boolean {\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\n }\n\n /**\n * Pr\xFCft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\n * @returns Elemente f\xFCr Upload vorhanden\n */\n public IsStateToUpload(): boolean {\n return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;\n }\n\n /**\n * Pr\xFCft ob ein Upload eines Files am laufen ist\n * @returns Upload ist am laufen\n */\n public IsUploading(): boolean {\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\n }\n\n /**\n * Gibt den Uploadfortschritt zur\xFCck\n * @returns Upload Fortschritt. Wert von 0-100\n */\n public Progress(): number {\n if (this.uploads.length > 0) {\n return this.uploads[0].progress;\n } else {\n return 0;\n }\n }\n\n /**\n * Methode welche die Upload ID's in das Model setzt oder l\xF6scht\n *\n * @param file Type von File ID's\n */\n public abstract SetUploadValue(file: UploadState): void;\n\n /**\n * Cancel single upload\n * @param uploadId ID of File to cancel\n */\n public cancel(uploadId) {\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\n }\n\n /**\n * Cancel all Uploaded files\n */\n public cancelAll() {\n if (this.HasQueueItem() === true) {\n this.uploadService.control({ action: 'cancel' });\n }\n }\n\n /**\n * Destroy des Controls\n */\n public ngOnDestroy() {\n if (this.listenerFn) {\n this.listenerFn();\n }\n }\n\n /**\n * Initialisiert das Control\n */\n public ngOnInit() {\n super.ngOnInit();\n // Init Event Listener for Input File Control and Handling Files\n this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);\n\n this.setAllowedTypes(this._allowedtypes);\n this.setEndpoint(this._endpoint);\n this.setToken(this._token);\n\n if (this._endpoint === null) {\n throw new Error('endpoint is not defined!');\n }\n\n this.uploadService.connect(this.options);\n }\n\n /**\n * Upload Event\n *\n * @param uploadsOutStream Upload Item\n */\n public onUpload(ufile: UploadState) {\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\n\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\n if (\n this.isExtensionValid(ufile.name) &&\n this.isFileSizeValid(ufile.size) &&\n this.CustomAddValidation(ufile)\n ) {\n this.uploads.push(new SacUploadFile(ufile));\n } else {\n this.cancel(ufile.uploadId);\n\n if (!this.isExtensionValid(ufile.name)) {\n this.onfileerror.emit('INVALID_EXTENSION');\n } else if (!this.isFileSizeValid(ufile.size)) {\n this.onfileerror.emit('INVALID_FILESIZE');\n }\n }\n } else if (ufile.status === 'cancelled') {\n if (index >= 0) {\n this.uploads.splice(index, 1);\n }\n\n this.SetUploadValue(null);\n } else if (ufile.status === 'complete') {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n this.SetUploadValue(ufile);\n\n const uploadState: ISacUploadEventCompleteState = {\n name: ufile.name,\n size: ufile.size,\n uploadid: this.uploads[index].uploadId,\n };\n\n this.onuploadcomplete.emit(uploadState);\n } else {\n if (index >= 0) {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n }\n }\n\n this.UpdateFileCount();\n }\n\n /**\n * Cancel Single File\n * @param uploadId ID of File to Cancel\n */\n public pause(uploadId) {\n this.uploadService.control({ action: 'pause', uploadId });\n }\n\n /**\n * Pause all Uploads\n */\n public pauseAll() {\n if (this.IsUploading() === true) {\n this.uploadService.control({ action: 'pause' });\n }\n }\n\n /**\n * Sets the bearer token in the upload service\n */\n public setToken(value: string) {\n this.options.token = value;\n }\n\n /**\n * Upload Single File\n *\n * @param uploadId ID of File to Upload\n */\n public upload(uploadId) {\n this.uploadService.control({ action: 'upload', uploadId });\n }\n\n /**\n * Upload all queued Files\n */\n public uploadAll() {\n if (this.IsStateToUpload() === true) {\n this.uploadService.control({ action: 'upload' });\n }\n }\n\n /**\n * Validiert das Upload Control\n * @param c Control das validiert werden soll\n */\n public validateData(c: AbstractControl): ValidationErrors | null {\n let error: ValidationErrors | null = null;\n\n if (this.isrequired) {\n error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);\n }\n\n return error;\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n /**\n * get max. files that can be uploaded\n */\n protected abstract GetMaxFiles(): number;\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n private UpdateFileCount(): void {\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\n if (this.ngControl) {\n (this.ngControl as unknown as IUploadControl).uploadedfilecount = this.UploadedFileCount();\n }\n }\n\n /**\n * Returns the number of uploaded files\n */\n private UploadedFileCount(): number {\n return this.uploads.filter((itm) => itm.status === 'complete').length;\n }\n\n /**\n * Pr\xFCft ob die Dateierweiterung g\xFCltig ist\n *\n * @param filename Dateiname\n */\n private isExtensionValid(filename: string): boolean {\n if (this._allowedtypes === '*') {\n return true;\n }\n\n let isValid: boolean = false;\n const extensions: string[] = this._allowedtypes.split(',');\n\n extensions.forEach((itm) => {\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\n isValid = true;\n }\n });\n\n return isValid;\n }\n\n /**\n * Pr\xFCft ob das File nicht zu gross ist.\n *\n * @param filesize Max File Size in Bytes\n */\n private isFileSizeValid(filesize: number): boolean {\n if (this.maxfilesize === 0) {\n return true;\n }\n\n return this.maxfilesize >= filesize;\n }\n\n /**\n * Setzt die erlaubten Datentypen f\xFCr den Upload\n *\n * @param types Erlaubte File Extensions\n */\n private setAllowedTypes(types: string) {\n // Pr\xFCfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\n if (this.uploadInput && this.uploadInput.nativeElement) {\n this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);\n }\n\n this.options.allowedTypes = types;\n }\n\n /**\n * Setzt den Upload Endpoit\n * @param url Register URI\n */\n private setEndpoint(url: string) {\n this.options.endpoint = url;\n }\n\n // #endregion Private Methods\n}\n\n/**\n * Klasse f\xFCr den Upload einer Datei in der Upload Component\n */\nexport class SacUploadFile {\n // #region Properties\n\n /**\n * Document ID\n */\n public documentid: string;\n\n /**\n * Dateiname\n */\n public name: string;\n\n /**\n * Upload Fortschritt\n */\n public progress: number;\n\n /**\n * Upload Status\n */\n public status: string;\n\n /**\n * Upload ID\n */\n public uploadId: string;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Konstruktor\n * @param ufile Upload Status\n */\n constructor(ufile: UploadState) {\n this.uploadId = ufile.uploadId;\n this.name = ufile.name;\n this.progress = ufile.progress;\n this.status = ufile.status;\n this.documentid = null;\n }\n\n // #endregion Constructors\n}\n\n// #endregion Exported Classes\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"747dba4fb9046389407e040dff9c8828d49b109f"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
1
+ function cov_2icfa0wtpo(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/common/baseuploadcontrol.mjs";var hash="6da1c20bd5eea64ab04b12a82295cde4043c594e";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/common/baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:32,column:8},end:{line:32,column:33}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:33}},"6":{start:{line:44,column:8},end:{line:44,column:30}},"7":{start:{line:48,column:8},end:{line:48,column:27}},"8":{start:{line:52,column:8},end:{line:52,column:26}},"9":{start:{line:56,column:8},end:{line:73,column:10}},"10":{start:{line:58,column:12},end:{line:60,column:13}},"11":{start:{line:59,column:16},end:{line:59,column:23}},"12":{start:{line:61,column:12},end:{line:71,column:13}},"13":{start:{line:62,column:33},end:{line:62,column:78}},"14":{start:{line:63,column:38},end:{line:63,column:92}},"15":{start:{line:64,column:16},end:{line:70,column:17}},"16":{start:{line:65,column:41},end:{line:65,column:59}},"17":{start:{line:66,column:34},end:{line:66,column:153}},"18":{start:{line:68,column:20},end:{line:68,column:74}},"19":{start:{line:68,column:44},end:{line:68,column:72}},"20":{start:{line:69,column:20},end:{line:69,column:78}},"21":{start:{line:72,column:12},end:{line:72,column:81}},"22":{start:{line:77,column:8},end:{line:77,column:32}},"23":{start:{line:81,column:8},end:{line:81,column:29}},"24":{start:{line:85,column:8},end:{line:85,column:46}},"25":{start:{line:89,column:8},end:{line:89,column:51}},"26":{start:{line:93,column:8},end:{line:93,column:91}},"27":{start:{line:97,column:8},end:{line:97,column:105}},"28":{start:{line:98,column:8},end:{line:98,column:113}},"29":{start:{line:99,column:8},end:{line:99,column:134}},"30":{start:{line:100,column:8},end:{line:100,column:26}},"31":{start:{line:101,column:8},end:{line:101,column:40}},"32":{start:{line:102,column:8},end:{line:102,column:37}},"33":{start:{line:103,column:8},end:{line:103,column:41}},"34":{start:{line:104,column:8},end:{line:104,column:51}},"35":{start:{line:105,column:8},end:{line:105,column:44}},"36":{start:{line:106,column:8},end:{line:106,column:47}},"37":{start:{line:107,column:8},end:{line:109,column:11}},"38":{start:{line:107,column:39},end:{line:109,column:9}},"39":{start:{line:111,column:8},end:{line:111,column:190}},"40":{start:{line:112,column:8},end:{line:112,column:46}},"41":{start:{line:114,column:8},end:{line:114,column:77}},"42":{start:{line:114,column:55},end:{line:114,column:75}},"43":{start:{line:122,column:8},end:{line:122,column:58}},"44":{start:{line:128,column:8},end:{line:128,column:60}},"45":{start:{line:134,column:8},end:{line:134,column:58}},"46":{start:{line:140,column:8},end:{line:140,column:57}},"47":{start:{line:146,column:8},end:{line:146,column:58}},"48":{start:{line:149,column:8},end:{line:149,column:34}},"49":{start:{line:155,column:8},end:{line:155,column:35}},"50":{start:{line:156,column:8},end:{line:156,column:36}},"51":{start:{line:163,column:8},end:{line:163,column:32}},"52":{start:{line:170,column:8},end:{line:170,column:29}},"53":{start:{line:171,column:8},end:{line:171,column:36}},"54":{start:{line:172,column:8},end:{line:172,column:49}},"55":{start:{line:179,column:8},end:{line:179,column:33}},"56":{start:{line:186,column:8},end:{line:186,column:30}},"57":{start:{line:193,column:8},end:{line:193,column:30}},"58":{start:{line:200,column:8},end:{line:200,column:27}},"59":{start:{line:201,column:8},end:{line:201,column:28}},"60":{start:{line:208,column:8},end:{line:208,column:27}},"61":{start:{line:215,column:8},end:{line:215,column:24}},"62":{start:{line:216,column:8},end:{line:216,column:25}},"63":{start:{line:223,column:8},end:{line:228,column:9}},"64":{start:{line:224,column:12},end:{line:224,column:44}},"65":{start:{line:227,column:12},end:{line:227,column:102}},"66":{start:{line:235,column:8},end:{line:235,column:39}},"67":{start:{line:242,column:8},end:{line:247,column:9}},"68":{start:{line:243,column:12},end:{line:243,column:88}},"69":{start:{line:243,column:48},end:{line:243,column:73}},"70":{start:{line:246,column:12},end:{line:246,column:25}},"71":{start:{line:254,column:8},end:{line:254,column:80}},"72":{start:{line:254,column:44},end:{line:254,column:67}},"73":{start:{line:261,column:8},end:{line:261,column:106}},"74":{start:{line:261,column:44},end:{line:261,column:93}},"75":{start:{line:268,column:8},end:{line:268,column:83}},"76":{start:{line:268,column:44},end:{line:268,column:70}},"77":{start:{line:275,column:8},end:{line:280,column:9}},"78":{start:{line:276,column:12},end:{line:276,column:44}},"79":{start:{line:279,column:12},end:{line:279,column:21}},"80":{start:{line:287,column:8},end:{line:287,column:77}},"81":{start:{line:293,column:8},end:{line:295,column:9}},"82":{start:{line:294,column:12},end:{line:294,column:61}},"83":{start:{line:301,column:8},end:{line:303,column:9}},"84":{start:{line:302,column:12},end:{line:302,column:30}},"85":{start:{line:309,column:8},end:{line:309,column:25}},"86":{start:{line:311,column:8},end:{line:311,column:108}},"87":{start:{line:312,column:8},end:{line:312,column:49}},"88":{start:{line:313,column:8},end:{line:313,column:41}},"89":{start:{line:314,column:8},end:{line:314,column:35}},"90":{start:{line:315,column:8},end:{line:317,column:9}},"91":{start:{line:316,column:12},end:{line:316,column:56}},"92":{start:{line:318,column:8},end:{line:318,column:49}},"93":{start:{line:326,column:22},end:{line:326,column:82}},"94":{start:{line:326,column:52},end:{line:326,column:81}},"95":{start:{line:327,column:8},end:{line:365,column:9}},"96":{start:{line:328,column:12},end:{line:341,column:13}},"97":{start:{line:331,column:16},end:{line:331,column:60}},"98":{start:{line:334,column:16},end:{line:334,column:44}},"99":{start:{line:335,column:16},end:{line:340,column:17}},"100":{start:{line:336,column:20},end:{line:336,column:63}},"101":{start:{line:338,column:21},end:{line:340,column:17}},"102":{start:{line:339,column:20},end:{line:339,column:62}},"103":{start:{line:343,column:13},end:{line:365,column:9}},"104":{start:{line:344,column:12},end:{line:346,column:13}},"105":{start:{line:345,column:16},end:{line:345,column:46}},"106":{start:{line:347,column:12},end:{line:347,column:38}},"107":{start:{line:349,column:13},end:{line:365,column:9}},"108":{start:{line:350,column:12},end:{line:350,column:58}},"109":{start:{line:351,column:12},end:{line:351,column:54}},"110":{start:{line:352,column:12},end:{line:352,column:39}},"111":{start:{line:353,column:32},end:{line:357,column:13}},"112":{start:{line:358,column:12},end:{line:358,column:52}},"113":{start:{line:361,column:12},end:{line:364,column:13}},"114":{start:{line:362,column:16},end:{line:362,column:62}},"115":{start:{line:363,column:16},end:{line:363,column:58}},"116":{start:{line:366,column:8},end:{line:366,column:31}},"117":{start:{line:373,column:8},end:{line:373,column:66}},"118":{start:{line:379,column:8},end:{line:381,column:9}},"119":{start:{line:380,column:12},end:{line:380,column:60}},"120":{start:{line:387,column:8},end:{line:387,column:35}},"121":{start:{line:395,column:8},end:{line:395,column:67}},"122":{start:{line:401,column:8},end:{line:403,column:9}},"123":{start:{line:402,column:12},end:{line:402,column:61}},"124":{start:{line:410,column:20},end:{line:410,column:24}},"125":{start:{line:411,column:8},end:{line:413,column:9}},"126":{start:{line:412,column:12},end:{line:412,column:114}},"127":{start:{line:414,column:8},end:{line:414,column:21}},"128":{start:{line:423,column:8},end:{line:425,column:9}},"129":{start:{line:424,column:12},end:{line:424,column:72}},"130":{start:{line:431,column:8},end:{line:431,column:78}},"131":{start:{line:431,column:44},end:{line:431,column:69}},"132":{start:{line:439,column:8},end:{line:441,column:9}},"133":{start:{line:440,column:12},end:{line:440,column:24}},"134":{start:{line:442,column:22},end:{line:442,column:27}},"135":{start:{line:443,column:27},end:{line:443,column:56}},"136":{start:{line:444,column:8},end:{line:448,column:11}},"137":{start:{line:445,column:12},end:{line:447,column:13}},"138":{start:{line:446,column:16},end:{line:446,column:31}},"139":{start:{line:449,column:8},end:{line:449,column:23}},"140":{start:{line:457,column:8},end:{line:459,column:9}},"141":{start:{line:458,column:12},end:{line:458,column:24}},"142":{start:{line:460,column:8},end:{line:460,column:44}},"143":{start:{line:469,column:8},end:{line:471,column:9}},"144":{start:{line:470,column:12},end:{line:470,column:88}},"145":{start:{line:472,column:8},end:{line:472,column:42}},"146":{start:{line:479,column:8},end:{line:479,column:36}},"147":{start:{line:482,column:0},end:{line:482,column:275}},"148":{start:{line:483,column:0},end:{line:483,column:657}},"149":{start:{line:484,column:0},end:{line:511,column:20}},"150":{start:{line:486,column:42},end:{line:486,column:152}},"151":{start:{line:523,column:8},end:{line:523,column:39}},"152":{start:{line:524,column:8},end:{line:524,column:31}},"153":{start:{line:525,column:8},end:{line:525,column:39}},"154":{start:{line:526,column:8},end:{line:526,column:35}},"155":{start:{line:527,column:8},end:{line:527,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:115,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:56,column:28},end:{line:56,column:29}},loc:{start:{line:56,column:34},end:{line:73,column:9}},line:56},"2":{name:"(anonymous_2)",decl:{start:{line:68,column:34},end:{line:68,column:35}},loc:{start:{line:68,column:44},end:{line:68,column:72}},line:68},"3":{name:"(anonymous_3)",decl:{start:{line:107,column:31},end:{line:107,column:32}},loc:{start:{line:107,column:39},end:{line:109,column:9}},line:107},"4":{name:"(anonymous_4)",decl:{start:{line:114,column:44},end:{line:114,column:45}},loc:{start:{line:114,column:55},end:{line:114,column:75}},line:114},"5":{name:"(anonymous_5)",decl:{start:{line:121,column:4},end:{line:121,column:5}},loc:{start:{line:121,column:21},end:{line:123,column:5}},line:121},"6":{name:"(anonymous_6)",decl:{start:{line:127,column:4},end:{line:127,column:5}},loc:{start:{line:127,column:23},end:{line:129,column:5}},line:127},"7":{name:"(anonymous_7)",decl:{start:{line:133,column:4},end:{line:133,column:5}},loc:{start:{line:133,column:21},end:{line:135,column:5}},line:133},"8":{name:"(anonymous_8)",decl:{start:{line:139,column:4},end:{line:139,column:5}},loc:{start:{line:139,column:20},end:{line:141,column:5}},line:139},"9":{name:"(anonymous_9)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:21},end:{line:147,column:5}},line:145},"10":{name:"(anonymous_10)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:23},end:{line:150,column:5}},line:148},"11":{name:"(anonymous_11)",decl:{start:{line:154,column:4},end:{line:154,column:5}},loc:{start:{line:154,column:28},end:{line:157,column:5}},line:154},"12":{name:"(anonymous_12)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:21},end:{line:164,column:5}},line:162},"13":{name:"(anonymous_13)",decl:{start:{line:169,column:4},end:{line:169,column:5}},loc:{start:{line:169,column:22},end:{line:173,column:5}},line:169},"14":{name:"(anonymous_14)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:22},end:{line:180,column:5}},line:178},"15":{name:"(anonymous_15)",decl:{start:{line:185,column:4},end:{line:185,column:5}},loc:{start:{line:185,column:23},end:{line:187,column:5}},line:185},"16":{name:"(anonymous_16)",decl:{start:{line:192,column:4},end:{line:192,column:5}},loc:{start:{line:192,column:19},end:{line:194,column:5}},line:192},"17":{name:"(anonymous_17)",decl:{start:{line:199,column:4},end:{line:199,column:5}},loc:{start:{line:199,column:20},end:{line:202,column:5}},line:199},"18":{name:"(anonymous_18)",decl:{start:{line:207,column:4},end:{line:207,column:5}},loc:{start:{line:207,column:16},end:{line:209,column:5}},line:207},"19":{name:"(anonymous_19)",decl:{start:{line:214,column:4},end:{line:214,column:5}},loc:{start:{line:214,column:17},end:{line:217,column:5}},line:214},"20":{name:"(anonymous_20)",decl:{start:{line:222,column:4},end:{line:222,column:5}},loc:{start:{line:222,column:15},end:{line:229,column:5}},line:222},"21":{name:"(anonymous_21)",decl:{start:{line:234,column:4},end:{line:234,column:5}},loc:{start:{line:234,column:19},end:{line:236,column:5}},line:234},"22":{name:"(anonymous_22)",decl:{start:{line:241,column:4},end:{line:241,column:5}},loc:{start:{line:241,column:23},end:{line:248,column:5}},line:241},"23":{name:"(anonymous_23)",decl:{start:{line:243,column:39},end:{line:243,column:40}},loc:{start:{line:243,column:48},end:{line:243,column:73}},line:243},"24":{name:"(anonymous_24)",decl:{start:{line:253,column:4},end:{line:253,column:5}},loc:{start:{line:253,column:15},end:{line:255,column:5}},line:253},"25":{name:"(anonymous_25)",decl:{start:{line:254,column:35},end:{line:254,column:36}},loc:{start:{line:254,column:44},end:{line:254,column:67}},line:254},"26":{name:"(anonymous_26)",decl:{start:{line:260,column:4},end:{line:260,column:5}},loc:{start:{line:260,column:22},end:{line:262,column:5}},line:260},"27":{name:"(anonymous_27)",decl:{start:{line:261,column:35},end:{line:261,column:36}},loc:{start:{line:261,column:44},end:{line:261,column:93}},line:261},"28":{name:"(anonymous_28)",decl:{start:{line:267,column:4},end:{line:267,column:5}},loc:{start:{line:267,column:18},end:{line:269,column:5}},line:267},"29":{name:"(anonymous_29)",decl:{start:{line:268,column:35},end:{line:268,column:36}},loc:{start:{line:268,column:44},end:{line:268,column:70}},line:268},"30":{name:"(anonymous_30)",decl:{start:{line:274,column:4},end:{line:274,column:5}},loc:{start:{line:274,column:15},end:{line:281,column:5}},line:274},"31":{name:"(anonymous_31)",decl:{start:{line:286,column:4},end:{line:286,column:5}},loc:{start:{line:286,column:21},end:{line:288,column:5}},line:286},"32":{name:"(anonymous_32)",decl:{start:{line:292,column:4},end:{line:292,column:5}},loc:{start:{line:292,column:16},end:{line:296,column:5}},line:292},"33":{name:"(anonymous_33)",decl:{start:{line:300,column:4},end:{line:300,column:5}},loc:{start:{line:300,column:18},end:{line:304,column:5}},line:300},"34":{name:"(anonymous_34)",decl:{start:{line:308,column:4},end:{line:308,column:5}},loc:{start:{line:308,column:15},end:{line:319,column:5}},line:308},"35":{name:"(anonymous_35)",decl:{start:{line:325,column:4},end:{line:325,column:5}},loc:{start:{line:325,column:20},end:{line:367,column:5}},line:325},"36":{name:"(anonymous_36)",decl:{start:{line:326,column:45},end:{line:326,column:46}},loc:{start:{line:326,column:52},end:{line:326,column:81}},line:326},"37":{name:"(anonymous_37)",decl:{start:{line:372,column:4},end:{line:372,column:5}},loc:{start:{line:372,column:20},end:{line:374,column:5}},line:372},"38":{name:"(anonymous_38)",decl:{start:{line:378,column:4},end:{line:378,column:5}},loc:{start:{line:378,column:15},end:{line:382,column:5}},line:378},"39":{name:"(anonymous_39)",decl:{start:{line:386,column:4},end:{line:386,column:5}},loc:{start:{line:386,column:20},end:{line:388,column:5}},line:386},"40":{name:"(anonymous_40)",decl:{start:{line:394,column:4},end:{line:394,column:5}},loc:{start:{line:394,column:21},end:{line:396,column:5}},line:394},"41":{name:"(anonymous_41)",decl:{start:{line:400,column:4},end:{line:400,column:5}},loc:{start:{line:400,column:16},end:{line:404,column:5}},line:400},"42":{name:"(anonymous_42)",decl:{start:{line:409,column:4},end:{line:409,column:5}},loc:{start:{line:409,column:20},end:{line:415,column:5}},line:409},"43":{name:"(anonymous_43)",decl:{start:{line:421,column:4},end:{line:421,column:5}},loc:{start:{line:421,column:22},end:{line:426,column:5}},line:421},"44":{name:"(anonymous_44)",decl:{start:{line:430,column:4},end:{line:430,column:5}},loc:{start:{line:430,column:24},end:{line:432,column:5}},line:430},"45":{name:"(anonymous_45)",decl:{start:{line:431,column:35},end:{line:431,column:36}},loc:{start:{line:431,column:44},end:{line:431,column:69}},line:431},"46":{name:"(anonymous_46)",decl:{start:{line:438,column:4},end:{line:438,column:5}},loc:{start:{line:438,column:31},end:{line:450,column:5}},line:438},"47":{name:"(anonymous_47)",decl:{start:{line:444,column:27},end:{line:444,column:28}},loc:{start:{line:444,column:36},end:{line:448,column:9}},line:444},"48":{name:"(anonymous_48)",decl:{start:{line:456,column:4},end:{line:456,column:5}},loc:{start:{line:456,column:30},end:{line:461,column:5}},line:456},"49":{name:"(anonymous_49)",decl:{start:{line:467,column:4},end:{line:467,column:5}},loc:{start:{line:467,column:27},end:{line:473,column:5}},line:467},"50":{name:"(anonymous_50)",decl:{start:{line:478,column:4},end:{line:478,column:5}},loc:{start:{line:478,column:21},end:{line:480,column:5}},line:478},"51":{name:"(anonymous_51)",decl:{start:{line:486,column:28},end:{line:486,column:29}},loc:{start:{line:486,column:40},end:{line:486,column:154}},line:486},"52":{name:"(anonymous_52)",decl:{start:{line:522,column:4},end:{line:522,column:5}},loc:{start:{line:522,column:23},end:{line:528,column:5}},line:522}},branchMap:{"0":{loc:{start:{line:58,column:12},end:{line:60,column:13}},type:"if",locations:[{start:{line:58,column:12},end:{line:60,column:13}},{start:{line:58,column:12},end:{line:60,column:13}}],line:58},"1":{loc:{start:{line:61,column:12},end:{line:71,column:13}},type:"if",locations:[{start:{line:61,column:12},end:{line:71,column:13}},{start:{line:61,column:12},end:{line:71,column:13}}],line:61},"2":{loc:{start:{line:64,column:16},end:{line:70,column:17}},type:"if",locations:[{start:{line:64,column:16},end:{line:70,column:17}},{start:{line:64,column:16},end:{line:70,column:17}}],line:64},"3":{loc:{start:{line:223,column:8},end:{line:228,column:9}},type:"if",locations:[{start:{line:223,column:8},end:{line:228,column:9}},{start:{line:223,column:8},end:{line:228,column:9}}],line:223},"4":{loc:{start:{line:242,column:8},end:{line:247,column:9}},type:"if",locations:[{start:{line:242,column:8},end:{line:247,column:9}},{start:{line:242,column:8},end:{line:247,column:9}}],line:242},"5":{loc:{start:{line:261,column:44},end:{line:261,column:93}},type:"binary-expr",locations:[{start:{line:261,column:44},end:{line:261,column:66}},{start:{line:261,column:70},end:{line:261,column:93}}],line:261},"6":{loc:{start:{line:275,column:8},end:{line:280,column:9}},type:"if",locations:[{start:{line:275,column:8},end:{line:280,column:9}},{start:{line:275,column:8},end:{line:280,column:9}}],line:275},"7":{loc:{start:{line:293,column:8},end:{line:295,column:9}},type:"if",locations:[{start:{line:293,column:8},end:{line:295,column:9}},{start:{line:293,column:8},end:{line:295,column:9}}],line:293},"8":{loc:{start:{line:301,column:8},end:{line:303,column:9}},type:"if",locations:[{start:{line:301,column:8},end:{line:303,column:9}},{start:{line:301,column:8},end:{line:303,column:9}}],line:301},"9":{loc:{start:{line:315,column:8},end:{line:317,column:9}},type:"if",locations:[{start:{line:315,column:8},end:{line:317,column:9}},{start:{line:315,column:8},end:{line:317,column:9}}],line:315},"10":{loc:{start:{line:327,column:8},end:{line:365,column:9}},type:"if",locations:[{start:{line:327,column:8},end:{line:365,column:9}},{start:{line:327,column:8},end:{line:365,column:9}}],line:327},"11":{loc:{start:{line:327,column:12},end:{line:327,column:79}},type:"binary-expr",locations:[{start:{line:327,column:12},end:{line:327,column:36}},{start:{line:327,column:41},end:{line:327,column:65}},{start:{line:327,column:69},end:{line:327,column:78}}],line:327},"12":{loc:{start:{line:328,column:12},end:{line:341,column:13}},type:"if",locations:[{start:{line:328,column:12},end:{line:341,column:13}},{start:{line:328,column:12},end:{line:341,column:13}}],line:328},"13":{loc:{start:{line:328,column:16},end:{line:330,column:47}},type:"binary-expr",locations:[{start:{line:328,column:16},end:{line:328,column:49}},{start:{line:329,column:16},end:{line:329,column:48}},{start:{line:330,column:16},end:{line:330,column:47}}],line:328},"14":{loc:{start:{line:335,column:16},end:{line:340,column:17}},type:"if",locations:[{start:{line:335,column:16},end:{line:340,column:17}},{start:{line:335,column:16},end:{line:340,column:17}}],line:335},"15":{loc:{start:{line:338,column:21},end:{line:340,column:17}},type:"if",locations:[{start:{line:338,column:21},end:{line:340,column:17}},{start:{line:338,column:21},end:{line:340,column:17}}],line:338},"16":{loc:{start:{line:343,column:13},end:{line:365,column:9}},type:"if",locations:[{start:{line:343,column:13},end:{line:365,column:9}},{start:{line:343,column:13},end:{line:365,column:9}}],line:343},"17":{loc:{start:{line:344,column:12},end:{line:346,column:13}},type:"if",locations:[{start:{line:344,column:12},end:{line:346,column:13}},{start:{line:344,column:12},end:{line:346,column:13}}],line:344},"18":{loc:{start:{line:349,column:13},end:{line:365,column:9}},type:"if",locations:[{start:{line:349,column:13},end:{line:365,column:9}},{start:{line:349,column:13},end:{line:365,column:9}}],line:349},"19":{loc:{start:{line:361,column:12},end:{line:364,column:13}},type:"if",locations:[{start:{line:361,column:12},end:{line:364,column:13}},{start:{line:361,column:12},end:{line:364,column:13}}],line:361},"20":{loc:{start:{line:379,column:8},end:{line:381,column:9}},type:"if",locations:[{start:{line:379,column:8},end:{line:381,column:9}},{start:{line:379,column:8},end:{line:381,column:9}}],line:379},"21":{loc:{start:{line:401,column:8},end:{line:403,column:9}},type:"if",locations:[{start:{line:401,column:8},end:{line:403,column:9}},{start:{line:401,column:8},end:{line:403,column:9}}],line:401},"22":{loc:{start:{line:411,column:8},end:{line:413,column:9}},type:"if",locations:[{start:{line:411,column:8},end:{line:413,column:9}},{start:{line:411,column:8},end:{line:413,column:9}}],line:411},"23":{loc:{start:{line:423,column:8},end:{line:425,column:9}},type:"if",locations:[{start:{line:423,column:8},end:{line:425,column:9}},{start:{line:423,column:8},end:{line:425,column:9}}],line:423},"24":{loc:{start:{line:439,column:8},end:{line:441,column:9}},type:"if",locations:[{start:{line:439,column:8},end:{line:441,column:9}},{start:{line:439,column:8},end:{line:441,column:9}}],line:439},"25":{loc:{start:{line:445,column:12},end:{line:447,column:13}},type:"if",locations:[{start:{line:445,column:12},end:{line:447,column:13}},{start:{line:445,column:12},end:{line:447,column:13}}],line:445},"26":{loc:{start:{line:457,column:8},end:{line:459,column:9}},type:"if",locations:[{start:{line:457,column:8},end:{line:459,column:9}},{start:{line:457,column:8},end:{line:459,column:9}}],line:457},"27":{loc:{start:{line:469,column:8},end:{line:471,column:9}},type:"if",locations:[{start:{line:469,column:8},end:{line:471,column:9}},{start:{line:469,column:8},end:{line:471,column:9}}],line:469},"28":{loc:{start:{line:469,column:12},end:{line:469,column:62}},type:"binary-expr",locations:[{start:{line:469,column:12},end:{line:469,column:28}},{start:{line:469,column:32},end:{line:469,column:62}}],line:469}},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,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":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,"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},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],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\nimport { ISacUploadEventCompleteState } from '../interfaces/ISacUploadEventCompleteState';\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\nimport { SACVALIDATIONKEY_SERVICE, SacDefaultValidationKeyService } from '../services';\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\nimport { Validation } from '../validation';\nimport { SacBaseModelControl } from './basemodelcontrol';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport {\n IdService,\n UPLOADX_AJAX,\n UPLOADX_FACTORY_OPTIONS,\n UPLOADX_OPTIONS,\n UploadState,\n UploadxOptions,\n UploadxService,\n} from 'ngx-uploadx';\nimport { Observable, of } from 'rxjs';\n\n// #region Exported Classes\n\n/**\n * Base class for uploader control\n */\n@Directive()\nexport abstract class SacUploadBase<VALUE> extends SacBaseModelControl<VALUE> implements OnInit, OnDestroy {\n // #region Properties\n\n /**\n * Allowed file types\n */\n private _allowedtypes = '*';\n\n /**\n * Automatically uploads files\n */\n private _autoupload = false;\n\n /**\n * Allow pausing of uploads\n */\n private _enablepause = true;\n\n /**\n * API Endpoint\n */\n private _endpoint: string = null;\n\n /**\n * Token for Bearer Authentication\n */\n private _token: string | null = null;\n\n /**\n * Upload Settings\n */\n private options: UploadxOptions = {};\n\n /**\n * File Input Control\n */\n @ViewChild('files', { static: true })\n private uploadInput: ElementRef;\n\n /**\n * Upload Service\n */\n protected uploadService: UploadxService;\n\n /**\n * Handling of new files in the input control\n */\n public fileListener = () => {\n // exit if files is null or undefined\n if (!this.uploadInput.nativeElement.files) {\n return;\n }\n\n if (this.GetMaxFiles() > 0) {\n const maxFiles = this.GetMaxFiles() + this.UploadedFileCount();\n const possibleFiles = maxFiles - this.uploadInput.nativeElement.files.length;\n\n if (possibleFiles < 0) {\n const dataTransfer = new DataTransfer();\n\n const files = Array.from(this.uploadInput.nativeElement.files).splice(\n 0,\n this.uploadInput.nativeElement.files.length + possibleFiles\n );\n\n // clone files\n files.forEach((file: File) => dataTransfer.items.add(file));\n\n this.uploadInput.nativeElement.files = dataTransfer.files;\n }\n }\n\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\n };\n\n /**\n * Defines the control as required\n */\n @Input() public isrequired = false;\n\n /**\n * Listener for files\n */\n public listenerFn: () => void;\n\n /**\n * Service f\xFCr Error Localisation\n */\n public lngResourceService: ISacLocalisationService;\n\n /**\n * Max. file size for files that can be uploaded. 0 disables the filter\n */\n @Input() public maxfilesize = 0;\n\n /**\n * Event when an error is triggered in the component.\n */\n @Output() public onfileerror = new EventEmitter<string>();\n\n /**\n * Event when a file has been uploaded. The event is triggered for multiple uploads per file.\n */\n @Output()\n public onuploadcomplete = new EventEmitter<ISacUploadEventCompleteState>();\n\n /**\n * Array of uploads\n */\n public uploads: SacUploadFile[];\n\n /**\n * Resource key for validation message 'required' at control\n */\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\n\n /**\n * Resource key for validation message 'required' in validation summary\n */\n @Input()\n public validationmessagesummaryrequired: string = this.validationKeyService.ValidationErrorSummaryRequired;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\n * @param injector Injector for injecting services\n * @param renderer angular rendering engine\n * @param ngZone ngzone for handling external scripts\n */\n constructor(\n formlayout: SacFormLayoutCommon,\n injector: Injector,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n super(formlayout, injector);\n\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\n\n this.lngResourceService = injector.get(\n SACLOCALISATION_SERVICE,\n new SacDefaultLocalisationService(this.validationKeyService)\n );\n\n this.uploads = [];\n\n this.options.allowedTypes = '*';\n this.options.concurrency = 1;\n this.options.token = 'sometoken';\n this.options.autoUpload = this._autoupload;\n this.options.withCredentials = true;\n this.options.chunkSize = 1024 * 16 * 8;\n this.options.headers = (f: File) => ({\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\n });\n\n // Init new Service Instance\n this.uploadService = new UploadxService(\n injector.get(UPLOADX_OPTIONS, null),\n injector.get(UPLOADX_FACTORY_OPTIONS),\n injector.get(UPLOADX_AJAX),\n this.ngZone,\n injector.get(IdService)\n );\n this.uploadService.init(this.options);\n\n // Subscripe Event for State changes\n this.uploadService.events.subscribe((ufile: UploadState) => this.onUpload(ufile));\n }\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Icon for browse button\n */\n public get IconBrowse(): string {\n return this.iconService.UploadComponentBrowseIcon;\n }\n\n /**\n * icon for continous buttons\n */\n public get IconContinue(): string {\n return this.iconService.UploadComponentContinueIcon;\n }\n\n /**\n * icon for delete buttons\n */\n public get IconDelete(): string {\n return this.iconService.UploadComponentDeleteIcon;\n }\n\n /**\n * icon for pause buttons\n */\n public get IconPause(): string {\n return this.iconService.UploadComponentPauseIcon;\n }\n\n /**\n * icon for upload button\n */\n public get IconUpload(): string {\n return this.iconService.UploadComponentUploadIcon;\n }\n\n public get allowedtypes(): string {\n return this._allowedtypes;\n }\n\n /**\n * Allowed file types for upload. Format: \".xxx,.yyy,.zzz\"\n */\n @Input()\n public set allowedtypes(types: string) {\n this._allowedtypes = types;\n this.setAllowedTypes(types);\n }\n\n /**\n * Indicates whether files should be uploaded automatically after selection.\n * @returns true when auto-upload is enabled.\n */\n public get autoupload(): boolean {\n return this._autoupload;\n }\n\n /**\n * Automatically uploads files after selection.\n * @param v true to enable automatic upload.\n */\n @Input()\n public set autoupload(v: boolean) {\n this._autoupload = v;\n this.options.autoUpload = v;\n this.uploadService.connect(this.options);\n }\n\n /**\n * Indicates whether upload pause is allowed.\n * @returns true when pause support is active.\n */\n public get enablepause(): boolean {\n return this._enablepause;\n }\n\n /**\n * Uploads can be paused.\n * @param v true to allow pausing uploads.\n */\n @Input()\n public set enablepause(v: boolean) {\n this._enablepause = v;\n }\n\n /**\n * API endpoint for upload registration.\n * @returns configured endpoint URL.\n */\n public get endpoint(): string {\n return this._endpoint;\n }\n\n /**\n * Defines the registration endpoint for uploads.\n * @param v upload endpoint URL.\n */\n @Input()\n public set endpoint(v: string) {\n this._endpoint = v;\n this.setEndpoint(v);\n }\n\n /**\n * Bearer authentication token used by upload service.\n * @returns current auth token or null.\n */\n public get token(): string | null {\n return this._token;\n }\n\n /**\n * Sets Bearer authentication token for service requests.\n * @param v token string or null to clear token.\n */\n @Input()\n public set token(v: string | null) {\n this._token = v;\n this.setToken(v);\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Method can be used for controls to perform additional validations when adding files\n *\n * @param file File that was added.\n * @returns Validation is successful\n */\n public abstract CustomAddValidation(file: UploadState): boolean;\n\n /**\n * Name of the file being uploaded\n * @returns Observable of the file name.\n */\n public Filename(): Observable<string> {\n if (this.uploads.length > 0) {\n return of(this.uploads[0].name);\n } else {\n return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);\n }\n }\n\n /**\n * Indicates whether the queue contains elements\n * @returns Elements in the queue\n */\n public HasQueueItem(): boolean {\n return this.uploads.length > 0;\n }\n\n /**\n * Indicates whether an upload is complete\n * @returns Upload successful\n */\n public HasSuccessUpload(): boolean {\n if (this.uploads.length > 0) {\n return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;\n } else {\n return false;\n }\n }\n\n /**\n * Checks if an upload is paused\n * @returns Paused upload is present\n */\n public IsPaused(): boolean {\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\n }\n\n /**\n * Checks if there are elements in the queue ready for upload.\n * @returns Elements available for upload\n */\n public IsStateToUpload(): boolean {\n return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;\n }\n\n /**\n * Checks if a file upload is in progress\n * @returns Upload is in progress\n */\n public IsUploading(): boolean {\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\n }\n\n /**\n * Returns the upload progress\n * @returns Upload progress. Value from 0-100\n */\n public Progress(): number {\n if (this.uploads.length > 0) {\n return this.uploads[0].progress;\n } else {\n return 0;\n }\n }\n\n /**\n * Method that sets or deletes the upload IDs in the model\n *\n * @param file Type of file IDs\n */\n public abstract SetUploadValue(file: UploadState): void;\n\n /**\n * Cancel single upload\n * @param uploadId ID of File to cancel\n */\n public cancel(uploadId) {\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\n }\n\n /**\n * Cancel all Uploaded files\n */\n public cancelAll() {\n if (this.HasQueueItem() === true) {\n this.uploadService.control({ action: 'cancel' });\n }\n }\n\n /**\n * Destroy the control\n */\n public ngOnDestroy() {\n if (this.listenerFn) {\n this.listenerFn();\n }\n }\n\n /**\n * Initializes the control\n */\n public ngOnInit() {\n super.ngOnInit();\n // Init Event Listener for Input File Control and Handling Files\n this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);\n\n this.setAllowedTypes(this._allowedtypes);\n this.setEndpoint(this._endpoint);\n this.setToken(this._token);\n\n if (this._endpoint === null) {\n throw new Error('endpoint is not defined!');\n }\n\n this.uploadService.connect(this.options);\n }\n\n /**\n * Upload event\n *\n * @param uploadsOutStream Upload item\n */\n public onUpload(ufile: UploadState) {\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\n\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\n if (\n this.isExtensionValid(ufile.name) &&\n this.isFileSizeValid(ufile.size) &&\n this.CustomAddValidation(ufile)\n ) {\n this.uploads.push(new SacUploadFile(ufile));\n } else {\n this.cancel(ufile.uploadId);\n\n if (!this.isExtensionValid(ufile.name)) {\n this.onfileerror.emit('INVALID_EXTENSION');\n } else if (!this.isFileSizeValid(ufile.size)) {\n this.onfileerror.emit('INVALID_FILESIZE');\n }\n }\n } else if (ufile.status === 'cancelled') {\n if (index >= 0) {\n this.uploads.splice(index, 1);\n }\n\n this.SetUploadValue(null);\n } else if (ufile.status === 'complete') {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n this.SetUploadValue(ufile);\n\n const uploadState: ISacUploadEventCompleteState = {\n name: ufile.name,\n size: ufile.size,\n uploadid: this.uploads[index].uploadId,\n };\n\n this.onuploadcomplete.emit(uploadState);\n } else {\n if (index >= 0) {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n }\n }\n\n this.UpdateFileCount();\n }\n\n /**\n * Cancel single file\n * @param uploadId ID of file to cancel\n */\n public pause(uploadId) {\n this.uploadService.control({ action: 'pause', uploadId });\n }\n\n /**\n * Pause all uploads\n */\n public pauseAll() {\n if (this.IsUploading() === true) {\n this.uploadService.control({ action: 'pause' });\n }\n }\n\n /**\n * Sets the bearer token in the upload service\n */\n public setToken(value: string) {\n this.options.token = value;\n }\n\n /**\n * Upload Single File\n *\n * @param uploadId ID of File to Upload\n */\n public upload(uploadId) {\n this.uploadService.control({ action: 'upload', uploadId });\n }\n\n /**\n * Upload all queued Files\n */\n public uploadAll() {\n if (this.IsStateToUpload() === true) {\n this.uploadService.control({ action: 'upload' });\n }\n }\n\n /**\n * Validates the upload control\n * @param c Control to be validated\n */\n public validateData(c: AbstractControl): ValidationErrors | null {\n let error: ValidationErrors | null = null;\n\n if (this.isrequired) {\n error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);\n }\n\n return error;\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n /**\n * get max. files that can be uploaded\n */\n protected abstract GetMaxFiles(): number;\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n /**\n * Updates the file count on the form control\n */\n private UpdateFileCount(): void {\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\n if (this.ngControl) {\n (this.ngControl as unknown as IUploadControl).uploadedfilecount = this.UploadedFileCount();\n }\n }\n\n /**\n * Returns the number of uploaded files\n */\n private UploadedFileCount(): number {\n return this.uploads.filter((itm) => itm.status === 'complete').length;\n }\n\n /**\n * Checks whether the file extension is valid\n *\n * @param filename File name\n */\n private isExtensionValid(filename: string): boolean {\n if (this._allowedtypes === '*') {\n return true;\n }\n\n let isValid = false;\n const extensions: string[] = this._allowedtypes.split(',');\n\n extensions.forEach((itm) => {\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\n isValid = true;\n }\n });\n\n return isValid;\n }\n\n /**\n * Checks if the file is not too large.\n *\n * @param filesize Max file size in bytes\n */\n private isFileSizeValid(filesize: number): boolean {\n if (this.maxfilesize === 0) {\n return true;\n }\n\n return this.maxfilesize >= filesize;\n }\n\n /**\n * Sets the allowed data types for upload\n *\n * @param types Allowed file extensions\n */\n private setAllowedTypes(types: string) {\n // Check if uploadInput is already loaded; is NULL when the directive is set after NgModel in the markup.\n if (this.uploadInput && this.uploadInput.nativeElement) {\n this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);\n }\n\n this.options.allowedTypes = types;\n }\n\n /**\n * Sets the upload endpoint\n * @param url Register URI\n */\n private setEndpoint(url: string) {\n this.options.endpoint = url;\n }\n\n // #endregion Private Methods\n}\n\n/**\n * Class for uploading a file in the upload component\n */\nexport class SacUploadFile {\n // #region Properties\n\n /**\n * Document ID\n */\n public documentid: string;\n\n /**\n * File name\n */\n public name: string;\n\n /**\n * Upload progress\n */\n public progress: number;\n\n /**\n * Upload status\n */\n public status: string;\n\n /**\n * Upload ID\n */\n public uploadId: string;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param ufile Upload state\n */\n constructor(ufile: UploadState) {\n this.uploadId = ufile.uploadId;\n this.name = ufile.name;\n this.progress = ufile.progress;\n this.status = ufile.status;\n this.documentid = null;\n }\n\n // #endregion Constructors\n}\n\n// #endregion Exported Classes\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"6da1c20bd5eea64ab04b12a82295cde4043c594e"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
2
  cov_2icfa0wtpo=function(){return actualCoverage;};}return actualCoverage;}cov_2icfa0wtpo();import{SACVALIDATIONKEY_SERVICE,SacDefaultValidationKeyService}from'../services';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../services/sac-localisation.service';import{Validation}from'../validation';import{SacBaseModelControl}from'./basemodelcontrol';import{Directive,EventEmitter,Input,Output,ViewChild}from'@angular/core';import{IdService,UPLOADX_AJAX,UPLOADX_FACTORY_OPTIONS,UPLOADX_OPTIONS,UploadxService}from'ngx-uploadx';import{of}from'rxjs';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";// #region Exported Classes
3
3
  /**
4
- * Base Klasse für Uploader Control
4
+ * Base class for uploader control
5
5
  */export class SacUploadBase extends SacBaseModelControl{// #endregion Properties
6
6
  // #region Constructors
7
7
  /**
@@ -12,11 +12,11 @@ cov_2icfa0wtpo=function(){return actualCoverage;};}return actualCoverage;}cov_2i
12
12
  * @param ngZone ngzone for handling external scripts
13
13
  */constructor(formlayout,injector,renderer,ngZone){cov_2icfa0wtpo().f[0]++;cov_2icfa0wtpo().s[0]++;super(formlayout,injector);cov_2icfa0wtpo().s[1]++;this.renderer=renderer;cov_2icfa0wtpo().s[2]++;this.ngZone=ngZone;// #region Properties
14
14
  /**
15
- * Erlaubte Dateitypen
15
+ * Allowed file types
16
16
  */cov_2icfa0wtpo().s[3]++;this._allowedtypes='*';/**
17
- * Files automatisch hochladen
17
+ * Automatically uploads files
18
18
  */cov_2icfa0wtpo().s[4]++;this._autoupload=false;/**
19
- * Pausieren von Uploads erlauben
19
+ * Allow pausing of uploads
20
20
  */cov_2icfa0wtpo().s[5]++;this._enablepause=true;/**
21
21
  * API Endpoint
22
22
  */cov_2icfa0wtpo().s[6]++;this._endpoint=null;/**
@@ -24,21 +24,21 @@ cov_2icfa0wtpo=function(){return actualCoverage;};}return actualCoverage;}cov_2i
24
24
  */cov_2icfa0wtpo().s[7]++;this._token=null;/**
25
25
  * Upload Settings
26
26
  */cov_2icfa0wtpo().s[8]++;this.options={};/**
27
- * Handling von neuen Files im Input Control
27
+ * Handling of new files in the input control
28
28
  */cov_2icfa0wtpo().s[9]++;this.fileListener=()=>{cov_2icfa0wtpo().f[1]++;cov_2icfa0wtpo().s[10]++;// exit if files is null or undefined
29
29
  if(!this.uploadInput.nativeElement.files){cov_2icfa0wtpo().b[0][0]++;cov_2icfa0wtpo().s[11]++;return;}else{cov_2icfa0wtpo().b[0][1]++;}cov_2icfa0wtpo().s[12]++;if(this.GetMaxFiles()>0){cov_2icfa0wtpo().b[1][0]++;const maxFiles=(cov_2icfa0wtpo().s[13]++,this.GetMaxFiles()+this.UploadedFileCount());const possibleFiles=(cov_2icfa0wtpo().s[14]++,maxFiles-this.uploadInput.nativeElement.files.length);cov_2icfa0wtpo().s[15]++;if(possibleFiles<0){cov_2icfa0wtpo().b[2][0]++;const dataTransfer=(cov_2icfa0wtpo().s[16]++,new DataTransfer());const files=(cov_2icfa0wtpo().s[17]++,Array.from(this.uploadInput.nativeElement.files).splice(0,this.uploadInput.nativeElement.files.length+possibleFiles));// clone files
30
30
  cov_2icfa0wtpo().s[18]++;files.forEach(file=>{cov_2icfa0wtpo().f[2]++;cov_2icfa0wtpo().s[19]++;return dataTransfer.items.add(file);});cov_2icfa0wtpo().s[20]++;this.uploadInput.nativeElement.files=dataTransfer.files;}else{cov_2icfa0wtpo().b[2][1]++;}}else{cov_2icfa0wtpo().b[1][1]++;}cov_2icfa0wtpo().s[21]++;this.uploadService.handleFiles(this.uploadInput.nativeElement.files);};/**
31
- * Definiert das Control als Required
31
+ * Defines the control as required
32
32
  */cov_2icfa0wtpo().s[22]++;this.isrequired=false;/**
33
- * Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter
33
+ * Max. file size for files that can be uploaded. 0 disables the filter
34
34
  */cov_2icfa0wtpo().s[23]++;this.maxfilesize=0;/**
35
35
  * Event when an error is triggered in the component.
36
36
  */cov_2icfa0wtpo().s[24]++;this.onfileerror=new EventEmitter();/**
37
37
  * Event when a file has been uploaded. The event is triggered for multiple uploads per file.
38
38
  */cov_2icfa0wtpo().s[25]++;this.onuploadcomplete=new EventEmitter();/**
39
- * Resource Key für Validation Message Required bei Control
39
+ * Resource key for validation message 'required' at control
40
40
  */cov_2icfa0wtpo().s[26]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
41
- * Resource Key für Validation Message Required in Validation Summary
41
+ * Resource key for validation message 'required' in validation summary
42
42
  */cov_2icfa0wtpo().s[27]++;this.validationmessagesummaryrequired=this.validationKeyService.ValidationErrorSummaryRequired;cov_2icfa0wtpo().s[28]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());cov_2icfa0wtpo().s[29]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));cov_2icfa0wtpo().s[30]++;this.uploads=[];cov_2icfa0wtpo().s[31]++;this.options.allowedTypes='*';cov_2icfa0wtpo().s[32]++;this.options.concurrency=1;cov_2icfa0wtpo().s[33]++;this.options.token='sometoken';cov_2icfa0wtpo().s[34]++;this.options.autoUpload=this._autoupload;cov_2icfa0wtpo().s[35]++;this.options.withCredentials=true;cov_2icfa0wtpo().s[36]++;this.options.chunkSize=1024*16*8;cov_2icfa0wtpo().s[37]++;this.options.headers=f=>{cov_2icfa0wtpo().f[3]++;cov_2icfa0wtpo().s[38]++;return{'Content-Disposition':`filename=${encodeURI(f.name)}`};};// Init new Service Instance
43
43
  cov_2icfa0wtpo().s[39]++;this.uploadService=new UploadxService(injector.get(UPLOADX_OPTIONS,null),injector.get(UPLOADX_FACTORY_OPTIONS),injector.get(UPLOADX_AJAX),this.ngZone,injector.get(IdService));cov_2icfa0wtpo().s[40]++;this.uploadService.init(this.options);// Subscripe Event for State changes
44
44
  cov_2icfa0wtpo().s[41]++;this.uploadService.events.subscribe(ufile=>{cov_2icfa0wtpo().f[4]++;cov_2icfa0wtpo().s[42]++;return this.onUpload(ufile);});}// #endregion Constructors
@@ -54,57 +54,71 @@ cov_2icfa0wtpo().s[41]++;this.uploadService.events.subscribe(ufile=>{cov_2icfa0w
54
54
  */get IconPause(){cov_2icfa0wtpo().f[8]++;cov_2icfa0wtpo().s[46]++;return this.iconService.UploadComponentPauseIcon;}/**
55
55
  * icon for upload button
56
56
  */get IconUpload(){cov_2icfa0wtpo().f[9]++;cov_2icfa0wtpo().s[47]++;return this.iconService.UploadComponentUploadIcon;}get allowedtypes(){cov_2icfa0wtpo().f[10]++;cov_2icfa0wtpo().s[48]++;return this._allowedtypes;}/**
57
- * Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
58
- */set allowedtypes(types){cov_2icfa0wtpo().f[11]++;cov_2icfa0wtpo().s[49]++;this._allowedtypes=types;cov_2icfa0wtpo().s[50]++;this.setAllowedTypes(types);}get autoupload(){cov_2icfa0wtpo().f[12]++;cov_2icfa0wtpo().s[51]++;return this._autoupload;}/**
59
- * Files nach der Auswahl automatisch hochladen
60
- */set autoupload(v){cov_2icfa0wtpo().f[13]++;cov_2icfa0wtpo().s[52]++;this._autoupload=v;cov_2icfa0wtpo().s[53]++;this.options.autoUpload=v;cov_2icfa0wtpo().s[54]++;this.uploadService.connect(this.options);}get enablepause(){cov_2icfa0wtpo().f[14]++;cov_2icfa0wtpo().s[55]++;return this._enablepause;}/**
61
- * Uploads können unterbrochen werden
62
- */set enablepause(v){cov_2icfa0wtpo().f[15]++;cov_2icfa0wtpo().s[56]++;this._enablepause=v;}get endpoint(){cov_2icfa0wtpo().f[16]++;cov_2icfa0wtpo().s[57]++;return this._endpoint;}/**
63
- * Definiert den Registration Endpoint für Uploads.
57
+ * Allowed file types for upload. Format: ".xxx,.yyy,.zzz"
58
+ */set allowedtypes(types){cov_2icfa0wtpo().f[11]++;cov_2icfa0wtpo().s[49]++;this._allowedtypes=types;cov_2icfa0wtpo().s[50]++;this.setAllowedTypes(types);}/**
59
+ * Indicates whether files should be uploaded automatically after selection.
60
+ * @returns true when auto-upload is enabled.
61
+ */get autoupload(){cov_2icfa0wtpo().f[12]++;cov_2icfa0wtpo().s[51]++;return this._autoupload;}/**
62
+ * Automatically uploads files after selection.
63
+ * @param v true to enable automatic upload.
64
+ */set autoupload(v){cov_2icfa0wtpo().f[13]++;cov_2icfa0wtpo().s[52]++;this._autoupload=v;cov_2icfa0wtpo().s[53]++;this.options.autoUpload=v;cov_2icfa0wtpo().s[54]++;this.uploadService.connect(this.options);}/**
65
+ * Indicates whether upload pause is allowed.
66
+ * @returns true when pause support is active.
67
+ */get enablepause(){cov_2icfa0wtpo().f[14]++;cov_2icfa0wtpo().s[55]++;return this._enablepause;}/**
68
+ * Uploads can be paused.
69
+ * @param v true to allow pausing uploads.
70
+ */set enablepause(v){cov_2icfa0wtpo().f[15]++;cov_2icfa0wtpo().s[56]++;this._enablepause=v;}/**
71
+ * API endpoint for upload registration.
72
+ * @returns configured endpoint URL.
73
+ */get endpoint(){cov_2icfa0wtpo().f[16]++;cov_2icfa0wtpo().s[57]++;return this._endpoint;}/**
74
+ * Defines the registration endpoint for uploads.
75
+ * @param v upload endpoint URL.
64
76
  */set endpoint(v){cov_2icfa0wtpo().f[17]++;cov_2icfa0wtpo().s[58]++;this._endpoint=v;cov_2icfa0wtpo().s[59]++;this.setEndpoint(v);}/**
65
- * Token for Bearer Authentication
77
+ * Bearer authentication token used by upload service.
78
+ * @returns current auth token or null.
66
79
  */get token(){cov_2icfa0wtpo().f[18]++;cov_2icfa0wtpo().s[60]++;return this._token;}/**
67
- * Token for Bearer Authentication
80
+ * Sets Bearer authentication token for service requests.
81
+ * @param v token string or null to clear token.
68
82
  */set token(v){cov_2icfa0wtpo().f[19]++;cov_2icfa0wtpo().s[61]++;this._token=v;cov_2icfa0wtpo().s[62]++;this.setToken(v);}/**
69
- * Name der Datei die Hochgeladen wird
70
- * @returns Observable des Dateinamens.
83
+ * Name of the file being uploaded
84
+ * @returns Observable of the file name.
71
85
  */Filename(){cov_2icfa0wtpo().f[20]++;cov_2icfa0wtpo().s[63]++;if(this.uploads.length>0){cov_2icfa0wtpo().b[3][0]++;cov_2icfa0wtpo().s[64]++;return of(this.uploads[0].name);}else{cov_2icfa0wtpo().b[3][1]++;cov_2icfa0wtpo().s[65]++;return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);}}/**
72
- * Gibt an ob Queue Elemente beinhaltet
73
- * @returns Elemente in der Queue
86
+ * Indicates whether the queue contains elements
87
+ * @returns Elements in the queue
74
88
  */HasQueueItem(){cov_2icfa0wtpo().f[21]++;cov_2icfa0wtpo().s[66]++;return this.uploads.length>0;}/**
75
- * Gibt an ob ein Upload abgeschlossen ist
76
- * @returns Upload erfolgreich
89
+ * Indicates whether an upload is complete
90
+ * @returns Upload successful
77
91
  */HasSuccessUpload(){cov_2icfa0wtpo().f[22]++;cov_2icfa0wtpo().s[67]++;if(this.uploads.length>0){cov_2icfa0wtpo().b[4][0]++;cov_2icfa0wtpo().s[68]++;return this.uploads.filter(itm=>{cov_2icfa0wtpo().f[23]++;cov_2icfa0wtpo().s[69]++;return itm.status!=='complete';}).length===0;}else{cov_2icfa0wtpo().b[4][1]++;cov_2icfa0wtpo().s[70]++;return false;}}/**
78
- * Prüft ob ein Upload pausiert
79
- * @returns Pausierter Upload ist vorhanden
92
+ * Checks if an upload is paused
93
+ * @returns Paused upload is present
80
94
  */IsPaused(){cov_2icfa0wtpo().f[24]++;cov_2icfa0wtpo().s[71]++;return this.uploads.filter(itm=>{cov_2icfa0wtpo().f[25]++;cov_2icfa0wtpo().s[72]++;return itm.status==='paused';}).length>0;}/**
81
- * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.
82
- * @returns Elemente für Upload vorhanden
95
+ * Checks if there are elements in the queue ready for upload.
96
+ * @returns Elements available for upload
83
97
  */IsStateToUpload(){cov_2icfa0wtpo().f[26]++;cov_2icfa0wtpo().s[73]++;return this.uploads.filter(itm=>{cov_2icfa0wtpo().f[27]++;cov_2icfa0wtpo().s[74]++;return(cov_2icfa0wtpo().b[5][0]++,itm.status==='added')||(cov_2icfa0wtpo().b[5][1]++,itm.status==='paused');}).length>0;}/**
84
- * Prüft ob ein Upload eines Files am laufen ist
85
- * @returns Upload ist am laufen
98
+ * Checks if a file upload is in progress
99
+ * @returns Upload is in progress
86
100
  */IsUploading(){cov_2icfa0wtpo().f[28]++;cov_2icfa0wtpo().s[75]++;return this.uploads.filter(itm=>{cov_2icfa0wtpo().f[29]++;cov_2icfa0wtpo().s[76]++;return itm.status==='uploading';}).length>0;}/**
87
- * Gibt den Uploadfortschritt zurück
88
- * @returns Upload Fortschritt. Wert von 0-100
101
+ * Returns the upload progress
102
+ * @returns Upload progress. Value from 0-100
89
103
  */Progress(){cov_2icfa0wtpo().f[30]++;cov_2icfa0wtpo().s[77]++;if(this.uploads.length>0){cov_2icfa0wtpo().b[6][0]++;cov_2icfa0wtpo().s[78]++;return this.uploads[0].progress;}else{cov_2icfa0wtpo().b[6][1]++;cov_2icfa0wtpo().s[79]++;return 0;}}/**
90
104
  * Cancel single upload
91
105
  * @param uploadId ID of File to cancel
92
106
  */cancel(uploadId){cov_2icfa0wtpo().f[31]++;cov_2icfa0wtpo().s[80]++;this.uploadService.control({action:'cancel',uploadId:uploadId});}/**
93
107
  * Cancel all Uploaded files
94
108
  */cancelAll(){cov_2icfa0wtpo().f[32]++;cov_2icfa0wtpo().s[81]++;if(this.HasQueueItem()===true){cov_2icfa0wtpo().b[7][0]++;cov_2icfa0wtpo().s[82]++;this.uploadService.control({action:'cancel'});}else{cov_2icfa0wtpo().b[7][1]++;}}/**
95
- * Destroy des Controls
109
+ * Destroy the control
96
110
  */ngOnDestroy(){cov_2icfa0wtpo().f[33]++;cov_2icfa0wtpo().s[83]++;if(this.listenerFn){cov_2icfa0wtpo().b[8][0]++;cov_2icfa0wtpo().s[84]++;this.listenerFn();}else{cov_2icfa0wtpo().b[8][1]++;}}/**
97
- * Initialisiert das Control
111
+ * Initializes the control
98
112
  */ngOnInit(){cov_2icfa0wtpo().f[34]++;cov_2icfa0wtpo().s[85]++;super.ngOnInit();// Init Event Listener for Input File Control and Handling Files
99
113
  cov_2icfa0wtpo().s[86]++;this.listenerFn=this.renderer.listen(this.uploadInput.nativeElement,'change',this.fileListener);cov_2icfa0wtpo().s[87]++;this.setAllowedTypes(this._allowedtypes);cov_2icfa0wtpo().s[88]++;this.setEndpoint(this._endpoint);cov_2icfa0wtpo().s[89]++;this.setToken(this._token);cov_2icfa0wtpo().s[90]++;if(this._endpoint===null){cov_2icfa0wtpo().b[9][0]++;cov_2icfa0wtpo().s[91]++;throw new Error('endpoint is not defined!');}else{cov_2icfa0wtpo().b[9][1]++;}cov_2icfa0wtpo().s[92]++;this.uploadService.connect(this.options);}/**
100
- * Upload Event
114
+ * Upload event
101
115
  *
102
- * @param uploadsOutStream Upload Item
116
+ * @param uploadsOutStream Upload item
103
117
  */onUpload(ufile){cov_2icfa0wtpo().f[35]++;const index=(cov_2icfa0wtpo().s[93]++,this.uploads.findIndex(f=>{cov_2icfa0wtpo().f[36]++;cov_2icfa0wtpo().s[94]++;return f.uploadId===ufile.uploadId;}));cov_2icfa0wtpo().s[95]++;if((cov_2icfa0wtpo().b[11][0]++,ufile.status==='added')||(cov_2icfa0wtpo().b[11][1]++,ufile.status==='queue')&&(cov_2icfa0wtpo().b[11][2]++,index<0)){cov_2icfa0wtpo().b[10][0]++;cov_2icfa0wtpo().s[96]++;if((cov_2icfa0wtpo().b[13][0]++,this.isExtensionValid(ufile.name))&&(cov_2icfa0wtpo().b[13][1]++,this.isFileSizeValid(ufile.size))&&(cov_2icfa0wtpo().b[13][2]++,this.CustomAddValidation(ufile))){cov_2icfa0wtpo().b[12][0]++;cov_2icfa0wtpo().s[97]++;this.uploads.push(new SacUploadFile(ufile));}else{cov_2icfa0wtpo().b[12][1]++;cov_2icfa0wtpo().s[98]++;this.cancel(ufile.uploadId);cov_2icfa0wtpo().s[99]++;if(!this.isExtensionValid(ufile.name)){cov_2icfa0wtpo().b[14][0]++;cov_2icfa0wtpo().s[100]++;this.onfileerror.emit('INVALID_EXTENSION');}else{cov_2icfa0wtpo().b[14][1]++;cov_2icfa0wtpo().s[101]++;if(!this.isFileSizeValid(ufile.size)){cov_2icfa0wtpo().b[15][0]++;cov_2icfa0wtpo().s[102]++;this.onfileerror.emit('INVALID_FILESIZE');}else{cov_2icfa0wtpo().b[15][1]++;}}}}else{cov_2icfa0wtpo().b[10][1]++;cov_2icfa0wtpo().s[103]++;if(ufile.status==='cancelled'){cov_2icfa0wtpo().b[16][0]++;cov_2icfa0wtpo().s[104]++;if(index>=0){cov_2icfa0wtpo().b[17][0]++;cov_2icfa0wtpo().s[105]++;this.uploads.splice(index,1);}else{cov_2icfa0wtpo().b[17][1]++;}cov_2icfa0wtpo().s[106]++;this.SetUploadValue(null);}else{cov_2icfa0wtpo().b[16][1]++;cov_2icfa0wtpo().s[107]++;if(ufile.status==='complete'){cov_2icfa0wtpo().b[18][0]++;cov_2icfa0wtpo().s[108]++;this.uploads[index].progress=ufile.progress;cov_2icfa0wtpo().s[109]++;this.uploads[index].status=ufile.status;cov_2icfa0wtpo().s[110]++;this.SetUploadValue(ufile);const uploadState=(cov_2icfa0wtpo().s[111]++,{name:ufile.name,size:ufile.size,uploadid:this.uploads[index].uploadId});cov_2icfa0wtpo().s[112]++;this.onuploadcomplete.emit(uploadState);}else{cov_2icfa0wtpo().b[18][1]++;cov_2icfa0wtpo().s[113]++;if(index>=0){cov_2icfa0wtpo().b[19][0]++;cov_2icfa0wtpo().s[114]++;this.uploads[index].progress=ufile.progress;cov_2icfa0wtpo().s[115]++;this.uploads[index].status=ufile.status;}else{cov_2icfa0wtpo().b[19][1]++;}}}}cov_2icfa0wtpo().s[116]++;this.UpdateFileCount();}/**
104
- * Cancel Single File
105
- * @param uploadId ID of File to Cancel
118
+ * Cancel single file
119
+ * @param uploadId ID of file to cancel
106
120
  */pause(uploadId){cov_2icfa0wtpo().f[37]++;cov_2icfa0wtpo().s[117]++;this.uploadService.control({action:'pause',uploadId});}/**
107
- * Pause all Uploads
121
+ * Pause all uploads
108
122
  */pauseAll(){cov_2icfa0wtpo().f[38]++;cov_2icfa0wtpo().s[118]++;if(this.IsUploading()===true){cov_2icfa0wtpo().b[20][0]++;cov_2icfa0wtpo().s[119]++;this.uploadService.control({action:'pause'});}else{cov_2icfa0wtpo().b[20][1]++;}}/**
109
123
  * Sets the bearer token in the upload service
110
124
  */setToken(value){cov_2icfa0wtpo().f[39]++;cov_2icfa0wtpo().s[120]++;this.options.token=value;}/**
@@ -114,35 +128,37 @@ cov_2icfa0wtpo().s[86]++;this.listenerFn=this.renderer.listen(this.uploadInput.n
114
128
  */upload(uploadId){cov_2icfa0wtpo().f[40]++;cov_2icfa0wtpo().s[121]++;this.uploadService.control({action:'upload',uploadId});}/**
115
129
  * Upload all queued Files
116
130
  */uploadAll(){cov_2icfa0wtpo().f[41]++;cov_2icfa0wtpo().s[122]++;if(this.IsStateToUpload()===true){cov_2icfa0wtpo().b[21][0]++;cov_2icfa0wtpo().s[123]++;this.uploadService.control({action:'upload'});}else{cov_2icfa0wtpo().b[21][1]++;}}/**
117
- * Validiert das Upload Control
118
- * @param c Control das validiert werden soll
131
+ * Validates the upload control
132
+ * @param c Control to be validated
119
133
  */validateData(c){cov_2icfa0wtpo().f[42]++;let error=(cov_2icfa0wtpo().s[124]++,null);cov_2icfa0wtpo().s[125]++;if(this.isrequired){cov_2icfa0wtpo().b[22][0]++;cov_2icfa0wtpo().s[126]++;error=Validation.required(this.validationmessagerequired,this.validationmessagesummaryrequired)(c);}else{cov_2icfa0wtpo().b[22][1]++;}cov_2icfa0wtpo().s[127]++;return error;}// #endregion Protected Methods
120
134
  // #region Private Methods
121
- UpdateFileCount(){cov_2icfa0wtpo().f[43]++;cov_2icfa0wtpo().s[128]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
135
+ /**
136
+ * Updates the file count on the form control
137
+ */UpdateFileCount(){cov_2icfa0wtpo().f[43]++;cov_2icfa0wtpo().s[128]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
122
138
  if(this.ngControl){cov_2icfa0wtpo().b[23][0]++;cov_2icfa0wtpo().s[129]++;this.ngControl.uploadedfilecount=this.UploadedFileCount();}else{cov_2icfa0wtpo().b[23][1]++;}}/**
123
139
  * Returns the number of uploaded files
124
140
  */UploadedFileCount(){cov_2icfa0wtpo().f[44]++;cov_2icfa0wtpo().s[130]++;return this.uploads.filter(itm=>{cov_2icfa0wtpo().f[45]++;cov_2icfa0wtpo().s[131]++;return itm.status==='complete';}).length;}/**
125
- * Prüft ob die Dateierweiterung gültig ist
141
+ * Checks whether the file extension is valid
126
142
  *
127
- * @param filename Dateiname
143
+ * @param filename File name
128
144
  */isExtensionValid(filename){cov_2icfa0wtpo().f[46]++;cov_2icfa0wtpo().s[132]++;if(this._allowedtypes==='*'){cov_2icfa0wtpo().b[24][0]++;cov_2icfa0wtpo().s[133]++;return true;}else{cov_2icfa0wtpo().b[24][1]++;}let isValid=(cov_2icfa0wtpo().s[134]++,false);const extensions=(cov_2icfa0wtpo().s[135]++,this._allowedtypes.split(','));cov_2icfa0wtpo().s[136]++;extensions.forEach(itm=>{cov_2icfa0wtpo().f[47]++;cov_2icfa0wtpo().s[137]++;if(filename.toLowerCase().endsWith(itm.toLowerCase())){cov_2icfa0wtpo().b[25][0]++;cov_2icfa0wtpo().s[138]++;isValid=true;}else{cov_2icfa0wtpo().b[25][1]++;}});cov_2icfa0wtpo().s[139]++;return isValid;}/**
129
- * Prüft ob das File nicht zu gross ist.
145
+ * Checks if the file is not too large.
130
146
  *
131
- * @param filesize Max File Size in Bytes
147
+ * @param filesize Max file size in bytes
132
148
  */isFileSizeValid(filesize){cov_2icfa0wtpo().f[48]++;cov_2icfa0wtpo().s[140]++;if(this.maxfilesize===0){cov_2icfa0wtpo().b[26][0]++;cov_2icfa0wtpo().s[141]++;return true;}else{cov_2icfa0wtpo().b[26][1]++;}cov_2icfa0wtpo().s[142]++;return this.maxfilesize>=filesize;}/**
133
- * Setzt die erlaubten Datentypen für den Upload
149
+ * Sets the allowed data types for upload
134
150
  *
135
- * @param types Erlaubte File Extensions
136
- */setAllowedTypes(types){cov_2icfa0wtpo().f[49]++;cov_2icfa0wtpo().s[143]++;// Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
151
+ * @param types Allowed file extensions
152
+ */setAllowedTypes(types){cov_2icfa0wtpo().f[49]++;cov_2icfa0wtpo().s[143]++;// Check if uploadInput is already loaded; is NULL when the directive is set after NgModel in the markup.
137
153
  if((cov_2icfa0wtpo().b[28][0]++,this.uploadInput)&&(cov_2icfa0wtpo().b[28][1]++,this.uploadInput.nativeElement)){cov_2icfa0wtpo().b[27][0]++;cov_2icfa0wtpo().s[144]++;this.renderer.setAttribute(this.uploadInput.nativeElement,'accept',types);}else{cov_2icfa0wtpo().b[27][1]++;}cov_2icfa0wtpo().s[145]++;this.options.allowedTypes=types;}/**
138
- * Setzt den Upload Endpoit
154
+ * Sets the upload endpoint
139
155
  * @param url Register URI
140
156
  */setEndpoint(url){cov_2icfa0wtpo().f[50]++;cov_2icfa0wtpo().s[146]++;this.options.endpoint=url;}}cov_2icfa0wtpo().s[147]++;SacUploadBase.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.Renderer2},{token:i0.NgZone}],target:i0.ɵɵFactoryTarget.Directive});cov_2icfa0wtpo().s[148]++;SacUploadBase.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"13.2.7",type:SacUploadBase,inputs:{isrequired:"isrequired",maxfilesize:"maxfilesize",validationmessagerequired:"validationmessagerequired",validationmessagesummaryrequired:"validationmessagesummaryrequired",allowedtypes:"allowedtypes",autoupload:"autoupload",enablepause:"enablepause",endpoint:"endpoint",token:"token"},outputs:{onfileerror:"onfileerror",onuploadcomplete:"onuploadcomplete"},viewQueries:[{propertyName:"uploadInput",first:true,predicate:["files"],descendants:true,static:true}],usesInheritance:true,ngImport:i0});cov_2icfa0wtpo().s[149]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,decorators:[{type:Directive}],ctorParameters:function(){cov_2icfa0wtpo().f[51]++;cov_2icfa0wtpo().s[150]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.Renderer2},{type:i0.NgZone}];},propDecorators:{uploadInput:[{type:ViewChild,args:['files',{static:true}]}],isrequired:[{type:Input}],maxfilesize:[{type:Input}],onfileerror:[{type:Output}],onuploadcomplete:[{type:Output}],validationmessagerequired:[{type:Input}],validationmessagesummaryrequired:[{type:Input}],allowedtypes:[{type:Input}],autoupload:[{type:Input}],enablepause:[{type:Input}],endpoint:[{type:Input}],token:[{type:Input}]}});/**
141
- * Klasse für den Upload einer Datei in der Upload Component
157
+ * Class for uploading a file in the upload component
142
158
  */export class SacUploadFile{// #endregion Properties
143
159
  // #region Constructors
144
160
  /**
145
- * Konstruktor
146
- * @param ufile Upload Status
147
- */constructor(ufile){cov_2icfa0wtpo().f[52]++;cov_2icfa0wtpo().s[151]++;this.uploadId=ufile.uploadId;cov_2icfa0wtpo().s[152]++;this.name=ufile.name;cov_2icfa0wtpo().s[153]++;this.progress=ufile.progress;cov_2icfa0wtpo().s[154]++;this.status=ufile.status;cov_2icfa0wtpo().s[155]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGVBQWUsRUFHZixjQUFjLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV0QywyQkFBMkI7QUFFM0I7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQXFCLFNBQVEsbUJBQTBCO0lBMEh6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEkxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFD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SztnQkFzR0ssWUFBWTtzQkFEdEIsS0FBSztnQkFjSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFpQkssS0FBSztzQkFEZixLQUFLOztBQTZVVjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ0Qix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQVksS0FBa0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIElkU2VydmljZSxcbiAgICBVUExPQURYX0FKQVgsXG4gICAgVVBMT0FEWF9GQUNUT1JZX09QVElPTlMsXG4gICAgVVBMT0FEWF9PUFRJT05TLFxuICAgIFVwbG9hZFN0YXRlLFxuICAgIFVwbG9hZHhPcHRpb25zLFxuICAgIFVwbG9hZHhTZXJ2aWNlLFxufSBmcm9tICduZ3gtdXBsb2FkeCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuLyoqXG4gKiBCYXNlIEtsYXNzZSBmw7xyIFVwbG9hZGVyIENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcblxuICAgIC8qKlxuICAgICAqIEZpbGVzIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2F1dG91cGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBhdXNpZXJlbiB2b24gVXBsb2FkcyBlcmxhdWJlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFQSSBFbmRwb2ludFxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGluZyB2b24gbmV1ZW4gRmlsZXMgaW0gSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgIC8vIGV4aXQgaWYgZmlsZXMgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkdldE1heEZpbGVzKCkgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGaWxlcyA9IHRoaXMuR2V0TWF4RmlsZXMoKSArIHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZXMgPSBtYXhGaWxlcyAtIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZpbGVzIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IG5ldyBEYXRhVHJhbnNmZXIoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCArIHBvc3NpYmxlRmlsZXNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgZmlsZXNcbiAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGbDvHIgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25maWxlZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIGZvciBtdWx0aXBsZSB1cGxvYWRzIHBlciBmaWxlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbnVwbG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgdm9uIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gICAgICogQHBhcmFtIG5nWm9uZSBuZ3pvbmUgZm9yIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKCkpO1xuXG4gICAgICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gJyonO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSAnc29tZXRva2VuJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB0aGlzLl9hdXRvdXBsb2FkO1xuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmNodW5rU2l6ZSA9IDEwMjQgKiAxNiAqIDg7XG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKGY6IEZpbGUpID0+ICh7XG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluaXQgbmV3IFNlcnZpY2UgSW5zdGFuY2VcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfT1BUSU9OUywgbnVsbCksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9GQUNUT1JZX09QVElPTlMpLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfQUpBWCksXG4gICAgICAgICAgICB0aGlzLm5nWm9uZSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChJZFNlcnZpY2UpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKCh1ZmlsZTogVXBsb2FkU3RhdGUpID0+IHRoaXMub25VcGxvYWQodWZpbGUpKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBmb3IgYnJvd3NlIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGNvbnRpbm91cyBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQ29udGludWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uRGVsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgcGF1c2UgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciB1cGxvYWQgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uVXBsb2FkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhbGxvd2VkdHlwZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuIGbDvHIgZGVuIFVwbG9hZC4gRm9ybWF0OiBcIi54eHgsLnl5eSwuenp6XCJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWxsb3dlZHR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dlZHR5cGVzID0gdHlwZXM7XG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB2O1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGvDtm5uZW4gdW50ZXJicm9jaGVuIHdlcmRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmFibGVwYXVzZSh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZXBhdXNlID0gdjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGVuIFJlZ2lzdHJhdGlvbiBFbmRwb2ludCBmw7xyIFVwbG9hZHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuZHBvaW50KHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbmRwb2ludCA9IHY7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGUuXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxuICAgICAqL1xuICAgIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgUXVldWUgRWxlbWVudGUgYmVpbmhhbHRldFxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNRdWV1ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIGVpbiBVcGxvYWQgYWJnZXNjaGxvc3NlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBwYXVzaWVydFxuICAgICAqIEByZXR1cm5zIFBhdXNpZXJ0ZXIgVXBsb2FkIGlzdCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgZsO8ciBVcGxvYWQgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBlaW5lcyBGaWxlcyBhbSBsYXVmZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgZGVuIFVwbG9hZGZvcnRzY2hyaXR0IHp1csO8Y2tcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgRm9ydHNjaHJpdHQuIFdlcnQgdm9uIDAtMTAwXG4gICAgICovXG4gICAgcHVibGljIFByb2dyZXNzKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSB3ZWxjaGUgZGllIFVwbG9hZCBJRCdzIGluIGRhcyBNb2RlbCBzZXR6dCBvZGVyIGzDtnNjaHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBTZXRVcGxvYWRWYWx1ZShmaWxlOiBVcGxvYWRTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgc2luZ2xlIHVwbG9hZFxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGFsbCBVcGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95IGRlcyBDb250cm9sc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXNpZXJ0IGRhcyBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBJbml0IEV2ZW50IExpc3RlbmVyIGZvciBJbnB1dCBGaWxlIENvbnRyb2wgYW5kIEhhbmRsaW5nIEZpbGVzXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0aGlzLl9hbGxvd2VkdHlwZXMpO1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih0aGlzLl90b2tlbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZHBvaW50IGlzIG5vdCBkZWZpbmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRzT3V0U3RyZWFtIFVwbG9hZCBJdGVtXG4gICAgICovXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudXBsb2Fkcy5maW5kSW5kZXgoKGYpID0+IGYudXBsb2FkSWQgPT09IHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5DdXN0b21BZGRWYWxpZGF0aW9uKHVmaWxlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwodWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0VYVEVOU0lPTicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcblxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdWZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiB1ZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLlVwZGF0ZUZpbGVDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF1c2UgYWxsIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2VBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzVXBsb2FkaW5nKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmVhcmVyIHRva2VuIGluIHRoZSB1cGxvYWQgc2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRUb2tlbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gVXBsb2FkXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogZ2V0IG1heC4gZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgR2V0TWF4RmlsZXMoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkaWUgRGF0ZWllcndlaXRlcnVuZyBnw7xsdGlnIGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlc2l6ZSBNYXggRmlsZSBTaXplIGluIEJ5dGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplVmFsaWQoZmlsZXNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkaWUgZXJsYXVidGVuIERhdGVudHlwZW4gZsO8ciBkZW4gVXBsb2FkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBbGxvd2VkVHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLyoqXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRGaWxlIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIERvY3VtZW50IElEXG4gICAgICovXG4gICAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZ3Jlc3M6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIEtvbnN0cnVrdG9yXG4gICAgICogQHBhcmFtIHVmaWxlIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl19
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmljZmEwd3RwbyIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJJZFNlcnZpY2UiLCJVUExPQURYX0FKQVgiLCJVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyIsIlVQTE9BRFhfT1BUSU9OUyIsIlVwbG9hZHhTZXJ2aWNlIiwib2YiLCJTYWNVcGxvYWRCYXNlIiwiY29uc3RydWN0b3IiLCJmb3JtbGF5b3V0IiwiaW5qZWN0b3IiLCJyZW5kZXJlciIsIm5nWm9uZSIsImYiLCJzIiwiX2FsbG93ZWR0eXBlcyIsIl9hdXRvdXBsb2FkIiwiX2VuYWJsZXBhdXNlIiwiX2VuZHBvaW50IiwiX3Rva2VuIiwib3B0aW9ucyIsImZpbGVMaXN0ZW5lciIsInVwbG9hZElucHV0IiwibmF0aXZlRWxlbWVudCIsImZpbGVzIiwiYiIsIkdldE1heEZpbGVzIiwibWF4RmlsZXMiLCJVcGxvYWRlZEZpbGVDb3VudCIsInBvc3NpYmxlRmlsZXMiLCJsZW5ndGgiLCJkYXRhVHJhbnNmZXIiLCJEYXRhVHJhbnNmZXIiLCJBcnJheSIsImZyb20iLCJzcGxpY2UiLCJmb3JFYWNoIiwiZmlsZSIsIml0ZW1zIiwiYWRkIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwib25maWxlZXJyb3IiLCJvbnVwbG9hZGNvbXBsZXRlIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsInVwbG9hZHMiLCJhbGxvd2VkVHlwZXMiLCJjb25jdXJyZW5jeSIsInRva2VuIiwiYXV0b1VwbG9hZCIsIndpdGhDcmVkZW50aWFscyIsImNodW5rU2l6ZSIsImhlYWRlcnMiLCJlbmNvZGVVUkkiLCJuYW1lIiwiaW5pdCIsImV2ZW50cyIsInN1YnNjcmliZSIsInVmaWxlIiwib25VcGxvYWQiLCJJY29uQnJvd3NlIiwiaWNvblNlcnZpY2UiLCJVcGxvYWRDb21wb25lbnRCcm93c2VJY29uIiwiSWNvbkNvbnRpbnVlIiwiVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uIiwiSWNvbkRlbGV0ZSIsIlVwbG9hZENvbXBvbmVudERlbGV0ZUljb24iLCJJY29uUGF1c2UiLCJVcGxvYWRDb21wb25lbnRQYXVzZUljb24iLCJJY29uVXBsb2FkIiwiVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbiIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50Iiwic2V0VG9rZW4iLCJGaWxlbmFtZSIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsIlNldFVwbG9hZFZhbHVlIiwidXBsb2FkU3RhdGUiLCJ1cGxvYWRpZCIsIlVwZGF0ZUZpbGVDb3VudCIsInBhdXNlIiwicGF1c2VBbGwiLCJ2YWx1ZSIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJmaWxlbmFtZSIsImlzVmFsaWQiLCJleHRlbnNpb25zIiwic3BsaXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgSWRTZXJ2aWNlLFxuICAgIFVQTE9BRFhfQUpBWCxcbiAgICBVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyxcbiAgICBVUExPQURYX09QVElPTlMsXG4gICAgVXBsb2FkU3RhdGUsXG4gICAgVXBsb2FkeE9wdGlvbnMsXG4gICAgVXBsb2FkeFNlcnZpY2UsXG59IGZyb20gJ25neC11cGxvYWR4JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuXG4vKipcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbG93ZWR0eXBlczogc3RyaW5nID0gJyonO1xuXG4gICAgLyoqXG4gICAgICogRmlsZXMgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQVBJIEVuZHBvaW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNldHRpbmdzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgLy8gZXhpdCBpZiBmaWxlcyBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuR2V0TWF4RmlsZXMoKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG1heEZpbGVzID0gdGhpcy5HZXRNYXhGaWxlcygpICsgdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zc2libGVGaWxlcyA9IG1heEZpbGVzIC0gdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRmlsZXMgPCAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykuc3BsaWNlKFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgcG9zc2libGVGaWxlc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBjbG9uZSBmaWxlc1xuICAgICAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZsO8ciBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBEYXRlaWdyw7Zzc2UgZsO8ciBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIGvDtm5uZW4uIDAgZGVha3RpdmllcnQgZGVuIEZpbHRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhmaWxlc2l6ZTogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRzOiBTYWNVcGxvYWRGaWxlW107XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XG5cbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9BSkFYKSxcbiAgICAgICAgICAgIHRoaXMubmdab25lLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KElkU2VydmljZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcblxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsZXMgbmFjaCBkZXIgQXVzd2FobCBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cbiAgICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgZGVyIERhdGVpIGRpZSBIb2NoZ2VsYWRlbiB3aXJkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBkZXMgRGF0ZWluYW1lbnMuXG4gICAgICovXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBRdWV1ZSBFbGVtZW50ZSBiZWluaGFsdGV0XG4gICAgICogQHJldHVybnMgRWxlbWVudGUgaW4gZGVyIFF1ZXVlXG4gICAgICovXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XG4gICAgICogQHJldHVybnMgUGF1c2llcnRlciBVcGxvYWQgaXN0IHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGluIGRlciBRdWV1ZSBFbGVtZW50ZSBkaWUgenVtIFVwbG9hZCBiZXJlaXQgc2luZCB2b3JoYW5kZW4gc2luZC5cbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIGVpbmVzIEZpbGVzIGFtIGxhdWZlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXN0IGFtIGxhdWZlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1VwbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xuICAgICAqIEByZXR1cm5zIFVwbG9hZCBGb3J0c2Nocml0dC4gV2VydCB2b24gMC0xMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcblxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBFdmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIFNpbmdsZSBGaWxlXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBhbGwgVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBnZXQgbWF4LiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBHZXRNYXhGaWxlcygpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgcHJpdmF0ZSBVcGRhdGVGaWxlQ291bnQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID0gdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBVcGxvYWRlZEZpbGVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRpZSBEYXRlaWVyd2VpdGVydW5nIGfDvGx0aWcgaXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0V4dGVuc2lvblZhbGlkKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gdGhpcy5fYWxsb3dlZHR5cGVzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGFzIEZpbGUgbmljaHQgenUgZ3Jvc3MgaXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBGaWxlIFNpemUgaW4gQnl0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlcyBFcmxhdWJ0ZSBGaWxlIEV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdhY2NlcHQnLCB0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGVuIFVwbG9hZCBFbmRwb2l0XG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVuZHBvaW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuXG4vKipcbiAqIEtsYXNzZSBmw7xyIGRlbiBVcGxvYWQgZWluZXIgRGF0ZWkgaW4gZGVyIFVwbG9hZCBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRG9jdW1lbnQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBGb3J0c2Nocml0dFxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XG4gICAgICAgIHRoaXMubmFtZSA9IHVmaWxlLm5hbWU7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRpZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXSwibWFwcGluZ3MiOiJtbHREQW1LSTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0EvSkosT0FBU0Usd0JBQXdCLENBQUVDLDhCQUE4QixLQUFRLGFBQWEsQ0FDdEYsT0FBU0MsdUJBQXVCLENBQUVDLDZCQUE2QixLQUFRLHNDQUFzQyxDQUM3RyxPQUFTQyxVQUFVLEtBQVEsZUFB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
161
+ * Constructor
162
+ * @param ufile Upload state
163
+ */constructor(ufile){cov_2icfa0wtpo().f[52]++;cov_2icfa0wtpo().s[151]++;this.uploadId=ufile.uploadId;cov_2icfa0wtpo().s[152]++;this.name=ufile.name;cov_2icfa0wtpo().s[153]++;this.progress=ufile.progress;cov_2icfa0wtpo().s[154]++;this.status=ufile.status;cov_2icfa0wtpo().s[155]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGVBQWUsRUFHZixjQUFjLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV0QywyQkFBMkI7QUFFM0I7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQXFCLFNBQVEsbUJBQTBCO0lBMEh6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEkxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUU1Qjs7V0FFRztRQUNLLGdCQUFXLEdBQUcsS0FBSyxDQUFD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QUFNO2dCQVdTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFNQyxnQ0FBZ0M7c0JBRHRDLEtBQUs7Z0JBc0dLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBbUJLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBb0JLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBbUJLLEtBQUs7c0JBRGYsS0FBSzs7QUFnVlY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQTRCdEIsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7O09BR0c7SUFDSCxZQUFZLEtBQWtCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcbmltcG9ydCB7IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUnO1xuaW1wb3J0IHsgSVVwbG9hZENvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l1cGxvYWRjb250cm9sJztcbmltcG9ydCB7IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuL2Jhc2Vtb2RlbGNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJZFNlcnZpY2UsXG4gICAgVVBMT0FEWF9BSkFYLFxuICAgIFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TLFxuICAgIFVQTE9BRFhfT1BUSU9OUyxcbiAgICBVcGxvYWRTdGF0ZSxcbiAgICBVcGxvYWR4T3B0aW9ucyxcbiAgICBVcGxvYWR4U2VydmljZSxcbn0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgdXBsb2FkZXIgY29udHJvbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogQWxsb3dlZCBmaWxlIHR5cGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzID0gJyonO1xuXG4gICAgLyoqXG4gICAgICogQXV0b21hdGljYWxseSB1cGxvYWRzIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQWxsb3cgcGF1c2luZyBvZiB1cGxvYWRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlcGF1c2UgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQVBJIEVuZHBvaW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNldHRpbmdzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsaW5nIG9mIG5ldyBmaWxlcyBpbiB0aGUgaW5wdXQgY29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgIC8vIGV4aXQgaWYgZmlsZXMgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkdldE1heEZpbGVzKCkgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGaWxlcyA9IHRoaXMuR2V0TWF4RmlsZXMoKSArIHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZXMgPSBtYXhGaWxlcyAtIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZpbGVzIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IG5ldyBEYXRhVHJhbnNmZXIoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCArIHBvc3NpYmxlRmlsZXNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgZmlsZXNcbiAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBjb250cm9sIGFzIHJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGZvciBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBmaWxlIHNpemUgZm9yIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkLiAwIGRpc2FibGVzIHRoZSBmaWx0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemUgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhbiBlcnJvciBpcyB0cmlnZ2VyZWQgaW4gdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGEgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCBmb3IgbXVsdGlwbGUgdXBsb2FkcyBwZXIgZmlsZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb251cGxvYWRjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEFycmF5IG9mIHVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2Uga2V5IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgJ3JlcXVpcmVkJyBhdCBjb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBrZXkgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSAncmVxdWlyZWQnIGluIHZhbGlkYXRpb24gc3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXG4gICAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcblxuICAgICAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxuICAgICAgICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRzID0gW107XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9ICcqJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5ID0gMTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdGhpcy5fYXV0b3VwbG9hZDtcbiAgICAgICAgdGhpcy5vcHRpb25zLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xuICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IChmOiBGaWxlKSA9PiAoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZSA9IG5ldyBVcGxvYWR4U2VydmljZShcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX09QVElPTlMsIG51bGwpLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TKSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX0FKQVgpLFxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUsXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoSWRTZXJ2aWNlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFN1YnNjcmlwZSBFdmVudCBmb3IgU3RhdGUgY2hhbmdlc1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PiB0aGlzLm9uVXBsb2FkKHVmaWxlKSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIEljb24gZm9yIGJyb3dzZSBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Ccm93c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBjb250aW5vdXMgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkNvbnRpbnVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBkZWxldGUgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkRlbGV0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnREZWxldGVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHBhdXNlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25QYXVzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRQYXVzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgdXBsb2FkIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblVwbG9hZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRVcGxvYWRJY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWxsb3dlZHR5cGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxsb3dlZCBmaWxlIHR5cGVzIGZvciB1cGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FsbG93ZWR0eXBlcyA9IHR5cGVzO1xuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0eXBlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgZmlsZXMgc2hvdWxkIGJlIHVwbG9hZGVkIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgc2VsZWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHRydWUgd2hlbiBhdXRvLXVwbG9hZCBpcyBlbmFibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXV0b21hdGljYWxseSB1cGxvYWRzIGZpbGVzIGFmdGVyIHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gdiB0cnVlIHRvIGVuYWJsZSBhdXRvbWF0aWMgdXBsb2FkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhdXRvdXBsb2FkKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB1cGxvYWQgcGF1c2UgaXMgYWxsb3dlZC5cbiAgICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gcGF1c2Ugc3VwcG9ydCBpcyBhY3RpdmUuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZHMgY2FuIGJlIHBhdXNlZC5cbiAgICAgKiBAcGFyYW0gdiB0cnVlIHRvIGFsbG93IHBhdXNpbmcgdXBsb2Fkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9lbmFibGVwYXVzZSA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQVBJIGVuZHBvaW50IGZvciB1cGxvYWQgcmVnaXN0cmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGNvbmZpZ3VyZWQgZW5kcG9pbnQgVVJMLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHJlZ2lzdHJhdGlvbiBlbmRwb2ludCBmb3IgdXBsb2Fkcy5cbiAgICAgKiBAcGFyYW0gdiB1cGxvYWQgZW5kcG9pbnQgVVJMLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZW5kcG9pbnQgPSB2O1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJlYXJlciBhdXRoZW50aWNhdGlvbiB0b2tlbiB1c2VkIGJ5IHVwbG9hZCBzZXJ2aWNlLlxuICAgICAqIEByZXR1cm5zIGN1cnJlbnQgYXV0aCB0b2tlbiBvciBudWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIEJlYXJlciBhdXRoZW50aWNhdGlvbiB0b2tlbiBmb3Igc2VydmljZSByZXF1ZXN0cy5cbiAgICAgKiBAcGFyYW0gdiB0b2tlbiBzdHJpbmcgb3IgbnVsbCB0byBjbGVhciB0b2tlbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGNhbiBiZSB1c2VkIGZvciBjb250cm9scyB0byBwZXJmb3JtIGFkZGl0aW9uYWwgdmFsaWRhdGlvbnMgd2hlbiBhZGRpbmcgZmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgdGhhdCB3YXMgYWRkZWQuXG4gICAgICogQHJldHVybnMgVmFsaWRhdGlvbiBpcyBzdWNjZXNzZnVsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEN1c3RvbUFkZFZhbGlkYXRpb24oZmlsZTogVXBsb2FkU3RhdGUpOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZmlsZSBiZWluZyB1cGxvYWRlZFxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIGZpbGUgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgRmlsZW5hbWUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRzWzBdLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcXVldWUgY29udGFpbnMgZWxlbWVudHNcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50cyBpbiB0aGUgcXVldWVcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgYW4gdXBsb2FkIGlzIGNvbXBsZXRlXG4gICAgICogQHJldHVybnMgVXBsb2FkIHN1Y2Nlc3NmdWxcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYW4gdXBsb2FkIGlzIHBhdXNlZFxuICAgICAqIEByZXR1cm5zIFBhdXNlZCB1cGxvYWQgaXMgcHJlc2VudFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGFyZSBlbGVtZW50cyBpbiB0aGUgcXVldWUgcmVhZHkgZm9yIHVwbG9hZC5cbiAgICAgKiBAcmV0dXJucyBFbGVtZW50cyBhdmFpbGFibGUgZm9yIHVwbG9hZFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgZmlsZSB1cGxvYWQgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVwbG9hZCBwcm9ncmVzc1xuICAgICAqIEByZXR1cm5zIFVwbG9hZCBwcm9ncmVzcy4gVmFsdWUgZnJvbSAwLTEwMFxuICAgICAqL1xuICAgIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IHNldHMgb3IgZGVsZXRlcyB0aGUgdXBsb2FkIElEcyBpbiB0aGUgbW9kZWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgb2YgZmlsZSBJRHNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHNpbmdsZSB1cGxvYWRcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBjYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJywgdXBsb2FkSWQ6IHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBhbGwgVXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5IYXNRdWV1ZUl0ZW0oKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSB0aGUgY29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyB0aGUgY29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xuICAgICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLmZpbGVMaXN0ZW5lcik7XG5cbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModGhpcy5fYWxsb3dlZHR5cGVzKTtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh0aGlzLl9lbmRwb2ludCk7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odGhpcy5fdG9rZW4pO1xuXG4gICAgICAgIGlmICh0aGlzLl9lbmRwb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVwbG9hZHMuZmluZEluZGV4KChmKSA9PiBmLnVwbG9hZElkID09PSB1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCAodWZpbGUuc3RhdHVzID09PSAncXVldWUnICYmIGluZGV4IDwgMCkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5wdXNoKG5ldyBTYWNVcGxvYWRGaWxlKHVmaWxlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9FWFRFTlNJT04nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRklMRVNJWkUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY2FuY2VsbGVkJykge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZSh1ZmlsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFN0YXRlOiBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogdWZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB1cGxvYWRpZDogdGhpcy51cGxvYWRzW2luZGV4XS51cGxvYWRJZCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMub251cGxvYWRjb21wbGV0ZS5lbWl0KHVwbG9hZFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgc2luZ2xlIGZpbGVcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgZmlsZSB0byBjYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2UodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdXNlIGFsbCB1cGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJlYXJlciB0b2tlbiBpbiB0aGUgdXBsb2FkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2luZ2xlIEZpbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIFVwbG9hZFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWQodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgYWxsIHF1ZXVlZCBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzU3RhdGVUb1VwbG9hZCgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgdGhlIHVwbG9hZCBjb250cm9sXG4gICAgICogQHBhcmFtIGMgQ29udHJvbCB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogZ2V0IG1heC4gZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgR2V0TWF4RmlsZXMoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGZpbGUgY291bnQgb24gdGhlIGZvcm0gY29udHJvbFxuICAgICAqL1xuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyB2YWxpZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIEZpbGUgbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBmaWxlIGlzIG5vdCB0b28gbGFyZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ZmlsZXNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXNpemUgPj0gZmlsZXNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYWxsb3dlZCBkYXRhIHR5cGVzIGZvciB1cGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlcyBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdXBsb2FkSW5wdXQgaXMgYWxyZWFkeSBsb2FkZWQ7IGlzIE5VTEwgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIHNldCBhZnRlciBOZ01vZGVsIGluIHRoZSBtYXJrdXAuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHVwbG9hZCBlbmRwb2ludFxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgdXBsb2FkaW5nIGEgZmlsZSBpbiB0aGUgdXBsb2FkIGNvbXBvbmVudFxuICovXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBEb2N1bWVudCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyBkb2N1bWVudGlkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIG5hbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIHByb2dyZXNzXG4gICAgICovXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgc3RhdHVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXR1czogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIElEXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgc3RhdGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl19
164
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmljZmEwd3RwbyIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJJZFNlcnZpY2UiLCJVUExPQURYX0FKQVgiLCJVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyIsIlVQTE9BRFhfT1BUSU9OUyIsIlVwbG9hZHhTZXJ2aWNlIiwib2YiLCJTYWNVcGxvYWRCYXNlIiwiY29uc3RydWN0b3IiLCJmb3JtbGF5b3V0IiwiaW5qZWN0b3IiLCJyZW5kZXJlciIsIm5nWm9uZSIsImYiLCJzIiwiX2FsbG93ZWR0eXBlcyIsIl9hdXRvdXBsb2FkIiwiX2VuYWJsZXBhdXNlIiwiX2VuZHBvaW50IiwiX3Rva2VuIiwib3B0aW9ucyIsImZpbGVMaXN0ZW5lciIsInVwbG9hZElucHV0IiwibmF0aXZlRWxlbWVudCIsImZpbGVzIiwiYiIsIkdldE1heEZpbGVzIiwibWF4RmlsZXMiLCJVcGxvYWRlZEZpbGVDb3VudCIsInBvc3NpYmxlRmlsZXMiLCJsZW5ndGgiLCJkYXRhVHJhbnNmZXIiLCJEYXRhVHJhbnNmZXIiLCJBcnJheSIsImZyb20iLCJzcGxpY2UiLCJmb3JFYWNoIiwiZmlsZSIsIml0ZW1zIiwiYWRkIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwib25maWxlZXJyb3IiLCJvbnVwbG9hZGNvbXBsZXRlIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsInVwbG9hZHMiLCJhbGxvd2VkVHlwZXMiLCJjb25jdXJyZW5jeSIsInRva2VuIiwiYXV0b1VwbG9hZCIsIndpdGhDcmVkZW50aWFscyIsImNodW5rU2l6ZSIsImhlYWRlcnMiLCJlbmNvZGVVUkkiLCJuYW1lIiwiaW5pdCIsImV2ZW50cyIsInN1YnNjcmliZSIsInVmaWxlIiwib25VcGxvYWQiLCJJY29uQnJvd3NlIiwiaWNvblNlcnZpY2UiLCJVcGxvYWRDb21wb25lbnRCcm93c2VJY29uIiwiSWNvbkNvbnRpbnVlIiwiVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uIiwiSWNvbkRlbGV0ZSIsIlVwbG9hZENvbXBvbmVudERlbGV0ZUljb24iLCJJY29uUGF1c2UiLCJVcGxvYWRDb21wb25lbnRQYXVzZUljb24iLCJJY29uVXBsb2FkIiwiVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbiIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50Iiwic2V0VG9rZW4iLCJGaWxlbmFtZSIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsIlNldFVwbG9hZFZhbHVlIiwidXBsb2FkU3RhdGUiLCJ1cGxvYWRpZCIsIlVwZGF0ZUZpbGVDb3VudCIsInBhdXNlIiwicGF1c2VBbGwiLCJ2YWx1ZSIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJmaWxlbmFtZSIsImlzVmFsaWQiLCJleHRlbnNpb25zIiwic3BsaXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgSWRTZXJ2aWNlLFxuICAgIFVQTE9BRFhfQUpBWCxcbiAgICBVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyxcbiAgICBVUExPQURYX09QVElPTlMsXG4gICAgVXBsb2FkU3RhdGUsXG4gICAgVXBsb2FkeE9wdGlvbnMsXG4gICAgVXBsb2FkeFNlcnZpY2UsXG59IGZyb20gJ25neC11cGxvYWR4JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHVwbG9hZGVyIGNvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEFsbG93ZWQgZmlsZSB0eXBlc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbG93ZWR0eXBlcyA9ICcqJztcblxuICAgIC8qKlxuICAgICAqIEF1dG9tYXRpY2FsbHkgdXBsb2FkcyBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2F1dG91cGxvYWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFsbG93IHBhdXNpbmcgb2YgdXBsb2Fkc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFQSSBFbmRwb2ludFxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGluZyBvZiBuZXcgZmlsZXMgaW4gdGhlIGlucHV0IGNvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAvLyBleGl0IGlmIGZpbGVzIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgIGlmICghdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5HZXRNYXhGaWxlcygpID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZXMgPSB0aGlzLkdldE1heEZpbGVzKCkgKyB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVzID0gbWF4RmlsZXMgLSB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAocG9zc2libGVGaWxlcyA8IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggKyBwb3NzaWJsZUZpbGVzXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIGNsb25lIGZpbGVzXG4gICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4gZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZXModGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY29udHJvbCBhcyByZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmb3IgZmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIE1heC4gZmlsZSBzaXplIGZvciBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC4gMCBkaXNhYmxlcyB0aGUgZmlsdGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1heGZpbGVzaXplID0gMDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiB1cGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIGtleSBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlICdyZXF1aXJlZCcgYXQgY29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2Uga2V5IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgJ3JlcXVpcmVkJyBpbiB2YWxpZGF0aW9uIHN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XG5cbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9BSkFYKSxcbiAgICAgICAgICAgIHRoaXMubmdab25lLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KElkU2VydmljZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcblxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsbG93ZWQgZmlsZSB0eXBlcyBmb3IgdXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGZpbGVzIHNob3VsZCBiZSB1cGxvYWRlZCBhdXRvbWF0aWNhbGx5IGFmdGVyIHNlbGVjdGlvbi5cbiAgICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gYXV0by11cGxvYWQgaXMgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF1dG9tYXRpY2FsbHkgdXBsb2FkcyBmaWxlcyBhZnRlciBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIHYgdHJ1ZSB0byBlbmFibGUgYXV0b21hdGljIHVwbG9hZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdXBsb2FkIHBhdXNlIGlzIGFsbG93ZWQuXG4gICAgICogQHJldHVybnMgdHJ1ZSB3aGVuIHBhdXNlIHN1cHBvcnQgaXMgYWN0aXZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGNhbiBiZSBwYXVzZWQuXG4gICAgICogQHBhcmFtIHYgdHJ1ZSB0byBhbGxvdyBwYXVzaW5nIHVwbG9hZHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFQSSBlbmRwb2ludCBmb3IgdXBsb2FkIHJlZ2lzdHJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBjb25maWd1cmVkIGVuZHBvaW50IFVSTC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSByZWdpc3RyYXRpb24gZW5kcG9pbnQgZm9yIHVwbG9hZHMuXG4gICAgICogQHBhcmFtIHYgdXBsb2FkIGVuZHBvaW50IFVSTC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWFyZXIgYXV0aGVudGljYXRpb24gdG9rZW4gdXNlZCBieSB1cGxvYWQgc2VydmljZS5cbiAgICAgKiBAcmV0dXJucyBjdXJyZW50IGF1dGggdG9rZW4gb3IgbnVsbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBCZWFyZXIgYXV0aGVudGljYXRpb24gdG9rZW4gZm9yIHNlcnZpY2UgcmVxdWVzdHMuXG4gICAgICogQHBhcmFtIHYgdG9rZW4gc3RyaW5nIG9yIG51bGwgdG8gY2xlYXIgdG9rZW4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBjYW4gYmUgdXNlZCBmb3IgY29udHJvbHMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIHZhbGlkYXRpb25zIHdoZW4gYWRkaW5nIGZpbGVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIHRoYXQgd2FzIGFkZGVkLlxuICAgICAqIEByZXR1cm5zIFZhbGlkYXRpb24gaXMgc3VjY2Vzc2Z1bFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZpbGUgYmVpbmcgdXBsb2FkZWRcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBmaWxlIG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHF1ZXVlIGNvbnRhaW5zIGVsZW1lbnRzXG4gICAgICogQHJldHVybnMgRWxlbWVudHMgaW4gdGhlIHF1ZXVlXG4gICAgICovXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGFuIHVwbG9hZCBpcyBjb21wbGV0ZVxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBzdWNjZXNzZnVsXG4gICAgICovXG4gICAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlJykubGVuZ3RoID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIHVwbG9hZCBpcyBwYXVzZWRcbiAgICAgKiBAcmV0dXJucyBQYXVzZWQgdXBsb2FkIGlzIHByZXNlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGVyZSBhcmUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlIHJlYWR5IGZvciB1cGxvYWQuXG4gICAgICogQHJldHVybnMgRWxlbWVudHMgYXZhaWxhYmxlIGZvciB1cGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGZpbGUgdXBsb2FkIGlzIGluIHByb2dyZXNzXG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzIGluIHByb2dyZXNzXG4gICAgICovXG4gICAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAndXBsb2FkaW5nJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB1cGxvYWQgcHJvZ3Jlc3NcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgcHJvZ3Jlc3MuIFZhbHVlIGZyb20gMC0xMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBzZXRzIG9yIGRlbGV0ZXMgdGhlIHVwbG9hZCBJRHMgaW4gdGhlIG1vZGVsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBUeXBlIG9mIGZpbGUgSURzXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgdGhlIGNvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyRm4pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcblxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBldmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHNpbmdsZSBmaWxlXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIGZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBhbGwgdXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIHRoZSB1cGxvYWQgY29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgdG8gYmUgdmFsaWRhdGVkXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIGdldCBtYXguIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IEdldE1heEZpbGVzKCk6IG51bWJlcjtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBmaWxlIGNvdW50IG9uIHRoZSBmb3JtIGNvbnRyb2xcbiAgICAgKi9cbiAgICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJVXBsb2FkQ29udHJvbCkudXBsb2FkZWRmaWxlY291bnQgPSB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZmlsZSBleHRlbnNpb24gaXMgdmFsaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZSBGaWxlIG5hbWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fYWxsb3dlZHR5cGVzID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLl9hbGxvd2VkdHlwZXMuc3BsaXQoJywnKTtcblxuICAgICAgICBleHRlbnNpb25zLmZvckVhY2goKGl0bSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoaXRtLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZmlsZSBpcyBub3QgdG9vIGxhcmdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBmaWxlIHNpemUgaW4gYnl0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFsbG93ZWQgZGF0YSB0eXBlcyBmb3IgdXBsb2FkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZXMgQWxsb3dlZCBmaWxlIGV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHVwbG9hZElucHV0IGlzIGFscmVhZHkgbG9hZGVkOyBpcyBOVUxMIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBzZXQgYWZ0ZXIgTmdNb2RlbCBpbiB0aGUgbWFya3VwLlxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dCAmJiB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2FjY2VwdCcsIHR5cGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSB0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB1cGxvYWQgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmVuZHBvaW50ID0gdXJsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHVwbG9hZGluZyBhIGZpbGUgaW4gdGhlIHVwbG9hZCBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRG9jdW1lbnQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBuYW1lXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBwcm9ncmVzc1xuICAgICAqL1xuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIHN0YXR1c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIHN0YXRlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkSWQgPSB1ZmlsZS51cGxvYWRJZDtcbiAgICAgICAgdGhpcy5uYW1lID0gdWZpbGUubmFtZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgdGhpcy5kb2N1bWVudGlkID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xufVxuXG4vLyAjZW5kcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcbiJdLCJtYXBwaW5ncyI6InlsdURBbUtJO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQS9KSixPQUFTRSx3QkFBd0IsQ0FBRUMsOEJBQThCLEtBQVEsYUFBYSxDQUN0RixPQUFTQyx1QkFBdUIsQ0FBRUMsNkJBQTZCLEtBQVEsc0NBQXNDLENBQzdHLE9BQVNDLFVBQVUsS0FBUSxlQUFlLENBQzFDLE9BQVNDLG1CQUFtQixLQUFRLG9CQUFvQixDQUN4RCxPQUNJQyxTQUFTLENBRVRDLFlBQVksQ0FFWkMsS0FBSyxDQUlMQyxNQUFNLENBRU5DLFNBQVMsS0FDTixlQUFlLENBRXRCLE9BQ0lDLFNBQVMsQ0FDVEMsWUFBWSxDQUNaQyx1QkFBdUIsQ0FDdkJDLGVBQWUsQ0FHZkMsY0FBYyxLQUNYLGFBQWEsQ0FDcEIsT0FBcUJDLEVBQUUsS0FBUSxNQUFNLEMsa0ZBRXJDO0FBRUE7O0dBSUEsTUFBTSxNQUFnQixDQUFBQyxhQUFxQixRQUFRLENBQUFaLG1CQUEwQixDQTBIekU7QUFFQTtBQUVBOzs7Ozs7T0FPQWEsWUFDSUMsVUFBK0IsQ0FDL0JDLFFBQWtCLENBQ1ZDLFFBQW1CLENBQ25CQyxNQUFjLEVBQUF4QixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxNQUV0QixLQUFLLENBQUNMLFVBQVUsQ0FBRUMsUUFBUSxDQUFDLENBQUN0QixjQUFBLEdBQUEwQixDQUFBLE1BSHBCLEtBQUFILFFBQVEsQ0FBUkEsUUFBUSxDQUFXdkIsY0FBQSxHQUFBMEIsQ0FBQSxNQUNuQixLQUFBRixNQUFNLENBQU5BLE1BQU0sQ0F4SWxCO0FBRUE7O1dBQUF4QixjQUFBLEdBQUEwQixDQUFBLE1BR1EsS0FBQUMsYUFBYSxDQUFHLEdBQUcsQ0FFM0I7O1dBQUEzQixjQUFBLEdBQUEwQixDQUFBLE1BR1EsS0FBQUUsV0FBVyxDQUFHLEtBQUssQ0FFM0I7O1dBQUE1QixjQUFBLEdBQUEwQixDQUFBLE1BR1EsS0FBQUcsWUFBWSxDQUFHLElBQUksQ0FFM0I7O1dBQUE3QixjQUFBLEdBQUEwQixDQUFBLE1BR1EsS0FBQUksU0FBUyxDQUFXLElBQUksQ0FFaEM7O1dBQUE5QixjQUFBLEdBQUEwQixDQUFBLE1BR1EsS0FBQUssTUFBTSxDQUFrQixJQUFJLENBRXBDOztXQUFBL0IsY0FBQSxHQUFBMEIsQ0FBQSxNQUdRLEtBQUFNLE9BQU8sQ0FBbUIsRUFBRSxDQWFwQzs7V0FBQWhDLGNBQUEsR0FBQTBCLENBQUEsTUFHTyxLQUFBTyxZQUFZLENBQUcsSUFBSyxDQUFBakMsY0FBQSxHQUFBeUIsQ0FBQSxLQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsT0FDdkI7QUFDQSxHQUFJLENBQUMsSUFBSSxDQUFDUSxXQUFXLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSyxDQUFFLENBQUFwQyxjQUFBLEdBQUFxQyxDQUFBLFFBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxPQUN2QyxPLENBQ0gsS0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsVUFBQXJDLGNBQUEsR0FBQTBCLENBQUEsT0FFRCxHQUFJLElBQUksQ0FBQ1ksV0FBVyxFQUFFLENBQUcsQ0FBQyxDQUFFLENBQUF0QyxjQUFBLEdBQUFxQyxDQUFBLFNBQ3hCLEtBQU0sQ0FBQUUsUUFBUSxFQUFBdkMsY0FBQSxHQUFBMEIsQ0FBQSxPQUFHLElBQUksQ0FBQ1ksV0FBVyxFQUFFLENBQUcsSUFBSSxDQUFDRSxpQkFBaUIsRUFBRSxFQUM5RCxLQUFNLENBQUFDLGFBQWEsRUFBQXpDLGNBQUEsR0FBQTBCLENBQUEsT0FBR2EsUUFBUSxDQUFHLElBQUksQ0FBQ0wsV0FBVyxDQUFDQyxhQUFhLENBQUNDLEtBQUssQ0FBQ00sTUFBTSxFQUFDMUMsY0FBQSxHQUFBMEIsQ0FBQSxPQUU3RSxHQUFJZSxhQUFhLENBQUcsQ0FBQyxDQUFFLENBQUF6QyxjQUFBLEdBQUFxQyxDQUFBLFNBQ25CLEtBQU0sQ0FBQU0sWUFBWSxFQUFBM0MsY0FBQSxHQUFBMEIsQ0FBQSxPQUFHLEdBQUksQ0FBQWtCLFlBQVksRUFBRSxFQUV2QyxLQUFNLENBQUFSLEtBQUssRUFBQXBDLGNBQUEsR0FBQTBCLENBQUEsT0FBR21CLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ1osV0FBVyxDQUFDQyxhQUFhLENBQUNDLEtBQUssQ0FBQyxDQUFDVyxNQUFNLENBQ2pFLENBQUMsQ0FDRCxJQUFJLENBQUNiLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDQyxLQUFLLENBQUNNLE1BQU0sQ0FBR0QsYUFBYSxDQUM5RCxFQUVEO0FBQUF6QyxjQUFBLEdBQUEwQixDQUFBLE9BQ0FVLEtBQUssQ0FBQ1ksT0FBTyxDQUFFQyxJQUFVLEVBQUssQ0FBQWpELGNBQUEsR0FBQXlCLENBQUEsS0FBQXpCLENBQUEsaUJBQUEwQixDQUFBLGNBQUFpQixZQUFZLENBQUNPLEtBQUssQ0FBQ0MsR0FBRyxDQUFDRixJQUFJLENBQUMsQ0FBRCxDQUFDLENBQUMsQ0FBQ2pELGNBQUEsR0FBQTBCLENBQUEsT0FFNUQsSUFBSSxDQUFDUSxXQUFXLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSyxDQUFHTyxZQUFZLENBQUNQLEtBQUssQyxDQUM1RCxLQUFBcEMsY0FBQSxHQUFBcUMsQ0FBQSxVLENBQ0osS0FBQXJDLGNBQUEsR0FBQXFDLENBQUEsVUFBQXJDLGNBQUEsR0FBQTBCLENBQUEsT0FFRCxJQUFJLENBQUMwQixhQUFhLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENBQUNuQixXQUFXLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSyxDQUFDLENBQ3hFLENBQUMsQ0FFRDs7V0FBQXBDLGNBQUEsR0FBQTBCLENBQUEsT0FHZ0IsS0FBQTRCLFVBQVUsQ0FBRyxLQUFLLENBWWxDOztXQUFBdEQsY0FBQSxHQUFBMEIsQ0FBQSxPQUdnQixLQUFBNkIsV0FBVyxDQUFHLENBQUMsQ0FFL0I7O1dBQUF2RCxjQUFBLEdBQUEwQixDQUFBLE9BR2lCLEtBQUE4QixXQUFXLENBQUcsR0FBSSxDQUFBL0MsWUFBWSxFQUFVLENBRXpEOztXQUFBVCxjQUFBLEdBQUEwQixDQUFBLE9BSU8sS0FBQStCLGdCQUFnQixDQUFHLEdBQUksQ0FBQWhELFlBQVksRUFBZ0MsQ0FPMUU7O1dBQUFULGNBQUEsR0FBQTBCLENBQUEsT0FHZ0IsS0FBQWdDLHlCQUF5QixDQUFXLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNDLHVCQUF1QixDQUVyRzs7V0FBQTVELGNBQUEsR0FBQTBCLENBQUEsT0FJTyxLQUFBbUMsZ0NBQWdDLENBQVcsSUFBSSxDQUFDRixvQkFBb0IsQ0FBQ0csOEJBQThCLENBQUM5RCxjQUFBLEdBQUEwQixDQUFBLE9BcUJ2RyxJQUFJLENBQUNpQyxvQkFBb0IsQ0FBR3JDLFFBQVEsQ0FBQ3lDLEdBQUcsQ0FBQzdELHdCQUF3QixDQUFFLEdBQUksQ0FBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDSCxjQUFBLEdBQUEwQixDQUFBLE9BRXpHLElBQUksQ0FBQ3NDLGtCQUFrQixDQUFHMUMsUUFBUSxDQUFDeUMsR0FBRyxDQUNsQzNELHVCQUF1QixDQUN2QixHQUFJLENBQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQ3NELG9CQUFvQixDQUFDLENBQy9ELENBQUMzRCxjQUFBLEdBQUEwQixDQUFBLE9BRUYsSUFBSSxDQUFDdUMsT0FBTyxDQUFHLEVBQUUsQ0FBQ2pFLGNBQUEsR0FBQTBCLENBQUEsT0FFbEIsSUFBSSxDQUFDTSxPQUFPLENBQUNrQyxZQUFZLENBQUcsR0FBRyxDQUFDbEUsY0FBQSxHQUFBMEIsQ0FBQSxPQUNoQyxJQUFJLENBQUNNLE9BQU8sQ0FBQ21DLFdBQVcsQ0FBRyxDQUFDLENBQUNuRSxjQUFBLEdBQUEwQixDQUFBLE9BQzdCLElBQUksQ0FBQ00sT0FBTyxDQUFDb0MsS0FBSyxDQUFHLFdBQVcsQ0FBQ3BFLGNBQUEsR0FBQTBCLENBQUEsT0FDakMsSUFBSSxDQUFDTSxPQUFPLENBQUNxQyxVQUFVLENBQUcsSUFBSSxDQUFDekMsV0FBVyxDQUFDNUIsY0FBQSxHQUFBMEIsQ0FBQSxPQUMzQyxJQUFJLENBQUNNLE9BQU8sQ0FBQ3NDLGVBQWUsQ0FBRyxJQUFJLENBQUN0RSxjQUFBLEdBQUEwQixDQUFBLE9BQ3BDLElBQUksQ0FBQ00sT0FBTyxDQUFDdUMsU0FBUyxDQUFHLElBQUksQ0FBRyxFQUFFLENBQUcsQ0FBQyxDQUFDdkUsY0FBQSxHQUFBMEIsQ0FBQSxPQUN2QyxJQUFJLENBQUNNLE9BQU8sQ0FBQ3dDLE9BQU8sQ0FBSS9DLENBQU8sRUFBTSxDQUFBekIsY0FBQSxHQUFBeUIsQ0FBQSxLQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsY0FDakMscUJBQXFCLENBQUUsWUFBWStDLFNBQVMsQ0FBQ2hELENBQUMsQ0FBQ2lELElBQUksQ0FBQyxFLENBQ3ZELEMsQ0FBQyxDQUVGO0FBQUExRSxjQUFBLEdBQUEwQixDQUFBLE9BQ0EsSUFBSSxDQUFDMEIsYUFBYSxDQUFHLEdBQUksQ0FBQW5DLGNBQWMsQ0FDbkNLLFFBQVEsQ0FBQ3lDLEdBQUcsQ0FBQy9DLGVBQWUsQ0FBRSxJQUFJLENBQUMsQ0FDbkNNLFFBQVEsQ0FBQ3lDLEdBQUcsQ0FBQ2hELHVCQUF1QixDQUFDLENBQ3JDTyxRQUFRLENBQUN5QyxHQUFHLENBQUNqRCxZQUFZLENBQUMsQ0FDMUIsSUFBSSxDQUFDVSxNQUFNLENBQ1hGLFFBQVEsQ0FBQ3lDLEdBQUcsQ0FBQ2xELFNBQVMsQ0FBQyxDQUMxQixDQUFDYixjQUFBLEdBQUEwQixDQUFBLE9BQ0YsSUFBSSxDQUFDMEIsYUFBYSxDQUFDdUIsSUFBSSxDQUFDLElBQUksQ0FBQzNDLE9BQU8sQ0FBQyxDQUVyQztBQUFBaEMsY0FBQSxHQUFBMEIsQ0FBQSxPQUNBLElBQUksQ0FBQzBCLGFBQWEsQ0FBQ3dCLE1BQU0sQ0FBQ0MsU0FBUyxDQUFFQyxLQUFrQixFQUFLLENBQUE5RSxjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxrQkFBSSxDQUFDcUQsUUFBUSxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFDLENBQUMsQ0FDckYsQ0FFQTtBQUVBO0FBRUE7O09BR0EsR0FBVyxDQUFBRSxVQUFVQSxDQUFBLEVBQUFoRixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNqQixNQUFPLEtBQUksQ0FBQ3VELFdBQVcsQ0FBQ0MseUJBQXlCLENBQ3JELENBRUE7O09BR0EsR0FBVyxDQUFBQyxZQUFZQSxDQUFBLEVBQUFuRixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNuQixNQUFPLEtBQUksQ0FBQ3VELFdBQVcsQ0FBQ0csMkJBQTJCLENBQ3ZELENBRUE7O09BR0EsR0FBVyxDQUFBQyxVQUFVQSxDQUFBLEVBQUFyRixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNqQixNQUFPLEtBQUksQ0FBQ3VELFdBQVcsQ0FBQ0sseUJBQXlCLENBQ3JELENBRUE7O09BR0EsR0FBVyxDQUFBQyxTQUFTQSxDQUFBLEVBQUF2RixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNoQixNQUFPLEtBQUksQ0FBQ3VELFdBQVcsQ0FBQ08sd0JBQXdCLENBQ3BELENBRUE7O09BR0EsR0FBVyxDQUFBQyxVQUFVQSxDQUFBLEVBQUF6RixjQUFBLEdBQUF5QixDQUFBLEtBQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNqQixNQUFPLEtBQUksQ0FBQ3VELFdBQVcsQ0FBQ1MseUJBQXlCLENBQ3JELENBRUEsR0FBVyxDQUFBQyxZQUFZQSxDQUFBLEVBQUEzRixjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNuQixNQUFPLEtBQUksQ0FBQ0MsYUFBYSxDQUM3QixDQUVBOztPQUdBLEdBQ1csQ0FBQWdFLFlBQVlBLENBQUNDLEtBQWEsRUFBQTVGLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ2pDLElBQUksQ0FBQ0MsYUFBYSxDQUFHaUUsS0FBSyxDQUFDNUYsY0FBQSxHQUFBMEIsQ0FBQSxPQUMzQixJQUFJLENBQUNtRSxlQUFlLENBQUNELEtBQUssQ0FBQyxDQUMvQixDQUVBOzs7T0FJQSxHQUFXLENBQUFFLFVBQVVBLENBQUEsRUFBQTlGLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ2pCLE1BQU8sS0FBSSxDQUFDRSxXQUFXLENBQzNCLENBRUE7OztPQUlBLEdBQ1csQ0FBQWtFLFVBQVVBLENBQUNDLENBQVUsRUFBQS9GLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQzVCLElBQUksQ0FBQ0UsV0FBVyxDQUFHbUUsQ0FBQyxDQUFDL0YsY0FBQSxHQUFBMEIsQ0FBQSxPQUNyQixJQUFJLENBQUNNLE9BQU8sQ0FBQ3FDLFVBQVUsQ0FBRzBCLENBQUMsQ0FBQy9GLGNBQUEsR0FBQTBCLENBQUEsT0FDNUIsSUFBSSxDQUFDMEIsYUFBYSxDQUFDNEMsT0FBTyxDQUFDLElBQUksQ0FBQ2hFLE9BQU8sQ0FBQyxDQUM1QyxDQUVBOzs7T0FJQSxHQUFXLENBQUFpRSxXQUFXQSxDQUFBLEVBQUFqRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNsQixNQUFPLEtBQUksQ0FBQ0csWUFBWSxDQUM1QixDQUVBOzs7T0FJQSxHQUNXLENBQUFvRSxXQUFXQSxDQUFDRixDQUFVLEVBQUEvRixjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUM3QixJQUFJLENBQUNHLFlBQVksQ0FBR2tFLENBQUMsQ0FDekIsQ0FFQTs7O09BSUEsR0FBVyxDQUFBRyxRQUFRQSxDQUFBLEVBQUFsRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNmLE1BQU8sS0FBSSxDQUFDSSxTQUFTLENBQ3pCLENBRUE7OztPQUlBLEdBQ1csQ0FBQW9FLFFBQVFBLENBQUNILENBQVMsRUFBQS9GLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ3pCLElBQUksQ0FBQ0ksU0FBUyxDQUFHaUUsQ0FBQyxDQUFDL0YsY0FBQSxHQUFBMEIsQ0FBQSxPQUNuQixJQUFJLENBQUN5RSxXQUFXLENBQUNKLENBQUMsQ0FBQyxDQUN2QixDQUVBOzs7T0FJQSxHQUFXLENBQUEzQixLQUFLQSxDQUFBLEVBQUFwRSxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNaLE1BQU8sS0FBSSxDQUFDSyxNQUFNLENBQ3RCLENBRUE7OztPQUlBLEdBQ1csQ0FBQXFDLEtBQUtBLENBQUMyQixDQUFnQixFQUFBL0YsY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsT0FDN0IsSUFBSSxDQUFDSyxNQUFNLENBQUdnRSxDQUFDLENBQUMvRixjQUFBLEdBQUEwQixDQUFBLE9BQ2hCLElBQUksQ0FBQzBFLFFBQVEsQ0FBQ0wsQ0FBQyxDQUFDLENBQ3BCLENBY0E7OztPQUlPTSxRQUFRQSxDQUFBLEVBQUFyRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNYLEdBQUksSUFBSSxDQUFDdUMsT0FBTyxDQUFDdkIsTUFBTSxDQUFHLENBQUMsQ0FBRSxDQUFBMUMsY0FBQSxHQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsT0FDekIsTUFBTyxDQUFBUixFQUFFLENBQUMsSUFBSSxDQUFDK0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDUyxJQUFJLENBQUMsQyxDQUNsQyxJQUFNLENBQUExRSxjQUFBLEdBQUFxQyxDQUFBLFFBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxPQUNILE1BQU8sS0FBSSxDQUFDc0Msa0JBQWtCLENBQUNzQyxTQUFTLENBQUMsSUFBSSxDQUFDM0Msb0JBQW9CLENBQUM0QyxxQkFBcUIsQ0FBQyxDLENBRWpHLENBRUE7OztPQUlPQyxZQUFZQSxDQUFBLEVBQUF4RyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNmLE1BQU8sS0FBSSxDQUFDdUMsT0FBTyxDQUFDdkIsTUFBTSxDQUFHLENBQUMsQ0FDbEMsQ0FFQTs7O09BSU8rRCxnQkFBZ0JBLENBQUEsRUFBQXpHLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ25CLEdBQUksSUFBSSxDQUFDdUMsT0FBTyxDQUFDdkIsTUFBTSxDQUFHLENBQUMsQ0FBRSxDQUFBMUMsY0FBQSxHQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsT0FDekIsTUFBTyxLQUFJLENBQUN1QyxPQUFPLENBQUN5QyxNQUFNLENBQUVDLEdBQUcsRUFBSyxDQUFBM0csY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsY0FBQWlGLEdBQUcsQ0FBQ0MsTUFBTSxHQUFLLFVBQVUsQ0FBVixDQUFVLENBQUMsQ0FBQ2xFLE1BQU0sR0FBSyxDQUFDLEMsQ0FDOUUsSUFBTSxDQUFBMUMsY0FBQSxHQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsT0FDSCxNQUFPLE1BQUssQyxDQUVwQixDQUVBOzs7T0FJT21GLFFBQVFBLENBQUEsRUFBQTdHLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ1gsTUFBTyxLQUFJLENBQUN1QyxPQUFPLENBQUN5QyxNQUFNLENBQUVDLEdBQUcsRUFBSyxDQUFBM0csY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsY0FBQWlGLEdBQUcsQ0FBQ0MsTUFBTSxHQUFLLFFBQVEsQ0FBUixDQUFRLENBQUMsQ0FBQ2xFLE1BQU0sQ0FBRyxDQUFDLENBQzNFLENBRUE7OztPQUlPb0UsZUFBZUEsQ0FBQSxFQUFBOUcsY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsT0FDbEIsTUFBTyxLQUFJLENBQUN1QyxPQUFPLENBQUN5QyxNQUFNLENBQUVDLEdBQUcsRUFBSyxDQUFBM0csY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsY0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsU0FBQXNFLEdBQUcsQ0FBQ0MsTUFBTSxHQUFLLE9BQU8sSUFBQTVHLGNBQUEsR0FBQXFDLENBQUEsU0FBSXNFLEdBQUcsQ0FBQ0MsTUFBTSxHQUFLLFFBQVEsRUFBUixDQUFRLENBQUMsQ0FBQ2xFLE1BQU0sQ0FBRyxDQUFDLENBQ3JHLENBRUE7OztPQUlPcUUsV0FBV0EsQ0FBQSxFQUFBL0csY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsT0FDZCxNQUFPLEtBQUksQ0FBQ3VDLE9BQU8sQ0FBQ3lDLE1BQU0sQ0FBRUMsR0FBRyxFQUFLLENBQUEzRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxjQUFBaUYsR0FBRyxDQUFDQyxNQUFNLEdBQUssV0FBVyxDQUFYLENBQVcsQ0FBQyxDQUFDbEUsTUFBTSxDQUFHLENBQUMsQ0FDOUUsQ0FFQTs7O09BSU9zRSxRQUFRQSxDQUFBLEVBQUFoSCxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNYLEdBQUksSUFBSSxDQUFDdUMsT0FBTyxDQUFDdkIsTUFBTSxDQUFHLENBQUMsQ0FBRSxDQUFBMUMsY0FBQSxHQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsT0FDekIsTUFBTyxLQUFJLENBQUN1QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNnRCxRQUFRLEMsQ0FDbEMsSUFBTSxDQUFBakgsY0FBQSxHQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsT0FDSCxNQUFPLEVBQUMsQyxDQUVoQixDQVNBOzs7T0FJT3dGLE1BQU1BLENBQUNDLFFBQVEsRUFBQW5ILGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ2xCLElBQUksQ0FBQzBCLGFBQWEsQ0FBQ2dFLE9BQU8sQ0FBQyxDQUFFQyxNQUFNLENBQUUsUUFBUSxDQUFFRixRQUFRLENBQUVBLFFBQVEsQ0FBRSxDQUFDLENBQ3hFLENBRUE7O09BR09HLFNBQVNBLENBQUEsRUFBQXRILGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLE9BQ1osR0FBSSxJQUFJLENBQUM4RSxZQUFZLEVBQUUsR0FBSyxJQUFJLENBQUUsQ0FBQXhHLGNBQUEsR0FBQXFDLENBQUEsUUFBQXJDLENBQUEsaUJBQUEwQixDQUFBLE9BQzlCLElBQUksQ0FBQzBCLGFBQWEsQ0FBQ2dFLE9BQU8sQ0FBQyxDQUFFQyxNQUFNLENBQUUsUUFBUSxDQUFFLENBQUMsQyxDQUNuRCxLQUFBckgsY0FBQSxHQUFBcUMsQ0FBQSxVQUNMLENBRUE7O09BR09rRixXQUFXQSxDQUFBLEVBQUF2SCxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNkLEdBQUksSUFBSSxDQUFDOEYsVUFBVSxDQUFFLENBQUF4SCxjQUFBLEdBQUFxQyxDQUFBLFFBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxPQUNqQixJQUFJLENBQUM4RixVQUFVLEVBQUUsQyxDQUNwQixLQUFBeEgsY0FBQSxHQUFBcUMsQ0FBQSxVQUNMLENBRUE7O09BR09vRixRQUFRQSxDQUFBLEVBQUF6SCxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxPQUNYLEtBQUssQ0FBQytGLFFBQVEsRUFBRSxDQUNoQjtBQUFBekgsY0FBQSxHQUFBMEIsQ0FBQSxPQUNBLElBQUksQ0FBQzhGLFVBQVUsQ0FBRyxJQUFJLENBQUNqRyxRQUFRLENBQUNtRyxNQUFNLENBQUMsSUFBSSxDQUFDeEYsV0FBVyxDQUFDQyxhQUFhLENBQUUsUUFBUSxDQUFFLElBQUksQ0FBQ0YsWUFBWSxDQUFDLENBQUNqQyxjQUFBLEdBQUEwQixDQUFBLE9BRXBHLElBQUksQ0FBQ21FLGVBQWUsQ0FBQyxJQUFJLENBQUNsRSxhQUFhLENBQUMsQ0FBQzNCLGNBQUEsR0FBQTBCLENBQUEsT0FDekMsSUFBSSxDQUFDeUUsV0FBVyxDQUFDLElBQUksQ0FBQ3JFLFNBQVMsQ0FBQyxDQUFDOUIsY0FBQSxHQUFBMEIsQ0FBQSxPQUNqQyxJQUFJLENBQUMwRSxRQUFRLENBQUMsSUFBSSxDQUFDckUsTUFBTSxDQUFDLENBQUMvQixjQUFBLEdBQUEwQixDQUFBLE9BRTNCLEdBQUksSUFBSSxDQUFDSSxTQUFTLEdBQUssSUFBSSxDQUFFLENBQUE5QixjQUFBLEdBQUFxQyxDQUFBLFFBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxPQUN6QixLQUFNLElBQUksQ0FBQWlHLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDLENBQzlDLEtBQUEzSCxjQUFBLEdBQUFxQyxDQUFBLFVBQUFyQyxjQUFBLEdBQUEwQixDQUFBLE9BRUQsSUFBSSxDQUFDMEIsYUFBYSxDQUFDNEMsT0FBTyxDQUFDLElBQUksQ0FBQ2hFLE9BQU8sQ0FBQyxDQUM1QyxDQUVBOzs7O09BS08rQyxRQUFRQSxDQUFDRCxLQUFrQixFQUFBOUUsY0FBQSxHQUFBeUIsQ0FBQSxPQUM5QixLQUFNLENBQUFtRyxLQUFLLEVBQUE1SCxjQUFBLEdBQUEwQixDQUFBLE9BQUcsSUFBSSxDQUFDdUMsT0FBTyxDQUFDNEQsU0FBUyxDQUFFcEcsQ0FBQyxFQUFLLENBQUF6QixjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxjQUFBRCxDQUFDLENBQUMwRixRQUFRLEdBQUtyQyxLQUFLLENBQUNxQyxRQUFRLENBQVIsQ0FBUSxDQUFDLEVBQUNuSCxjQUFBLEdBQUEwQixDQUFBLE9BRTNFLEdBQUksQ0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsVUFBQXlDLEtBQUssQ0FBQzhCLE1BQU0sR0FBSyxPQUFPLEdBQUssQ0FBQTVHLGNBQUEsR0FBQXFDLENBQUEsVUFBQXlDLEtBQUssQ0FBQzhCLE1BQU0sR0FBSyxPQUFPLElBQUE1RyxjQUFBLEdBQUFxQyxDQUFBLFVBQUl1RixLQUFLLENBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQTVILGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLE9BQ3JFLEdBQ0ksQ0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsY0FBSSxDQUFDeUYsZ0JBQWdCLENBQUNoRCxLQUFLLENBQUNKLElBQUksQ0FBQyxJQUFBMUUsY0FBQSxHQUFBcUMsQ0FBQSxVQUNqQyxJQUFJLENBQUMwRixlQUFlLENBQUNqRCxLQUFLLENBQUNrRCxJQUFJLENBQUMsSUFBQWhJLGNBQUEsR0FBQXFDLENBQUEsVUFDaEMsSUFBSSxDQUFDNEYsbUJBQW1CLENBQUNuRCxLQUFLLENBQUMsRUFDakMsQ0FBQTlFLGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLE9BQ0UsSUFBSSxDQUFDdUMsT0FBTyxDQUFDaUUsSUFBSSxDQUFDLEdBQUksQ0FBQUMsYUFBYSxDQUFDckQsS0FBSyxDQUFDLENBQUMsQyxDQUM5QyxJQUFNLENBQUE5RSxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxPQUNILElBQUksQ0FBQ3dGLE1BQU0sQ0FBQ3BDLEtBQUssQ0FBQ3FDLFFBQVEsQ0FBQyxDQUFDbkgsY0FBQSxHQUFBMEIsQ0FBQSxPQUU1QixHQUFJLENBQUMsSUFBSSxDQUFDb0csZ0JBQWdCLENBQUNoRCxLQUFLLENBQUNKLElBQUksQ0FBQyxDQUFFLENBQUExRSxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxRQUNwQyxJQUFJLENBQUM4QixXQUFXLENBQUM0RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQyxDQUM3QyxJQUFNLENBQUFwSSxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxXQUFJLENBQUMsSUFBSSxDQUFDcUcsZUFBZSxDQUFDakQsS0FBSyxDQUFDa0QsSUFBSSxDQUFDLENBQUUsQ0FBQWhJLGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFFBQzFDLElBQUksQ0FBQzhCLFdBQVcsQ0FBQzRFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDLENBQzVDLEtBQUFwSSxjQUFBLEdBQUFxQyxDQUFBLFcsR0FFUixJQUFNLENBQUFyQyxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxXQUFJb0QsS0FBSyxDQUFDOEIsTUFBTSxHQUFLLFdBQVcsQ0FBRSxDQUFBNUcsY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDckMsR0FBSWtHLEtBQUssRUFBSSxDQUFDLENBQUUsQ0FBQTVILGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFFBQ1osSUFBSSxDQUFDdUMsT0FBTyxDQUFDbEIsTUFBTSxDQUFDNkUsS0FBSyxDQUFFLENBQUMsQ0FBQyxDLENBQ2hDLEtBQUE1SCxjQUFBLEdBQUFxQyxDQUFBLFdBQUFyQyxjQUFBLEdBQUEwQixDQUFBLFFBRUQsSUFBSSxDQUFDMkcsY0FBYyxDQUFDLElBQUksQ0FBQyxDLENBQzVCLElBQU0sQ0FBQXJJLGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFdBQUlvRCxLQUFLLENBQUM4QixNQUFNLEdBQUssVUFBVSxDQUFFLENBQUE1RyxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxRQUNwQyxJQUFJLENBQUN1QyxPQUFPLENBQUMyRCxLQUFLLENBQUMsQ0FBQ1gsUUFBUSxDQUFHbkMsS0FBSyxDQUFDbUMsUUFBUSxDQUFDakgsY0FBQSxHQUFBMEIsQ0FBQSxRQUM5QyxJQUFJLENBQUN1QyxPQUFPLENBQUMyRCxLQUFLLENBQUMsQ0FBQ2hCLE1BQU0sQ0FBRzlCLEtBQUssQ0FBQzhCLE1BQU0sQ0FBQzVHLGNBQUEsR0FBQTBCLENBQUEsUUFDMUMsSUFBSSxDQUFDMkcsY0FBYyxDQUFDdkQsS0FBSyxDQUFDLENBRTFCLEtBQU0sQ0FBQXdELFdBQVcsRUFBQXRJLGNBQUEsR0FBQTBCLENBQUEsUUFBaUMsQ0FDOUNnRCxJQUFJLENBQUVJLEtBQUssQ0FBQ0osSUFBSSxDQUNoQnNELElBQUksQ0FBRWxELEtBQUssQ0FBQ2tELElBQUksQ0FDaEJPLFFBQVEsQ0FBRSxJQUFJLENBQUN0RSxPQUFPLENBQUMyRCxLQUFLLENBQUMsQ0FBQ1QsUSxDQUNqQyxFQUFDbkgsY0FBQSxHQUFBMEIsQ0FBQSxRQUVGLElBQUksQ0FBQytCLGdCQUFnQixDQUFDMkUsSUFBSSxDQUFDRSxXQUFXLENBQUMsQyxDQUMxQyxJQUFNLENBQUF0SSxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxRQUNILEdBQUlrRyxLQUFLLEVBQUksQ0FBQyxDQUFFLENBQUE1SCxjQUFBLEdBQUFxQyxDQUFBLFNBQUFyQyxDQUFBLGlCQUFBMEIsQ0FBQSxRQUNaLElBQUksQ0FBQ3VDLE9BQU8sQ0FBQzJELEtBQUssQ0FBQyxDQUFDWCxRQUFRLENBQUduQyxLQUFLLENBQUNtQyxRQUFRLENBQUNqSCxjQUFBLEdBQUEwQixDQUFBLFFBQzlDLElBQUksQ0FBQ3VDLE9BQU8sQ0FBQzJELEtBQUssQ0FBQyxDQUFDaEIsTUFBTSxDQUFHOUIsS0FBSyxDQUFDOEIsTUFBTSxDLENBQzVDLEtBQUE1RyxjQUFBLEdBQUFxQyxDQUFBLFcsR0FDSnJDLGNBQUEsR0FBQTBCLENBQUEsUUFFRCxJQUFJLENBQUM4RyxlQUFlLEVBQUUsQ0FDMUIsQ0FFQTs7O09BSU9DLEtBQUtBLENBQUN0QixRQUFRLEVBQUFuSCxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxRQUNqQixJQUFJLENBQUMwQixhQUFhLENBQUNnRSxPQUFPLENBQUMsQ0FBRUMsTUFBTSxDQUFFLE9BQU8sQ0FBRUYsUUFBUSxDQUFFLENBQUMsQ0FDN0QsQ0FFQTs7T0FHT3VCLFFBQVFBLENBQUEsRUFBQTFJLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLFFBQ1gsR0FBSSxJQUFJLENBQUNxRixXQUFXLEVBQUUsR0FBSyxJQUFJLENBQUUsQ0FBQS9HLGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFFBQzdCLElBQUksQ0FBQzBCLGFBQWEsQ0FBQ2dFLE9BQU8sQ0FBQyxDQUFFQyxNQUFNLENBQUUsT0FBTyxDQUFFLENBQUMsQyxDQUNsRCxLQUFBckgsY0FBQSxHQUFBcUMsQ0FBQSxXQUNMLENBRUE7O09BR08rRCxRQUFRQSxDQUFDdUMsS0FBYSxFQUFBM0ksY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsUUFDekIsSUFBSSxDQUFDTSxPQUFPLENBQUNvQyxLQUFLLENBQUd1RSxLQUFLLENBQzlCLENBRUE7Ozs7T0FLT0MsTUFBTUEsQ0FBQ3pCLFFBQVEsRUFBQW5ILGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLFFBQ2xCLElBQUksQ0FBQzBCLGFBQWEsQ0FBQ2dFLE9BQU8sQ0FBQyxDQUFFQyxNQUFNLENBQUUsUUFBUSxDQUFFRixRQUFRLENBQUUsQ0FBQyxDQUM5RCxDQUVBOztPQUdPMEIsU0FBU0EsQ0FBQSxFQUFBN0ksY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsUUFDWixHQUFJLElBQUksQ0FBQ29GLGVBQWUsRUFBRSxHQUFLLElBQUksQ0FBRSxDQUFBOUcsY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDakMsSUFBSSxDQUFDMEIsYUFBYSxDQUFDZ0UsT0FBTyxDQUFDLENBQUVDLE1BQU0sQ0FBRSxRQUFRLENBQUUsQ0FBQyxDLENBQ25ELEtBQUFySCxjQUFBLEdBQUFxQyxDQUFBLFdBQ0wsQ0FFQTs7O09BSU95RyxZQUFZQSxDQUFDQyxDQUFrQixFQUFBL0ksY0FBQSxHQUFBeUIsQ0FBQSxPQUNsQyxHQUFJLENBQUF1SCxLQUFLLEVBQUFoSixjQUFBLEdBQUEwQixDQUFBLFFBQTRCLElBQUksRUFBQzFCLGNBQUEsR0FBQTBCLENBQUEsUUFFMUMsR0FBSSxJQUFJLENBQUM0QixVQUFVLENBQUUsQ0FBQXRELGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFFBQ2pCc0gsS0FBSyxDQUFHMUksVUFBVSxDQUFDMkksUUFBUSxDQUFDLElBQUksQ0FBQ3ZGLHlCQUF5QixDQUFFLElBQUksQ0FBQ0csZ0NBQWdDLENBQUMsQ0FBQ2tGLENBQUMsQ0FBQyxDLENBQ3hHLEtBQUEvSSxjQUFBLEdBQUFxQyxDQUFBLFdBQUFyQyxjQUFBLEdBQUEwQixDQUFBLFFBRUQsTUFBTyxDQUFBc0gsS0FBSyxDQUNoQixDQVdBO0FBRUE7QUFFQTs7T0FHUVIsZUFBZUEsQ0FBQSxFQUFBeEksY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsUUFDbkI7QUFDQSxHQUFJLElBQUksQ0FBQ3dILFNBQVMsQ0FBRSxDQUFBbEosY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDZixJQUFJLENBQUN3SCxTQUF1QyxDQUFDQyxpQkFBaUIsQ0FBRyxJQUFJLENBQUMzRyxpQkFBaUIsRUFBRSxDLENBQzdGLEtBQUF4QyxjQUFBLEdBQUFxQyxDQUFBLFdBQ0wsQ0FFQTs7T0FHUUcsaUJBQWlCQSxDQUFBLEVBQUF4QyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxRQUNyQixNQUFPLEtBQUksQ0FBQ3VDLE9BQU8sQ0FBQ3lDLE1BQU0sQ0FBRUMsR0FBRyxFQUFLLENBQUEzRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxlQUFBaUYsR0FBRyxDQUFDQyxNQUFNLEdBQUssVUFBVSxDQUFWLENBQVUsQ0FBQyxDQUFDbEUsTUFBTSxDQUN6RSxDQUVBOzs7O09BS1FvRixnQkFBZ0JBLENBQUNzQixRQUFnQixFQUFBcEosY0FBQSxHQUFBeUIsQ0FBQSxNQUFBekIsQ0FBQSxpQkFBQTBCLENBQUEsUUFDckMsR0FBSSxJQUFJLENBQUNDLGFBQWEsR0FBSyxHQUFHLENBQUUsQ0FBQTNCLGNBQUEsR0FBQXFDLENBQUEsU0FBQXJDLENBQUEsaUJBQUEwQixDQUFBLFFBQzVCLE1BQU8sS0FBSSxDLENBQ2QsS0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsV0FFRCxHQUFJLENBQUFnSCxPQUFPLEVBQUFySixjQUFBLEdBQUEwQixDQUFBLFFBQUcsS0FBSyxFQUNuQixLQUFNLENBQUE0SCxVQUFVLEVBQUF0SixjQUFBLEdBQUEwQixDQUFBLFFBQWEsSUFBSSxDQUFDQyxhQUFhLENBQUM0SCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUN2SixjQUFBLEdBQUEwQixDQUFBLFFBRTNENEgsVUFBVSxDQUFDdEcsT0FBTyxDQUFFMkQsR0FBRyxFQUFJLENBQUEzRyxjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxRQUN2QixHQUFJMEgsUUFBUSxDQUFDSSxXQUFXLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDOUMsR0FBRyxDQUFDNkMsV0FBVyxFQUFFLENBQUMsQ0FBRSxDQUFBeEosY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDcEQySCxPQUFPLENBQUcsSUFBSSxDLENBQ2pCLEtBQUFySixjQUFBLEdBQUFxQyxDQUFBLFdBQ0wsQ0FBQyxDQUFDLENBQUNyQyxjQUFBLEdBQUEwQixDQUFBLFFBRUgsTUFBTyxDQUFBMkgsT0FBTyxDQUNsQixDQUVBOzs7O09BS1F0QixlQUFlQSxDQUFDMkIsUUFBZ0IsRUFBQTFKLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLFFBQ3BDLEdBQUksSUFBSSxDQUFDNkIsV0FBVyxHQUFLLENBQUMsQ0FBRSxDQUFBdkQsY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDeEIsTUFBTyxLQUFJLEMsQ0FDZCxLQUFBMUIsY0FBQSxHQUFBcUMsQ0FBQSxXQUFBckMsY0FBQSxHQUFBMEIsQ0FBQSxRQUVELE1BQU8sS0FBSSxDQUFDNkIsV0FBVyxFQUFJbUcsUUFBUSxDQUN2QyxDQUVBOzs7O09BS1E3RCxlQUFlQSxDQUFDRCxLQUFhLEVBQUE1RixjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxRQUNqQztBQUNBLEdBQUksQ0FBQTFCLGNBQUEsR0FBQXFDLENBQUEsY0FBSSxDQUFDSCxXQUFXLElBQUFsQyxjQUFBLEdBQUFxQyxDQUFBLFVBQUksSUFBSSxDQUFDSCxXQUFXLENBQUNDLGFBQWEsRUFBRSxDQUFBbkMsY0FBQSxHQUFBcUMsQ0FBQSxTQUFBckMsQ0FBQSxpQkFBQTBCLENBQUEsUUFDcEQsSUFBSSxDQUFDSCxRQUFRLENBQUNvSSxZQUFZLENBQUMsSUFBSSxDQUFDekgsV0FBVyxDQUFDQyxhQUFhLENBQUUsUUFBUSxDQUFFeUQsS0FBSyxDQUFDLEMsQ0FDOUUsS0FBQTVGLGNBQUEsR0FBQXFDLENBQUEsV0FBQXJDLGNBQUEsR0FBQTBCLENBQUEsUUFFRCxJQUFJLENBQUNNLE9BQU8sQ0FBQ2tDLFlBQVksQ0FBRzBCLEtBQUssQ0FDckMsQ0FFQTs7O09BSVFPLFdBQVdBLENBQUN5RCxHQUFXLEVBQUE1SixjQUFBLEdBQUF5QixDQUFBLE1BQUF6QixDQUFBLGlCQUFBMEIsQ0FBQSxRQUMzQixJQUFJLENBQUNNLE9BQU8sQ0FBQ2tFLFFBQVEsQ0FBRzBELEdBQUcsQ0FDL0IsQywySEEvbUJrQnpJLGFBQWEsQ0FBQTBJLElBQUEsR0FBQXpGLEtBQUEsQ0FBQTBGLEVBQUEsQ0FBQUMsbUJBQUEsR0FBQTNGLEtBQUEsQ0FBQTRGLEVBQUEsQ0FBQUMsUUFBQSxHQUFBN0YsS0FBQSxDQUFBNEYsRUFBQSxDQUFBRSxTQUFBLEdBQUE5RixLQUFBLENBQUE0RixFQUFBLENBQUFHLE1BQUEsR0FBQUMsTUFBQSxDQUFBSixFQUFBLENBQUFLLGVBQUEsQ0FBQTdKLFNBQUEsR0FBQVIsY0FBQSxHQUFBMEIsQ0FBQSxRLHNGQUFiUCxhQUFhLENBQUFtSixNQUFBLEVBQUFoSCxVQUFBLGNBQUFDLFdBQUEsZUFBQUcseUJBQUEsNkJBQUFHLGdDQUFBLG9DQUFBOEIsWUFBQSxnQkFBQUcsVUFBQSxjQUFBRyxXQUFBLGVBQUFDLFFBQUEsWUFBQTlCLEtBQUEsVUFBQW1HLE9BQUEsRUFBQS9HLFdBQUEsZUFBQUMsZ0JBQUEscUJBQUErRyxXQUFBLEdBQUFDLFlBQUEsZUFBQUMsS0FBQSxNQUFBQyxTQUFBLFdBQUFDLFdBQUEsTUFBQUMsTUFBQSxRQUFBQyxlQUFBLE1BQUFDLFFBQUEsQ0FBQWYsRUFBQSxHQUFBaEssY0FBQSxHQUFBMEIsQ0FBQSxRLG1GQUFiUCxhQUFhLENBQUE2SixVQUFBLEcsS0FEbEN4SyxTLGdNQXNDVzBCLFdBQVcsRyxLQURsQnRCLFNBQVMsQyxNQUFDLE9BQU8sQ0FBRSxDQUFFaUssTUFBTSxDQUFFLElBQUksQ0FBRSxDLEdBMENwQnZILFVBQVUsRyxLQUF6QjVDLEssR0FlZTZDLFdBQVcsRyxLQUExQjdDLEssR0FLZ0I4QyxXQUFXLEcsS0FBM0I3QyxNLEdBTU04QyxnQkFBZ0IsRyxLQUR0QjlDLE0sR0FXZStDLHlCQUF5QixHLEtBQXhDaEQsSyxHQU1NbUQsZ0NBQWdDLEcsS0FEdENuRCxLLEdBc0dVaUYsWUFBWSxHLEtBRHRCakYsSyxHQW1CVW9GLFVBQVUsRyxLQURwQnBGLEssR0FvQlV1RixXQUFXLEcsS0FEckJ2RixLLEdBa0JVd0YsUUFBUSxHLEtBRGxCeEYsSyxHQW1CVTBELEtBQUssRyxLQURmMUQsSyxNQWdWTDs7R0FHQSxNQUFNLE1BQU8sQ0FBQXlILGFBQWEsQ0E0QnRCO0FBRUE7QUFFQTs7O09BSUEvRyxZQUFZMEQsS0FBa0IsRUFBQTlFLGNBQUEsR0FBQXlCLENBQUEsTUFBQXpCLENBQUEsaUJBQUEwQixDQUFBLFFBQzFCLElBQUksQ0FBQ3lGLFFBQVEsQ0FBR3JDLEtBQUssQ0FBQ3FDLFFBQVEsQ0FBQ25ILGNBQUEsR0FBQTBCLENBQUEsUUFDL0IsSUFBSSxDQUFDZ0QsSUFBSSxDQUFHSSxLQUFLLENBQUNKLElBQUksQ0FBQzFFLGNBQUEsR0FBQTBCLENBQUEsUUFDdkIsSUFBSSxDQUFDdUYsUUFBUSxDQUFHbkMsS0FBSyxDQUFDbUMsUUFBUSxDQUFDakgsY0FBQSxHQUFBMEIsQ0FBQSxRQUMvQixJQUFJLENBQUNrRixNQUFNLENBQUc5QixLQUFLLENBQUM4QixNQUFNLENBQUM1RyxjQUFBLEdBQUEwQixDQUFBLFFBQzNCLElBQUksQ0FBQ3VKLFVBQVUsQ0FBRyxJQUFJLENBQzFCLEMiLCJpZ25vcmVMaXN0IjpbXX0=