@simpleangularcontrols/sac-common 10.0.0-rc.29 → 10.0.0-rc.30

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 (267) hide show
  1. package/bundles/simpleangularcontrols-sac-common.umd.js +1848 -1249
  2. package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
  3. package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
  4. package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
  5. package/common/basedatetimecontrol.d.ts +47 -21
  6. package/common/baseinputcontrol.d.ts +10 -8
  7. package/common/baselistcontrol.d.ts +15 -15
  8. package/common/basemodelcontrol.d.ts +59 -43
  9. package/common/baseselectcontrol.d.ts +5 -5
  10. package/common/baseuploadcontrol.d.ts +77 -57
  11. package/components/browser/browser.d.ts +86 -89
  12. package/components/browser/models/browserfile.d.ts +6 -6
  13. package/components/browser/models/browserfiledeleterequest.d.ts +7 -7
  14. package/components/browser/models/browserfilerenamerequest.d.ts +10 -10
  15. package/components/browser/models/browserfileresponse.d.ts +2 -2
  16. package/components/browser/models/browserfilesaverequest.d.ts +7 -7
  17. package/components/browser/models/browsernode.d.ts +13 -13
  18. package/components/browser/models/browsernodedeleterequest.d.ts +6 -6
  19. package/components/browser/models/browsernodenewrequest.d.ts +7 -7
  20. package/components/browser/models/browsernoderenamerequest.d.ts +7 -7
  21. package/components/browser/models/browsernoderequest.d.ts +7 -7
  22. package/components/browser/models/browsernoderesponse.d.ts +1 -1
  23. package/controls/buttons/button.d.ts +25 -19
  24. package/controls/checkbox/checkbox.d.ts +3 -3
  25. package/controls/checkbox/radiobutton.d.ts +19 -13
  26. package/controls/checkbox/radiobuttons.d.ts +13 -10
  27. package/controls/confirm/confirm.button.d.ts +3 -3
  28. package/controls/confirm/confirm.d.ts +13 -12
  29. package/controls/confirm/confirm.service.d.ts +14 -14
  30. package/controls/contextmenu/contextmenu.d.ts +33 -27
  31. package/controls/contextmenu/contextmenu.interface.d.ts +6 -0
  32. package/controls/contextmenu/contextmenuanchor.d.ts +4 -4
  33. package/controls/contextmenu/contextmenucontainer.d.ts +4 -4
  34. package/controls/contextmenu/contextmenuitembutton.d.ts +12 -12
  35. package/controls/datetime/date.d.ts +11 -11
  36. package/controls/datetime/dateselector.d.ts +47 -40
  37. package/controls/datetime/datetime.d.ts +15 -14
  38. package/controls/datetime/time.d.ts +22 -12
  39. package/controls/dialog/dialog.d.ts +28 -22
  40. package/controls/form/form.d.ts +17 -12
  41. package/controls/grid/grid.d.ts +1 -0
  42. package/controls/grid/gridbutton.d.ts +1 -0
  43. package/controls/grid/gridcolumn.d.ts +5 -1
  44. package/controls/grid/gridcolumnaction.d.ts +1 -1
  45. package/controls/grid/gridcolumnbase.d.ts +8 -3
  46. package/controls/grid/model.d.ts +5 -2
  47. package/controls/grid/paging.d.ts +2 -3
  48. package/controls/input/input.d.ts +7 -7
  49. package/controls/input/inputarea.d.ts +8 -6
  50. package/controls/input/inputcurrency.d.ts +4 -1
  51. package/controls/input/inputdecimal.d.ts +14 -14
  52. package/controls/input/inputemail.d.ts +4 -4
  53. package/controls/input/inputinteger.d.ts +14 -14
  54. package/controls/input/inputpassword.d.ts +3 -3
  55. package/controls/input/inputsearch.d.ts +8 -5
  56. package/controls/layout/formlayout.d.ts +8 -5
  57. package/controls/list/buildvaluestring.d.ts +2 -2
  58. package/controls/list/dropdown.d.ts +23 -22
  59. package/controls/list/dropdownoptions.d.ts +10 -10
  60. package/controls/list/listbox.d.ts +25 -23
  61. package/controls/multilanguage/multilanguageinput.d.ts +25 -25
  62. package/controls/multilanguage/multilanguageinputarea.d.ts +27 -27
  63. package/controls/static/formcontainer.d.ts +8 -8
  64. package/controls/static/staticlabel.d.ts +5 -5
  65. package/controls/tabs/tab.d.ts +2 -2
  66. package/controls/tabs/tabitem.d.ts +7 -7
  67. package/controls/tinymce/tinymce.d.ts +37 -37
  68. package/controls/tinymce/tinymcedialogsettings.d.ts +6 -6
  69. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +2 -2
  70. package/controls/tinymce/tinymceinstance.d.ts +2 -2
  71. package/controls/tooltip/tooltip.d.ts +10 -5
  72. package/controls/treeview/treeview.d.ts +50 -5
  73. package/controls/upload/dropzonemultiple.d.ts +16 -16
  74. package/controls/upload/dropzonesingle.d.ts +11 -11
  75. package/controls/upload/uploadmultiple.d.ts +12 -12
  76. package/controls/upload/uploadsingle.d.ts +7 -7
  77. package/controls/validation/validationsummary.d.ts +12 -11
  78. package/controls/wizard/wizard.d.ts +25 -18
  79. package/controls/wizard/wizarditem.d.ts +5 -5
  80. package/enums/ButtonRoleType.d.ts +26 -1
  81. package/enums/ControlHeight.d.ts +1 -1
  82. package/enums/IconType.d.ts +1 -1
  83. package/esm2015/common/basedatetimecontrol.js +47 -22
  84. package/esm2015/common/baseinputcontrol.js +13 -11
  85. package/esm2015/common/baselistcontrol.js +21 -17
  86. package/esm2015/common/basemodelcontrol.js +72 -49
  87. package/esm2015/common/baseselectcontrol.js +11 -9
  88. package/esm2015/common/baseuploadcontrol.js +69 -49
  89. package/esm2015/components/browser/browser.js +93 -105
  90. package/esm2015/components/browser/models/browserfile.js +1 -1
  91. package/esm2015/components/browser/models/browserfiledeleterequest.js +6 -4
  92. package/esm2015/components/browser/models/browserfilerenamerequest.js +6 -4
  93. package/esm2015/components/browser/models/browserfileresponse.js +1 -1
  94. package/esm2015/components/browser/models/browserfilesaverequest.js +5 -3
  95. package/esm2015/components/browser/models/browsernode.js +1 -1
  96. package/esm2015/components/browser/models/browsernodedeleterequest.js +6 -4
  97. package/esm2015/components/browser/models/browsernodenewrequest.js +6 -4
  98. package/esm2015/components/browser/models/browsernoderenamerequest.js +6 -4
  99. package/esm2015/components/browser/models/browsernoderequest.js +6 -4
  100. package/esm2015/components/browser/models/browsernoderesponse.js +1 -1
  101. package/esm2015/controls/buttons/button.js +26 -20
  102. package/esm2015/controls/checkbox/checkbox.js +3 -3
  103. package/esm2015/controls/checkbox/radiobutton.js +21 -15
  104. package/esm2015/controls/checkbox/radiobuttons.js +14 -11
  105. package/esm2015/controls/confirm/confirm.button.js +4 -4
  106. package/esm2015/controls/confirm/confirm.js +14 -13
  107. package/esm2015/controls/confirm/confirm.service.js +21 -21
  108. package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -1
  109. package/esm2015/controls/contextmenu/contextmenu.js +29 -23
  110. package/esm2015/controls/contextmenu/contextmenuanchor.js +4 -4
  111. package/esm2015/controls/contextmenu/contextmenucontainer.js +4 -4
  112. package/esm2015/controls/contextmenu/contextmenuitembutton.js +10 -10
  113. package/esm2015/controls/datetime/date.js +13 -13
  114. package/esm2015/controls/datetime/dateselector.js +55 -54
  115. package/esm2015/controls/datetime/datetime.js +17 -16
  116. package/esm2015/controls/datetime/time.js +24 -14
  117. package/esm2015/controls/dialog/dialog.js +31 -24
  118. package/esm2015/controls/form/form.js +18 -13
  119. package/esm2015/controls/grid/grid.js +2 -1
  120. package/esm2015/controls/grid/gridbutton.js +2 -1
  121. package/esm2015/controls/grid/gridcolumn.js +6 -2
  122. package/esm2015/controls/grid/gridcolumnaction.js +2 -2
  123. package/esm2015/controls/grid/gridcolumnbase.js +9 -4
  124. package/esm2015/controls/grid/model.js +5 -2
  125. package/esm2015/controls/grid/paging.js +6 -7
  126. package/esm2015/controls/input/input.js +8 -8
  127. package/esm2015/controls/input/inputarea.js +9 -7
  128. package/esm2015/controls/input/inputcurrency.js +6 -3
  129. package/esm2015/controls/input/inputdecimal.js +21 -27
  130. package/esm2015/controls/input/inputemail.js +5 -5
  131. package/esm2015/controls/input/inputinteger.js +19 -23
  132. package/esm2015/controls/input/inputpassword.js +4 -4
  133. package/esm2015/controls/input/inputsearch.js +9 -6
  134. package/esm2015/controls/layout/formlayout.js +10 -7
  135. package/esm2015/controls/list/buildvaluestring.js +6 -6
  136. package/esm2015/controls/list/dropdown.js +28 -27
  137. package/esm2015/controls/list/dropdownoptions.js +12 -12
  138. package/esm2015/controls/list/listbox.js +26 -24
  139. package/esm2015/controls/multilanguage/multilanguageinput.js +29 -29
  140. package/esm2015/controls/multilanguage/multilanguageinputarea.js +31 -31
  141. package/esm2015/controls/static/formcontainer.js +10 -10
  142. package/esm2015/controls/static/staticlabel.js +7 -7
  143. package/esm2015/controls/tabs/tab.js +2 -2
  144. package/esm2015/controls/tabs/tabitem.js +5 -5
  145. package/esm2015/controls/tinymce/tinymce.js +35 -35
  146. package/esm2015/controls/tinymce/tinymcedialogsettings.js +4 -4
  147. package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +1 -1
  148. package/esm2015/controls/tinymce/tinymceinstance.js +1 -1
  149. package/esm2015/controls/tooltip/tooltip.js +13 -8
  150. package/esm2015/controls/treeview/treeview.js +52 -7
  151. package/esm2015/controls/upload/dropzonemultiple.js +18 -18
  152. package/esm2015/controls/upload/dropzonesingle.js +12 -12
  153. package/esm2015/controls/upload/uploadmultiple.js +14 -14
  154. package/esm2015/controls/upload/uploadsingle.js +8 -8
  155. package/esm2015/controls/validation/validationsummary.js +14 -13
  156. package/esm2015/controls/wizard/wizard.js +24 -17
  157. package/esm2015/controls/wizard/wizarditem.js +4 -4
  158. package/esm2015/enums/ButtonRoleType.js +1 -1
  159. package/esm2015/enums/ControlHeight.js +2 -2
  160. package/esm2015/enums/IconType.js +2 -2
  161. package/esm2015/interfaces/ISacConfigurationService.js +1 -1
  162. package/esm2015/interfaces/ISacFileBrowserService.js +1 -1
  163. package/esm2015/interfaces/ISacLabelSizes.js +1 -1
  164. package/esm2015/interfaces/ISacLanguageService.js +1 -1
  165. package/esm2015/interfaces/ISacLocalisationService.js +1 -1
  166. package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -1
  167. package/esm2015/interfaces/iabstractcontrollabel.js +1 -1
  168. package/esm2015/interfaces/iconfirmcomponent.js +1 -1
  169. package/esm2015/interfaces/idatetimecontrol.js +1 -1
  170. package/esm2015/interfaces/iuploadcontrol.js +1 -1
  171. package/esm2015/interfaces/treeviewaction.interface.js +1 -1
  172. package/esm2015/models/languagemodel.js +5 -3
  173. package/esm2015/public_api.js +3 -2
  174. package/esm2015/services/index.js +4 -4
  175. package/esm2015/services/sac-configuration.service.js +7 -1
  176. package/esm2015/services/sac-filebrowser.service.js +46 -38
  177. package/esm2015/services/sac-localisation.service.js +11 -7
  178. package/esm2015/services/sac-validationkey.service.js +148 -1
  179. package/esm2015/utilities/convertion.js +7 -5
  180. package/esm2015/utilities/datatypes.js +6 -4
  181. package/esm2015/utilities/enums.js +9 -8
  182. package/esm2015/utilities/guid.js +2 -2
  183. package/esm2015/utilities/interpolation.js +16 -9
  184. package/esm2015/utilities/popuphelper.js +62 -25
  185. package/esm2015/utilities/positioncalculator.js +209 -0
  186. package/esm2015/utilities/positioncalculator.ngfactory.js +7 -0
  187. package/esm2015/utilities/positionelements.js +108 -0
  188. package/esm2015/utilities/positionelements.ngfactory.js +7 -0
  189. package/esm2015/utilities/testingattribute.pipe.js +17 -2
  190. package/esm2015/validation/email.validator.js +11 -2
  191. package/esm2015/validation/equals.validator.js +11 -1
  192. package/esm2015/validation/index.js +1 -1
  193. package/esm2015/validation/invaliddate.validator.js +11 -2
  194. package/esm2015/validation/isDateValid.js +11 -10
  195. package/esm2015/validation/maxdate.validator.js +14 -4
  196. package/esm2015/validation/maxtime.validator.js +14 -4
  197. package/esm2015/validation/maxvalue.validator.js +12 -2
  198. package/esm2015/validation/mindate.validator.js +14 -4
  199. package/esm2015/validation/minfiles.validator.js +12 -2
  200. package/esm2015/validation/mintextlength.validator.js +9 -1
  201. package/esm2015/validation/mintime.validator.js +14 -4
  202. package/esm2015/validation/minvalue.validator.js +12 -2
  203. package/esm2015/validation/multilanguagerequired.validator.js +11 -1
  204. package/esm2015/validation/multilanguagerequiredany.validator.js +11 -1
  205. package/esm2015/validation/notequals.validator.js +11 -1
  206. package/esm2015/validation/pattern.validator.js +12 -2
  207. package/esm2015/validation/required.validator.js +11 -2
  208. package/esm2015/validation/validation.class.js +84 -101
  209. package/esm2015/validation/validationerrorcreator.js +12 -1
  210. package/esm2015/validation/validationerroritem.js +11 -9
  211. package/fesm2015/simpleangularcontrols-sac-common.js +1823 -1226
  212. package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
  213. package/interfaces/ISacConfigurationService.d.ts +9 -1
  214. package/interfaces/ISacFileBrowserService.d.ts +43 -43
  215. package/interfaces/ISacLabelSizes.d.ts +15 -12
  216. package/interfaces/ISacLanguageService.d.ts +3 -3
  217. package/interfaces/ISacLocalisationService.d.ts +2 -2
  218. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  219. package/interfaces/iabstractcontrollabel.d.ts +4 -1
  220. package/interfaces/iconfirmcomponent.d.ts +6 -6
  221. package/interfaces/idatetimecontrol.d.ts +10 -1
  222. package/interfaces/treeviewaction.interface.d.ts +9 -0
  223. package/models/languagemodel.d.ts +9 -9
  224. package/package.json +1 -1
  225. package/public_api.d.ts +2 -1
  226. package/services/index.d.ts +3 -3
  227. package/services/sac-configuration.service.d.ts +8 -0
  228. package/services/sac-filebrowser.service.d.ts +78 -70
  229. package/services/sac-localisation.service.d.ts +11 -7
  230. package/services/sac-validationkey.service.d.ts +147 -0
  231. package/simpleangularcontrols-sac-common-10.0.0-rc.30.tgz +0 -0
  232. package/simpleangularcontrols-sac-common.metadata.json +1 -1
  233. package/utilities/convertion.d.ts +4 -4
  234. package/utilities/datatypes.d.ts +3 -3
  235. package/utilities/enums.d.ts +8 -1
  236. package/utilities/guid.d.ts +1 -1
  237. package/utilities/interpolation.d.ts +9 -8
  238. package/utilities/popuphelper.d.ts +47 -10
  239. package/utilities/positioncalculator.d.ts +82 -0
  240. package/utilities/positionelements.d.ts +30 -0
  241. package/utilities/positionelements.ngfactory.d.ts +1 -0
  242. package/utilities/testingattribute.pipe.d.ts +16 -1
  243. package/validation/email.validator.d.ts +7 -0
  244. package/validation/equals.validator.d.ts +8 -0
  245. package/validation/invaliddate.validator.d.ts +7 -0
  246. package/validation/isDateValid.d.ts +5 -2
  247. package/validation/maxdate.validator.d.ts +8 -0
  248. package/validation/maxtime.validator.d.ts +8 -0
  249. package/validation/maxvalue.validator.d.ts +8 -0
  250. package/validation/mindate.validator.d.ts +8 -0
  251. package/validation/minfiles.validator.d.ts +8 -0
  252. package/validation/mintextlength.validator.d.ts +8 -0
  253. package/validation/mintime.validator.d.ts +8 -0
  254. package/validation/minvalue.validator.d.ts +8 -0
  255. package/validation/multilanguagerequired.validator.d.ts +9 -1
  256. package/validation/multilanguagerequiredany.validator.d.ts +9 -1
  257. package/validation/notequals.validator.d.ts +8 -0
  258. package/validation/pattern.validator.d.ts +8 -0
  259. package/validation/required.validator.d.ts +7 -0
  260. package/validation/validation.class.d.ts +83 -100
  261. package/validation/validationerrorcreator.d.ts +9 -0
  262. package/validation/validationerroritem.d.ts +16 -16
  263. package/esm2015/utilities/positioning.js +0 -301
  264. package/esm2015/utilities/positioning.ngfactory.js +0 -7
  265. package/simpleangularcontrols-sac-common-10.0.0-rc.29.tgz +0 -0
  266. package/utilities/positioning.d.ts +0 -82
  267. /package/utilities/{positioning.ngfactory.d.ts → positioncalculator.ngfactory.d.ts} +0 -0
@@ -4,11 +4,11 @@ import { PopUpHelper } from '../utilities/popuphelper';
4
4
  import { Validation } from '../validation';
5
5
  import { CreateValidationError } from '../validation/validationerrorcreator';
6
6
  import { SacBaseModelControl } from './basemodelcontrol';
7
- import { ChangeDetectorRef, Directive, ElementRef, Injector, Input, ViewChild, } from '@angular/core';
7
+ import { ChangeDetectorRef, Directive, ElementRef, Injector, Input, ViewChild } from '@angular/core';
8
8
  import { IMaskDirective } from 'angular-imask';
9
9
  import * as moment_ from 'moment';
10
10
  /**
11
- * Base Klasse für Date/Time Controls
11
+ * Base class for Date/Time controls
12
12
  */
13
13
  export class SacBaseDateTimeControl extends SacBaseModelControl {
14
14
  // #endregion Properties
@@ -17,7 +17,8 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
17
17
  * Constructor
18
18
  * @param formlayout SacFormLayoutCommon to define scoped layout settings
19
19
  * @param injector Injector for injecting services
20
- * @param elementRef reference to html element
20
+ * @param elementRef Reference to html element
21
+ * @param cdRef Change detector reference for updating component view
21
22
  */
22
23
  constructor(formlayout, injector, elementRef, cdRef) {
23
24
  super(formlayout, injector);
@@ -25,11 +26,11 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
25
26
  this.cdRef = cdRef;
26
27
  // #region Properties
27
28
  /**
28
- * Helper class to display tooltip on correct position
29
+ * Helper class to display tooltips in the correct position
29
30
  */
30
31
  this.popupHelper = new PopUpHelper();
31
32
  /**
32
- * das property enthielt das Value als string. Default ist ''
33
+ * This property contains the value as a string. Default is ''
33
34
  */
34
35
  this._valueAsString = '';
35
36
  /**
@@ -37,11 +38,11 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
37
38
  */
38
39
  this.TooltipPosition = TooltipPosition;
39
40
  /**
40
- * Definiert ob der Date Selector angezeigt wird
41
+ * Defines whether the date selector is displayed
41
42
  */
42
43
  this._showselector = false;
43
44
  /**
44
- * Definiert das Control als Required
45
+ * Defines the control as required
45
46
  */
46
47
  this.isrequired = false;
47
48
  /**
@@ -79,19 +80,19 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
79
80
  */
80
81
  this.position = 'bottomend|topend';
81
82
  /**
82
- * Resource Key für Validation Message DateTimeFormat bei Control
83
+ * Resource Key for Validation Message DateTimeFormat at Control
83
84
  */
84
85
  this.validationmessagedatetimeformat = this.validationKeyService.ValidationErrorDatetimeFormat;
85
86
  /**
86
- * Resource Key für Validation Message DateTimeFormat in Validation Summary
87
+ * Resource Key for Validation Message DateTimeFormat in Validation Summary
87
88
  */
88
89
  this.validationmessagedatetimeformatsummary = this.validationKeyService.ValidationErrorSummaryDatetimeFormat;
89
90
  /**
90
- * Resource Key für Validation Message Required bei Control
91
+ * Resource Key for Validation Message Required at Control
91
92
  */
92
93
  this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
93
94
  /**
94
- * Resource Key für Validation Message Required in Validation Summary
95
+ * Resource Key for Validation Message Required in Validation Summary
95
96
  */
96
97
  this.validationmessagerequiredsummary = this.validationKeyService.ValidationErrorSummaryRequired;
97
98
  // #endregion Protected Methods
@@ -113,7 +114,7 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
113
114
  // #endregion Constructors
114
115
  // #region Public Getters And Setters
115
116
  /**
116
- * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
117
+ * Setter for the name of the container for the tooltip. Required because the tooltip can be hidden via ngIf.
117
118
  */
118
119
  set picker(picker) {
119
120
  if (picker !== undefined) {
@@ -127,7 +128,7 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
127
128
  return this.pickercontainer;
128
129
  }
129
130
  /**
130
- * getter für valuestring
131
+ * Getter for valuestring
131
132
  */
132
133
  get valuestring() {
133
134
  if (this.value === null) {
@@ -139,7 +140,7 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
139
140
  }
140
141
  }
141
142
  /**
142
- * Das Input bekommt das value von typ string
143
+ * The input receives the value of type string
143
144
  */
144
145
  set valuestring(v) {
145
146
  this._valueAsString = v;
@@ -153,6 +154,7 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
153
154
  }
154
155
  // update imaks reference
155
156
  this.cdRef.detectChanges();
157
+ this.iMask.maskRef.updateValue();
156
158
  this.iMask.maskRef.updateControl();
157
159
  }
158
160
  /**
@@ -162,7 +164,9 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
162
164
  return this.popupHelper.getDisplayPosition(this.pickerbutton, this.pickercontainer, this.getArrowWidth(), this.getArrowHeight(), this.position, false);
163
165
  }
164
166
  /**
165
- * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
167
+ * Converts a JSON date string into a UTC DateTime object that can be used by the control
168
+ * @param timestamp Date timestamp to convert
169
+ * @returns Moment object in UTC
166
170
  */
167
171
  getDate(timestamp) {
168
172
  const date = new Date(timestamp);
@@ -186,9 +190,11 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
186
190
  getPickerWidth() {
187
191
  return this.popupHelper.getPopupWidth(this.pickercontainer);
188
192
  }
189
- ngDoCheck() {
190
- // this.onContentChange();
191
- }
193
+ /**
194
+ * Clean up resources when the control is destroyed.
195
+ *
196
+ * Removes the picker element from the DOM if visible and unregisters global resize/scroll listeners.
197
+ */
192
198
  ngOnDestroy() {
193
199
  var _a;
194
200
  // Remove Picker if is visible
@@ -210,13 +216,17 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
210
216
  window.addEventListener('resize', this.onContentChange, true);
211
217
  }
212
218
  /**
213
- * setzt das value von typ string zu property valuestring
219
+ * Sets the value of type string to the property valuestring
220
+ * @param v String value to set
214
221
  */
215
222
  setValueString(v) {
216
223
  this.valuestring = v;
217
224
  }
218
225
  /**
219
- * Validator
226
+ * Validates the datetime control value format and required status.
227
+ *
228
+ * @param c AbstractControl instance to validate.
229
+ * @returns ValidationErrors if invalid, otherwise null.
220
230
  */
221
231
  validateData(c) {
222
232
  let error = null;
@@ -234,10 +244,11 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
234
244
  }
235
245
  /**
236
246
  * Overwrite WriteValue to Set correct Date Object
247
+ * @param value Date or string value to write to the control
237
248
  */
238
249
  writeValue(value) {
239
250
  if (value === '' || value === null || value === undefined) {
240
- // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
251
+ // Reset value string so that when the model is updated the input field is also cleared.
241
252
  this._valueAsString = '';
242
253
  // Set Internal Property
243
254
  this._value = null;
@@ -246,12 +257,23 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
246
257
  this._value = this.getDate(value).toDate();
247
258
  }
248
259
  super.writeValue(this._value);
260
+ // force detect changes and update imask directive
261
+ this.cdRef.detectChanges();
262
+ this.iMask.maskRef.updateValue();
249
263
  }
250
264
  // #endregion Public Methods
251
265
  // #region Protected Methods
266
+ /**
267
+ * Gets the height of the arrow element
268
+ * @returns The height in pixels of the arrow element, or 0 if not present
269
+ */
252
270
  getArrowHeight() {
253
271
  return this.pickerarrow ? this.pickerarrow.nativeElement.offsetHeight : 0;
254
272
  }
273
+ /**
274
+ * Gets the width of the arrow element
275
+ * @returns The width in pixels of the arrow element, or 0 if not present
276
+ */
255
277
  getArrowWidth() {
256
278
  return this.pickerarrow ? this.pickerarrow.nativeElement.offsetWidth : 0;
257
279
  }
@@ -306,6 +328,9 @@ export class SacBaseDateTimeControl extends SacBaseModelControl {
306
328
  }
307
329
  return value;
308
330
  }
331
+ /**
332
+ * Sets the date-time format string from the configured format property
333
+ */
309
334
  setDateTimeFormat() {
310
335
  // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
311
336
  if (this.ngControl) {
@@ -336,4 +361,4 @@ SacBaseDateTimeControl.propDecorators = {
336
361
  picker: [{ type: ViewChild, args: ['picker', { static: false },] }],
337
362
  valuestring: [{ type: Input }]
338
363
  };
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFHTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQzs7R0FFRztBQUVILE1BQU0sT0FBZ0Isc0JBQXVCLFNBQVEsbUJBQXlCO0lBK0cxRSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDSSxVQUErQixFQUMvQixRQUFrQixFQUNSLFVBQXNCLEVBQ2YsS0FBd0I7UUFFekMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUhsQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FB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QkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDcEQsTUFBTTtZQUNWO2dCQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixNQUFNO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBcUJPLGlCQUFpQjtRQUNyQixtSUFBbUk7UUFDbkksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQXlDLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDekc7SUFDTCxDQUFDOzs7WUFqYkosU0FBUzs7O1lBekJELG1CQUFtQjtZQVl4QixRQUFRO1lBRFIsVUFBVTtZQUhWLGlCQUFpQjs7O29CQWlEaEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7eUJBTTNDLEtBQUs7MEJBV0wsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MkJBTTFDLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQU0xQyxLQUFLO3VCQTJCTCxLQUFLOzhDQU1MLEtBQUs7cURBS0wsS0FBSzt3Q0FNTCxLQUFLOytDQUtMLEtBQUs7cUJBNEJMLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzBCQThCckMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcblxuLyoqXG4gKiBCYXNlIEtsYXNzZSBmw7xyIERhdGUvVGltZSBDb250cm9sc1xuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlRGF0ZVRpbWVDb250cm9sIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxEYXRlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBjbGFzcyB0byBkaXNwbGF5IHRvb2x0aXAgb24gY29ycmVjdCBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9wdXBIZWxwZXI6IFBvcFVwSGVscGVyID0gbmV3IFBvcFVwSGVscGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBkYXMgcHJvcGVydHkgZW50aGllbHQgZGFzIFZhbHVlIGFscyBzdHJpbmcuIERlZmF1bHQgaXN0ICcnXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YWx1ZUFzU3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgZGF0ZXRpbWUgcGlja2VyXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHBpY2tlcmNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IG9iIGRlciBEYXRlIFNlbGVjdG9yIGFuZ2V6ZWlndCB3aXJkXG4gICAgICovXG4gICAgcHVibGljIF9zaG93c2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBpbWFzayBkaXJlY3RpdmUgaW4gYW55IGRhdGV0aW1lIGNvbnRyb2xzXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChJTWFza0RpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGlNYXNrOiBJTWFza0RpcmVjdGl2ZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRhcyBDb250cm9sIGFscyBSZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBNb21lbnQgSlMgSW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xuXG4gICAgLyoqXG4gICAgICogQXJyb3cgSXRlbSBvZiBQaWNrZXIgRWxlbWVudC4gUmVxdWlyZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiBhcnJvdyBjb3JyZWN0bHlcbiAgICAgKi9cbiAgICBwdWJsaWMgcGlja2VyUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XG4gICAgQFZpZXdDaGlsZCgncGlja2VyYXJyb3cnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgcGlja2VyYXJyb3c6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyYnV0dG9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgcGlja2VyYnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFRleHRCb3ggUGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSBsZWZ0XG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93TGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dUb3A6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NQb3B1cExlZnQ6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBUb3A6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgZGF0ZXRpbWUgcGlja2VyLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ2JvdHRvbWVuZHx0b3BlbmQnO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5OiBzdHJpbmcgPVxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeTogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmIHJlZmVyZW5jZSB0byBodG1sIGVsZW1lbnRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgcGlja2VyKHBpY2tlcjogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAocGlja2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGlja2VyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIgPSBwaWNrZXI7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBmw7xyIHZhbHVlc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWx1ZXN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNTdHJpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5tb21lbnQudXRjKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUubG9jYWwoKS5mb3JtYXQodGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERhcyBJbnB1dCBiZWtvbW10IGRhcyB2YWx1ZSB2b24gdHlwIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZXN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9IHY7XG4gICAgICAgIGxldCBkYXRlOiBtb21lbnRfLk1vbWVudCA9IHRoaXMubW9tZW50KHYsIFt0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCldLCB0cnVlKTtcblxuICAgICAgICBkYXRlID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKGRhdGUpLnV0YygpO1xuXG4gICAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGUudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVwZGF0ZSBpbWFrcyByZWZlcmVuY2VcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuaU1hc2subWFza1JlZi51cGRhdGVDb250cm9sKCk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogRGllIG1ldGhvZGUgcmV0dXJucyBkYXRlVGltZSBpbiBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0UGlja2VyUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGllIG1ldGhvZGUgbW9kaWZpemllcnQgZGFzIGVpbmdlZ2ViZW5lIFZhbHVlIHZvbiB0eXAgTW9tZW50XG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IE1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodjogbW9tZW50Xy5Nb21lbnQpOiBtb21lbnRfLk1vbWVudDtcblxuICAgIC8qKlxuICAgICAqIEpTT04gRGF0ZSBTdHJpbmcgaW4gZWluIFVUQyBEYXRlVGltZSBPYmplY3Qga29udmVydGllcmVuLCB3ZWxjaGVzIHZvbSBDb250cm9sIHZlcndlbmRldGUgd2VyZGVuIGthbm5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0ZSh0aW1lc3RhbXApOiBtb21lbnQuTW9tZW50IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1vbWVudChEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWNrZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBwaWNrZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnBpY2tlcmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIFJlbW92ZSBQaWNrZXIgaWYgaXMgdmlzaWJsZVxuICAgICAgICBpZiAodGhpcy5fc2hvd3NlbGVjdG9yICYmIHRoaXMucGlja2VyY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucGlja2VyY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXQgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcblxuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHp0IGRhcyB2YWx1ZSB2b24gdHlwIHN0cmluZyB6dSBwcm9wZXJ0eSB2YWx1ZXN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXRWYWx1ZVN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy52YWx1ZXN0cmluZyA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdG9yXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlc3RyaW5nICE9PSBudWxsICYmIHRoaXMudmFsdWVzdHJpbmcuaW5kZXhPZignXycpID49IDApIHtcbiAgICAgICAgICAgIGVycm9yID0gQ3JlYXRlVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICdpbnZhbGlkdHlwZScsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5pc1ZhbGlkRGF0ZShcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgKShjKTtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5KShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVyd3JpdGUgV3JpdGVWYWx1ZSB0byBTZXQgY29ycmVjdCBEYXRlIE9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gUmVzZXQgVmFsdWUgU3RyaW5nLCBkYW1pdCBiZWltIFVwZGF0ZSBkZXMgTW9kZWxzIGF1Y2ggZGFzIElucHV0IEZlbGQgZ2VsZWVydCB3aXJkLlxuICAgICAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9ICcnO1xuICAgICAgICAgICAgLy8gU2V0IEludGVybmFsIFByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZ2V0RGF0ZSh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyYXJyb3cgPyB0aGlzLnBpY2tlcmFycm93Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvbkxlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uTGVmdChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHBvcC11cHMgbmV2ZXIgYXBwZWFyIG91dHNpZGUgdGhlIHZpc2libGUgYXJlYSBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAvIDIgLSAtdGhpcy5nZXRBcnJvd1dpZHRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBpY2tlcldpZHRoKCkgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSAvIDIgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcHVwSGVscGVyLmdldENvbnRhaW5lcldpZHRoKHRoaXMucGlja2VyYnV0dG9uLCBmYWxzZSkgLyAyO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29ycmVjdGlvbiBieSBBcnJvdyBpZiBwb3B1cCBpcyBvdXRzaWRlIHRoZSBsZWZ0IG1hcmdpblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgLT0gdmFsdWUgKiAtMSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uVG9wKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvc1BvcHVwVG9wID0gdmFsdWU7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gdGhpcy5nZXRQaWNrZXJIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9zaG93c2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvbkxlZnQoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb25Ub3AoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0RGF0ZVRpbWVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSURhdGVUaW1lQ29udHJvbCkuZGF0ZXRpbWVmb3JtYXRzdHJpbmcgPSB0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQzs7R0FFRztBQUVILE1BQU0sT0FBZ0Isc0JBQXVCLFNBQVEsbUJBQXlCO0lBbUgxRSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDUixVQUFzQixFQUNmLEtBQXdCO1FBRXpDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNmLFVBQUssR0FBTCxLQUFLLENB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b24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgRGF0ZS9UaW1lIGNvbnRyb2xzXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Jhc2VEYXRlVGltZUNvbnRyb2wgZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPERhdGU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBjb250YWlucyB0aGUgdmFsdWUgYXMgYSBzdHJpbmcuIERlZmF1bHQgaXMgJydcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ZhbHVlQXNTdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIENvbnRhaW5lcnMgZm9yIHRoZSBkYXRldGltZSBwaWNrZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGlja2VyY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGZvciBlbnVtIGluIEFuZ3VsYXIgSFRNTCB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGRhdGUgc2VsZWN0b3IgaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHVibGljIF9zaG93c2VsZWN0b3IgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBpbWFzayBkaXJlY3RpdmUgaW4gYW55IGRhdGV0aW1lIGNvbnRyb2xzXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChJTWFza0RpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGlNYXNrOiBJTWFza0RpcmVjdGl2ZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY29udHJvbCBhcyByZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBNb21lbnQgSlMgSW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xuXG4gICAgLyoqXG4gICAgICogQXJyb3cgSXRlbSBvZiBQaWNrZXIgRWxlbWVudC4gUmVxdWlyZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiBhcnJvdyBjb3JyZWN0bHlcbiAgICAgKi9cbiAgICBwdWJsaWMgcGlja2VyUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIHBpY2tlciBhcnJvdyBlbGVtZW50IHVzZWQgZm9yIGNhbGN1bGF0aW5nIHRvb2x0aXAgYXJyb3cgcG9zaXRpb24uXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyYXJyb3cnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgcGlja2VyYXJyb3c6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyYnV0dG9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgcGlja2VyYnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFRleHRCb3ggUGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSBsZWZ0XG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93TGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dUb3A6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NQb3B1cExlZnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc1BvcHVwVG9wID0gMDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBkYXRldGltZSBwaWNrZXIuIFZhbHVlczogbGVmdHx0b3B8cmlnaHR8Ym90dG9tfGF1dG9cbiAgICAgKlxuICAgICAqIFZhbHVlICdhdXRvJyBjYW4gYmUgY29tYmluZWQgd2l0aCBhbm90aGVyIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBvc2l0aW9uID0gJ2JvdHRvbWVuZHx0b3BlbmQnO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgYXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0OiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckRhdGV0aW1lRm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5OiBzdHJpbmcgPVxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmb3IgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGF0IENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmb3IgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeTogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmIFJlZmVyZW5jZSB0byBodG1sIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY2RSZWYgQ2hhbmdlIGRldGVjdG9yIHJlZmVyZW5jZSBmb3IgdXBkYXRpbmcgY29tcG9uZW50IHZpZXdcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBSZXF1aXJlZCBiZWNhdXNlIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIHNldCBwaWNrZXIocGlja2VyOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChwaWNrZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwaWNrZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lciA9IHBpY2tlcjtcbiAgICAgICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdG9wKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJjb250YWluZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0dGVyIGZvciB2YWx1ZXN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWVzdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUFzU3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMubW9tZW50LnV0Yyh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmxvY2FsKCkuZm9ybWF0KHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW5wdXQgcmVjZWl2ZXMgdGhlIHZhbHVlIG9mIHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlc3RyaW5nKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gdjtcbiAgICAgICAgbGV0IGRhdGU6IG1vbWVudF8uTW9tZW50ID0gdGhpcy5tb21lbnQodiwgW3RoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKV0sIHRydWUpO1xuXG4gICAgICAgIGRhdGUgPSB0aGlzLk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUoZGF0ZSkudXRjKCk7XG5cbiAgICAgICAgaWYgKGRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZS50b0RhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXBkYXRlIGltYWtzIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5pTWFzay5tYXNrUmVmLnVwZGF0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuaU1hc2subWFza1JlZi51cGRhdGVDb250cm9sKCk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCByZXR1cm5zIGRhdGVUaW1lIGFzIGEgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEdldFBpY2tlclBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBtZXRob2QgbW9kaWZpZXMgdGhlIGVudGVyZWQgdmFsdWUgb2YgdHlwZSBNb21lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgTW9kaWZ5UGFyc2VkRGF0ZVRpbWVWYWx1ZSh2OiBtb21lbnRfLk1vbWVudCk6IG1vbWVudF8uTW9tZW50O1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSBKU09OIGRhdGUgc3RyaW5nIGludG8gYSBVVEMgRGF0ZVRpbWUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGNvbnRyb2xcbiAgICAgKiBAcGFyYW0gdGltZXN0YW1wIERhdGUgdGltZXN0YW1wIHRvIGNvbnZlcnRcbiAgICAgKiBAcmV0dXJucyBNb21lbnQgb2JqZWN0IGluIFVUQ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRlKHRpbWVzdGFtcCk6IG1vbWVudC5Nb21lbnQge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubW9tZW50KERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIGdldFBpY2tlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnBpY2tlcmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBpY2tlclxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWNrZXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cFdpZHRoKHRoaXMucGlja2VyY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhbiB1cCByZXNvdXJjZXMgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBSZW1vdmVzIHRoZSBwaWNrZXIgZWxlbWVudCBmcm9tIHRoZSBET00gaWYgdmlzaWJsZSBhbmQgdW5yZWdpc3RlcnMgZ2xvYmFsIHJlc2l6ZS9zY3JvbGwgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmVtb3ZlIFBpY2tlciBpZiBpcyB2aXNpYmxlXG4gICAgICAgIGlmICh0aGlzLl9zaG93c2VsZWN0b3IgJiYgdGhpcy5waWNrZXJjb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5waWNrZXJjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdCBFdmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdHlwZSBzdHJpbmcgdG8gdGhlIHByb3BlcnR5IHZhbHVlc3RyaW5nXG4gICAgICogQHBhcmFtIHYgU3RyaW5nIHZhbHVlIHRvIHNldFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRWYWx1ZVN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy52YWx1ZXN0cmluZyA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIHRoZSBkYXRldGltZSBjb250cm9sIHZhbHVlIGZvcm1hdCBhbmQgcmVxdWlyZWQgc3RhdHVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGMgQWJzdHJhY3RDb250cm9sIGluc3RhbmNlIHRvIHZhbGlkYXRlLlxuICAgICAqIEByZXR1cm5zIFZhbGlkYXRpb25FcnJvcnMgaWYgaW52YWxpZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlc3RyaW5nICE9PSBudWxsICYmIHRoaXMudmFsdWVzdHJpbmcuaW5kZXhPZignXycpID49IDApIHtcbiAgICAgICAgICAgIGVycm9yID0gQ3JlYXRlVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICdpbnZhbGlkdHlwZScsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5pc1ZhbGlkRGF0ZShcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgKShjKTtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5KShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVyd3JpdGUgV3JpdGVWYWx1ZSB0byBTZXQgY29ycmVjdCBEYXRlIE9iamVjdFxuICAgICAqIEBwYXJhbSB2YWx1ZSBEYXRlIG9yIHN0cmluZyB2YWx1ZSB0byB3cml0ZSB0byB0aGUgY29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gUmVzZXQgdmFsdWUgc3RyaW5nIHNvIHRoYXQgd2hlbiB0aGUgbW9kZWwgaXMgdXBkYXRlZCB0aGUgaW5wdXQgZmllbGQgaXMgYWxzbyBjbGVhcmVkLlxuICAgICAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9ICcnO1xuICAgICAgICAgICAgLy8gU2V0IEludGVybmFsIFByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZ2V0RGF0ZSh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcblxuICAgICAgICAvLyBmb3JjZSBkZXRlY3QgY2hhbmdlcyBhbmQgdXBkYXRlIGltYXNrIGRpcmVjdGl2ZVxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5pTWFzay5tYXNrUmVmLnVwZGF0ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBhcnJvdyBlbGVtZW50XG4gICAgICogQHJldHVybnMgVGhlIGhlaWdodCBpbiBwaXhlbHMgb2YgdGhlIGFycm93IGVsZW1lbnQsIG9yIDAgaWYgbm90IHByZXNlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyYXJyb3cgPyB0aGlzLnBpY2tlcmFycm93Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB3aWR0aCBvZiB0aGUgYXJyb3cgZWxlbWVudFxuICAgICAqIEByZXR1cm5zIFRoZSB3aWR0aCBpbiBwaXhlbHMgb2YgdGhlIGFycm93IGVsZW1lbnQsIG9yIDAgaWYgbm90IHByZXNlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvbkxlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uTGVmdChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHBvcC11cHMgbmV2ZXIgYXBwZWFyIG91dHNpZGUgdGhlIHZpc2libGUgYXJlYSBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAvIDIgLSAtdGhpcy5nZXRBcnJvd1dpZHRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBpY2tlcldpZHRoKCkgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSAvIDIgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcHVwSGVscGVyLmdldENvbnRhaW5lcldpZHRoKHRoaXMucGlja2VyYnV0dG9uLCBmYWxzZSkgLyAyO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29ycmVjdGlvbiBieSBBcnJvdyBpZiBwb3B1cCBpcyBvdXRzaWRlIHRoZSBsZWZ0IG1hcmdpblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgLT0gdmFsdWUgKiAtMSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uVG9wKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvc1BvcHVwVG9wID0gdmFsdWU7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gdGhpcy5nZXRQaWNrZXJIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9zaG93c2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvbkxlZnQoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb25Ub3AoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRhdGUtdGltZSBmb3JtYXQgc3RyaW5nIGZyb20gdGhlIGNvbmZpZ3VyZWQgZm9ybWF0IHByb3BlcnR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXREYXRlVGltZUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJRGF0ZVRpbWVDb250cm9sKS5kYXRldGltZWZvcm1hdHN0cmluZyA9IHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXX0=
@@ -1,22 +1,22 @@
1
- import { Directive, Input } from '@angular/core';
2
1
  import { SacBaseModelControl } from './basemodelcontrol';
2
+ import { Directive, Input } from '@angular/core';
3
3
  /**
4
- * Abstract Klasse für SacInputBase. Extendes SacBaseModelControl
4
+ * Abstract class for SacInputBase. Extends SacBaseModelControl
5
5
  */
6
6
  export class SacInputBase extends SacBaseModelControl {
7
7
  constructor() {
8
8
  // #region Properties
9
9
  super(...arguments);
10
10
  /**
11
- * Erlaubte Zeichen bei der Eingabe
11
+ * Allowed characters for input
12
12
  */
13
13
  this.allowedchars = '';
14
14
  /**
15
- * Autofill aktivieren oder deaktivieren
15
+ * Enable or disable autofill
16
16
  */
17
17
  this.disableautocomplete = false;
18
18
  /**
19
- * Definiert das Control als Required
19
+ * Defines the control as required
20
20
  */
21
21
  this.isrequired = false;
22
22
  /**
@@ -24,7 +24,7 @@ export class SacInputBase extends SacBaseModelControl {
24
24
  */
25
25
  this.placeholder = null;
26
26
  /**
27
- * Macht das Input readonly
27
+ * Makes the input readonly
28
28
  */
29
29
  this.readonly = false;
30
30
  // #endregion Protected Methods
@@ -32,16 +32,18 @@ export class SacInputBase extends SacBaseModelControl {
32
32
  // #endregion Properties
33
33
  // #region Public Methods
34
34
  /**
35
- * Methode validiert Input wenn KeyPress-Event passiert
35
+ * Method validates input when keypress event occurs
36
+ * @param event Keyboard event object
37
+ * @returns Boolean indicating whether the event should propagate
36
38
  */
37
39
  onKeyPress(event) {
38
- // Cancel wenn _allowedChars leer ist.
40
+ // Cancel if _allowedChars is empty.
39
41
  if (this.allowedchars.length === 0) {
40
42
  return true;
41
43
  }
42
44
  // Validate Input
43
45
  const character = event.key;
44
- // Zeichen in Allowed Chars nicht gefunden, Event nicht weitergeben
46
+ // Character not found in allowed chars, do not propagate event
45
47
  if (this.allowedchars.indexOf(character) < 0) {
46
48
  event.preventDefault();
47
49
  }
@@ -53,7 +55,7 @@ export class SacInputBase extends SacBaseModelControl {
53
55
  // #endregion Public Methods
54
56
  // #region Protected Methods
55
57
  /**
56
- * Methode validiert wenn ein Drück-Event passiert
58
+ * Method validates when a keypress event occurs
57
59
  */
58
60
  OnKeyPressValidation(position, character) {
59
61
  return true;
@@ -70,4 +72,4 @@ SacInputBase.propDecorators = {
70
72
  readonly: [{ type: Input }],
71
73
  regexvalidation: [{ type: Input }]
72
74
  };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWlucHV0Y29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbW1vbi9iYXNlaW5wdXRjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXpEOztHQUVHO0FBRUgsTUFBTSxPQUFnQixZQUFvQixTQUFRLG1CQUEwQjtJQUQ1RTtRQUVFLHFCQUFxQjs7UUFFckI7O1dBRUc7UUFDYSxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQzs7V0FFRztRQUNhLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyRDs7V0FFRztRQUNhLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUM7O1dBRUc7UUFDYSxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUE0QzFDLCtCQUErQjtJQUNqQyxDQUFDO0lBdkNDLHdCQUF3QjtJQUV4Qix5QkFBeUI7SUFFekI7O09BRUc7SUFDSSxVQUFVLENBQUMsS0FBb0I7UUFDcEMsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxpQkFBaUI7UUFDakIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM1QixtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFFdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3RFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsNEJBQTRCO0lBRTVCOztPQUVHO0lBQ08sb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxTQUFpQjtRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OztZQWpFRixTQUFTOzs7MkJBT1AsS0FBSztrQ0FJTCxLQUFLO3lCQUlMLEtBQUs7MEJBSUwsS0FBSzt1QkFJTCxLQUFLOzhCQUlMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcblxuLyoqXG4gKiBBYnN0cmFjdCBLbGFzc2UgZsO8ciBTYWNJbnB1dEJhc2UuIEV4dGVuZGVzIFNhY0Jhc2VNb2RlbENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjSW5wdXRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IHtcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIEVybGF1YnRlIFplaWNoZW4gYmVpIGRlciBFaW5nYWJlXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dlZGNoYXJzOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIEF1dG9maWxsIGFrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlYXV0b2NvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGV4dEJveCBQbGFjZWhvbGRlclxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuICAvKipcbiAgICogTWFjaHQgZGFzIElucHV0IHJlYWRvbmx5XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIERlZmluaWVydCBkYXMgRmVsZCBhbHMgdmFsaWQvaW52YWxpZCB2b24gZWluZ2VnZWJlbmVuIHJlZ2V4LXBhdHRlcm5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyByZWdleHZhbGlkYXRpb246IHN0cmluZztcblxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgLyoqXG4gICAqIE1ldGhvZGUgdmFsaWRpZXJ0IElucHV0IHdlbm4gS2V5UHJlc3MtRXZlbnQgcGFzc2llcnRcbiAgICovXG4gIHB1YmxpYyBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogQm9vbGVhbiB7XG4gICAgLy8gQ2FuY2VsIHdlbm4gX2FsbG93ZWRDaGFycyBsZWVyIGlzdC5cbiAgICBpZiAodGhpcy5hbGxvd2VkY2hhcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBJbnB1dFxuICAgIGNvbnN0IGNoYXJhY3RlciA9IGV2ZW50LmtleTtcbiAgICAvLyBaZWljaGVuIGluIEFsbG93ZWQgQ2hhcnMgbmljaHQgZ2VmdW5kZW4sIEV2ZW50IG5pY2h0IHdlaXRlcmdlYmVuXG4gICAgaWYgKHRoaXMuYWxsb3dlZGNoYXJzLmluZGV4T2YoY2hhcmFjdGVyKSA8IDApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRDb250cm9sID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuT25LZXlQcmVzc1ZhbGlkYXRpb24oaW5wdXRDb250cm9sLnNlbGVjdGlvblN0YXJ0LCBjaGFyYWN0ZXIpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgLyoqXG4gICAqIE1ldGhvZGUgdmFsaWRpZXJ0IHdlbm4gZWluIERyw7xjay1FdmVudCBwYXNzaWVydFxuICAgKi9cbiAgcHJvdGVjdGVkIE9uS2V5UHJlc3NWYWxpZGF0aW9uKHBvc2l0aW9uOiBudW1iZXIsIGNoYXJhY3Rlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWlucHV0Y29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbW1vbi9iYXNlaW5wdXRjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpEOztHQUVHO0FBRUgsTUFBTSxPQUFnQixZQUFvQixTQUFRLG1CQUEwQjtJQUQ1RTtRQUVJLHFCQUFxQjs7UUFFckI7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQzs7V0FFRztRQUNhLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1Qzs7V0FFRztRQUNhLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFDYSxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUUzQzs7V0FFRztRQUNhLGFBQVEsR0FBRyxLQUFLLENBQUM7UUErQ2pDLCtCQUErQjtJQUNuQyxDQUFDO0lBekNHLHdCQUF3QjtJQUV4Qix5QkFBeUI7SUFFekI7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxLQUFvQjtRQUNsQyxvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELGlCQUFpQjtRQUNqQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzVCLCtEQUErRDtRQUMvRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7UUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUV0RCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDcEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELDRCQUE0QjtJQUU1Qiw0QkFBNEI7SUFFNUI7O09BRUc7SUFDTyxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzlELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OztZQXhFSixTQUFTOzs7MkJBT0wsS0FBSztrQ0FLTCxLQUFLO3lCQUtMLEtBQUs7MEJBS0wsS0FBSzt1QkFLTCxLQUFLOzhCQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBmb3IgU2FjSW5wdXRCYXNlLiBFeHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjSW5wdXRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEFsbG93ZWQgY2hhcmFjdGVycyBmb3IgaW5wdXRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dlZGNoYXJzID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhdXRvZmlsbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlYXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBjb250cm9sIGFzIHJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRleHRCb3ggUGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyB0aGUgaW5wdXQgcmVhZG9ubHlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGZpZWxkIGFzIHZhbGlkL2ludmFsaWQgYnkgZW50ZXJlZCByZWdleCBwYXR0ZXJuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHJlZ2V4dmFsaWRhdGlvbjogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdmFsaWRhdGVzIGlucHV0IHdoZW4ga2V5cHJlc3MgZXZlbnQgb2NjdXJzXG4gICAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkIGV2ZW50IG9iamVjdFxuICAgICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgcHJvcGFnYXRlXG4gICAgICovXG4gICAgcHVibGljIG9uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBCb29sZWFuIHtcbiAgICAgICAgLy8gQ2FuY2VsIGlmIF9hbGxvd2VkQ2hhcnMgaXMgZW1wdHkuXG4gICAgICAgIGlmICh0aGlzLmFsbG93ZWRjaGFycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgSW5wdXRcbiAgICAgICAgY29uc3QgY2hhcmFjdGVyID0gZXZlbnQua2V5O1xuICAgICAgICAvLyBDaGFyYWN0ZXIgbm90IGZvdW5kIGluIGFsbG93ZWQgY2hhcnMsIGRvIG5vdCBwcm9wYWdhdGUgZXZlbnRcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dlZGNoYXJzLmluZGV4T2YoY2hhcmFjdGVyKSA8IDApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dENvbnRyb2wgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgICAgICBpZiAoIXRoaXMuT25LZXlQcmVzc1ZhbGlkYXRpb24oaW5wdXRDb250cm9sLnNlbGVjdGlvblN0YXJ0LCBjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHZhbGlkYXRlcyB3aGVuIGEga2V5cHJlc3MgZXZlbnQgb2NjdXJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIE9uS2V5UHJlc3NWYWxpZGF0aW9uKHBvc2l0aW9uOiBudW1iZXIsIGNoYXJhY3Rlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcbn1cbiJdfQ==
@@ -1,40 +1,44 @@
1
- import { Directive, Input, TemplateRef } from '@angular/core';
2
1
  import { SacBaseModelControl } from './basemodelcontrol';
2
+ import { Directive, Input, TemplateRef } from '@angular/core';
3
3
  /**
4
- * Abstract Klasse für SacBaseListControl. Extendes SacBaseModelControl
4
+ * Abstract class for SacBaseListControl. Extends SacBaseModelControl
5
5
  */
6
6
  export class SacBaseListControl extends SacBaseModelControl {
7
7
  constructor() {
8
+ // #region Properties
8
9
  super(...arguments);
9
10
  /**
10
- * Definiert das Label für das Option Element
11
+ * Defines the control as required
11
12
  */
12
- this.optionlabel = 'label';
13
+ this.isrequired = false;
13
14
  /**
14
- * Definiert den Wert für das Option Element
15
+ * Defines whether the option element is active
15
16
  */
16
- this.optionvalue = 'value';
17
+ this.optionenabled = '';
17
18
  /**
18
- * Definiert, ob das Option Element aktiv ist
19
+ * Defines the label for the option element
19
20
  */
20
- this.optionenabled = '';
21
+ this.optionlabel = 'label';
21
22
  /**
22
- * Definiert das Control als Required
23
+ * Defines the value for the option element
23
24
  */
24
- this.isrequired = false;
25
+ this.optionvalue = 'value';
25
26
  /**
26
- * Style Breite für List Control Element
27
+ * Style width for list control element
27
28
  */
28
29
  this.width = null;
30
+ // #endregion Public Getters And Setters
29
31
  }
32
+ // #endregion Properties
33
+ // #region Public Getters And Setters
30
34
  /**
31
- * Input property für options
35
+ * Input property for options
32
36
  */
33
37
  get options() {
34
38
  return this._options;
35
39
  }
36
40
  /**
37
- * setter für options
41
+ * Setter for options
38
42
  */
39
43
  set options(val) {
40
44
  this._options = val;
@@ -44,12 +48,12 @@ SacBaseListControl.decorators = [
44
48
  { type: Directive }
45
49
  ];
46
50
  SacBaseListControl.propDecorators = {
47
- optionlabeltemplate: [{ type: Input }],
51
+ isrequired: [{ type: Input }],
52
+ optionenabled: [{ type: Input }],
48
53
  optionlabel: [{ type: Input }],
54
+ optionlabeltemplate: [{ type: Input }],
49
55
  optionvalue: [{ type: Input }],
50
- optionenabled: [{ type: Input }],
51
- isrequired: [{ type: Input }],
52
56
  width: [{ type: Input }],
53
57
  options: [{ type: Input }]
54
58
  };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWxpc3Rjb250cm9sLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29tbW9uL2Jhc2VsaXN0Y29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGtCQUVwQixTQUFRLG1CQUEwQjtJQUhwQzs7UUFlRTs7V0FFRztRQUNNLGdCQUFXLEdBQVcsT0FBTyxDQUFDO1FBRXZDOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxPQUFPLENBQUM7UUFFdkM7O1dBRUc7UUFDTSxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUVwQzs7V0FFRztRQUNNLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFckM7O1dBRUc7UUFDTSxVQUFLLEdBQVcsSUFBSSxDQUFDO0lBZWhDLENBQUM7SUFiQzs7T0FFRztJQUNILElBQWEsT0FBTztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPLENBQUMsR0FBVTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUN0QixDQUFDOzs7WUFwREYsU0FBUzs7O2tDQVlQLEtBQUs7MEJBTUwsS0FBSzswQkFLTCxLQUFLOzRCQUtMLEtBQUs7eUJBS0wsS0FBSztvQkFLTCxLQUFLO3NCQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5cbi8qKlxuICogQWJzdHJhY3QgS2xhc3NlIGbDvHIgU2FjQmFzZUxpc3RDb250cm9sLiBFeHRlbmRlcyBTYWNCYXNlTW9kZWxDb250cm9sXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Jhc2VMaXN0Q29udHJvbDxcbiAgVkFMVUVcbj4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiB7XG4gIC8qKlxuICAgKiBvcHRpb25zLiBUeXA6IGFueVxuICAgKi9cbiAgX29wdGlvbnM6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmw7xyIFZhbHVlIEVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG9wdGlvbmxhYmVsdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIERlZmluaWVydCBkYXMgTGFiZWwgZsO8ciBkYXMgT3B0aW9uIEVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbmxhYmVsOiBzdHJpbmcgPSAnbGFiZWwnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmllcnQgZGVuIFdlcnQgZsO8ciBkYXMgT3B0aW9uIEVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnZhbHVlOiBzdHJpbmcgPSAndmFsdWUnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmllcnQsIG9iIGRhcyBPcHRpb24gRWxlbWVudCBha3RpdiBpc3RcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbmVuYWJsZWQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKSBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFN0eWxlIEJyZWl0ZSBmw7xyIExpc3QgQ29udHJvbCBFbGVtZW50XG4gICAqL1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgZsO8ciBvcHRpb25zXG4gICAqL1xuICBASW5wdXQoKSBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogc2V0dGVyIGbDvHIgb3B0aW9uc1xuICAgKi9cbiAgc2V0IG9wdGlvbnModmFsOiBhbnlbXSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gIH1cbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWxpc3Rjb250cm9sLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29tbW9uL2Jhc2VsaXN0Y29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGtCQUEwQixTQUFRLG1CQUEwQjtJQURsRjtRQUVJLHFCQUFxQjs7UUFPckI7O1dBRUc7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5DOztXQUVHO1FBQ2Esa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkM7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQVF0Qzs7V0FFRztRQUNhLGdCQUFXLEdBQUcsT0FBTyxDQUFDO1FBRXRDOztXQUVHO1FBQ2EsVUFBSyxHQUFXLElBQUksQ0FBQztRQW9CckMsd0NBQXdDO0lBQzVDLENBQUM7SUFuQkcsd0JBQXdCO0lBRXhCLHFDQUFxQztJQUVyQzs7T0FFRztJQUNILElBQW9CLE9BQU87UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTyxDQUFDLEdBQVU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQzs7O1lBeERKLFNBQVM7Ozt5QkFZTCxLQUFLOzRCQUtMLEtBQUs7MEJBS0wsS0FBSztrQ0FLTCxLQUFLOzBCQU1MLEtBQUs7b0JBS0wsS0FBSztzQkFTTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBTYWNCYXNlTGlzdENvbnRyb2wuIEV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlTGlzdENvbnRyb2w8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4ge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogb3B0aW9ucy4gVHlwOiBhbnlcbiAgICAgKi9cbiAgICBwdWJsaWMgX29wdGlvbnM6IGFueVtdO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY29udHJvbCBhcyByZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIG9wdGlvbiBlbGVtZW50IGlzIGFjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25lbmFibGVkID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBsYWJlbCBmb3IgdGhlIG9wdGlvbiBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG9wdGlvbmxhYmVsID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFRlbXBsYXRlIGZvciB2YWx1ZSBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3B0aW9ubGFiZWx0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHZhbHVlIGZvciB0aGUgb3B0aW9uIGVsZW1lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgb3B0aW9udmFsdWUgPSAndmFsdWUnO1xuXG4gICAgLyoqXG4gICAgICogU3R5bGUgd2lkdGggZm9yIGxpc3QgY29udHJvbCBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHdpZHRoOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3Igb3B0aW9uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3Igb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgb3B0aW9ucyh2YWw6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xufVxuIl19