@simpleangularcontrols/sac-common 10.0.0-rc.2 → 10.0.0-rc.21

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 (140) hide show
  1. package/bundles/simpleangularcontrols-sac-common.umd.js +2232 -1604
  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 +100 -14
  6. package/common/baseinputcontrol.d.ts +0 -4
  7. package/common/basemodelcontrol.d.ts +55 -27
  8. package/common/baseuploadcontrol.d.ts +71 -55
  9. package/controls/checkbox/checkbox.d.ts +12 -3
  10. package/controls/checkbox/radiobutton.d.ts +61 -26
  11. package/controls/contextmenu/contextmenu.d.ts +26 -19
  12. package/controls/contextmenu/contextmenu.interface.d.ts +3 -0
  13. package/controls/contextmenu/contextmenuitem.d.ts +5 -0
  14. package/controls/contextmenu/contextmenuitembutton.d.ts +21 -20
  15. package/controls/datetime/date.d.ts +28 -31
  16. package/controls/datetime/datetime.d.ts +27 -31
  17. package/controls/datetime/time.d.ts +26 -30
  18. package/controls/dialog/dialog.d.ts +31 -43
  19. package/controls/grid/grid.d.ts +38 -36
  20. package/controls/grid/gridbutton.d.ts +13 -13
  21. package/controls/grid/gridcolumn.d.ts +8 -8
  22. package/controls/grid/gridcolumnaction.d.ts +3 -3
  23. package/controls/grid/gridcolumnbase.d.ts +45 -37
  24. package/controls/grid/gridimage.d.ts +2 -2
  25. package/controls/grid/model.d.ts +51 -42
  26. package/controls/grid/paging.d.ts +41 -43
  27. package/controls/input/input.d.ts +3 -3
  28. package/controls/input/inputarea.d.ts +5 -5
  29. package/controls/input/inputpassword.d.ts +7 -7
  30. package/controls/input/inputsearch.d.ts +13 -4
  31. package/controls/layout/formlayout.d.ts +17 -1
  32. package/controls/list/buildvaluestring.d.ts +6 -0
  33. package/controls/list/dropdown.d.ts +9 -51
  34. package/controls/list/dropdownoptions.d.ts +38 -0
  35. package/controls/multilanguage/multilanguageinput.d.ts +2 -2
  36. package/controls/multilanguage/multilanguageinputarea.d.ts +4 -4
  37. package/controls/static/formcontainer.d.ts +7 -3
  38. package/controls/tooltip/tooltip.d.ts +76 -69
  39. package/controls/treeview/treeview.d.ts +107 -107
  40. package/esm2015/common/basedatetimecontrol.js +185 -30
  41. package/esm2015/common/baseinputcontrol.js +2 -7
  42. package/esm2015/common/basemodelcontrol.js +109 -57
  43. package/esm2015/common/baseuploadcontrol.js +92 -59
  44. package/esm2015/controls/checkbox/checkbox.js +29 -6
  45. package/esm2015/controls/checkbox/radiobutton.js +94 -45
  46. package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -0
  47. package/esm2015/controls/contextmenu/contextmenu.interface.ngfactory.js +7 -0
  48. package/esm2015/controls/contextmenu/contextmenu.js +22 -23
  49. package/esm2015/controls/contextmenu/contextmenuitem.js +13 -2
  50. package/esm2015/controls/contextmenu/contextmenuitembutton.js +34 -25
  51. package/esm2015/controls/datetime/date.js +44 -43
  52. package/esm2015/controls/datetime/datetime.js +43 -43
  53. package/esm2015/controls/datetime/time.js +43 -43
  54. package/esm2015/controls/dialog/dialog.js +41 -83
  55. package/esm2015/controls/grid/grid.js +21 -21
  56. package/esm2015/controls/grid/gridbutton.js +19 -13
  57. package/esm2015/controls/grid/gridcolumn.js +14 -7
  58. package/esm2015/controls/grid/gridcolumnaction.js +6 -5
  59. package/esm2015/controls/grid/gridcolumnbase.js +67 -55
  60. package/esm2015/controls/grid/gridimage.js +3 -3
  61. package/esm2015/controls/grid/model.js +51 -30
  62. package/esm2015/controls/grid/paging.js +40 -42
  63. package/esm2015/controls/input/input.js +6 -8
  64. package/esm2015/controls/input/inputarea.js +19 -12
  65. package/esm2015/controls/input/inputpassword.js +12 -12
  66. package/esm2015/controls/input/inputsearch.js +35 -6
  67. package/esm2015/controls/layout/formlayout.js +20 -8
  68. package/esm2015/controls/list/buildvaluestring.js +18 -0
  69. package/esm2015/controls/{treeview/ngtreeitemaction.ngfactory.js → list/buildvaluestring.ngfactory.js} +1 -1
  70. package/esm2015/controls/list/dropdown.js +16 -114
  71. package/esm2015/controls/list/dropdownoptions.js +72 -0
  72. package/esm2015/controls/{treeview/treeviewchild.ngfactory.js → list/dropdownoptions.ngfactory.js} +1 -1
  73. package/esm2015/controls/multilanguage/multilanguageinput.js +8 -14
  74. package/esm2015/controls/multilanguage/multilanguageinputarea.js +9 -15
  75. package/esm2015/controls/static/formcontainer.js +16 -5
  76. package/esm2015/controls/tooltip/tooltip.js +126 -245
  77. package/esm2015/controls/treeview/treeview.js +276 -231
  78. package/esm2015/interfaces/ISacConfigurationService.js +1 -1
  79. package/esm2015/interfaces/ISacIconService.js +1 -1
  80. package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -0
  81. package/esm2015/interfaces/ISacUploadEventCompleteState.ngfactory.js +7 -0
  82. package/esm2015/interfaces/ISacValidationKeyService.js +1 -1
  83. package/esm2015/interfaces/treeviewaction.interface.js +1 -0
  84. package/esm2015/interfaces/treeviewaction.interface.ngfactory.js +7 -0
  85. package/esm2015/public_api.js +15 -8
  86. package/esm2015/services/sac-configuration.service.js +31 -5
  87. package/esm2015/services/sac-icon.service.js +37 -1
  88. package/esm2015/services/sac-localisation.service.js +69 -180
  89. package/esm2015/services/sac-validationkey.service.js +12 -9
  90. package/esm2015/simpleangularcontrols-sac-common.js +1 -7
  91. package/esm2015/utilities/enums.js +5 -1
  92. package/esm2015/utilities/guid.js +4 -2
  93. package/esm2015/utilities/popuphelper.js +343 -0
  94. package/esm2015/utilities/popuphelper.ngfactory.js +7 -0
  95. package/esm2015/validation/equals.validator.js +14 -0
  96. package/esm2015/validation/equals.validator.ngfactory.js +7 -0
  97. package/esm2015/validation/isDateValid.js +9 -1
  98. package/esm2015/validation/mintextlength.validator.js +23 -0
  99. package/esm2015/validation/mintextlength.validator.ngfactory.js +7 -0
  100. package/esm2015/validation/notequals.validator.js +14 -0
  101. package/esm2015/validation/{minlength.validator.ngfactory.js → notequals.validator.ngfactory.js} +1 -1
  102. package/esm2015/validation/validation.class.js +35 -6
  103. package/fesm2015/simpleangularcontrols-sac-common.js +2070 -1498
  104. package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
  105. package/interfaces/ISacConfigurationService.d.ts +20 -0
  106. package/interfaces/ISacIconService.d.ts +24 -0
  107. package/interfaces/ISacUploadEventCompleteState.d.ts +5 -0
  108. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +1 -0
  109. package/interfaces/ISacValidationKeyService.d.ts +2 -2
  110. package/interfaces/treeviewaction.interface.d.ts +4 -0
  111. package/interfaces/treeviewaction.interface.ngfactory.d.ts +1 -0
  112. package/package.json +2 -2
  113. package/public_api.d.ts +13 -6
  114. package/services/sac-configuration.service.d.ts +40 -0
  115. package/services/sac-icon.service.d.ts +49 -1
  116. package/services/sac-localisation.service.d.ts +10 -10
  117. package/services/sac-validationkey.service.d.ts +7 -7
  118. package/simpleangularcontrols-sac-common-10.0.0-rc.21.tgz +0 -0
  119. package/simpleangularcontrols-sac-common.d.ts +0 -6
  120. package/simpleangularcontrols-sac-common.metadata.json +1 -1
  121. package/utilities/enums.d.ts +3 -1
  122. package/utilities/popuphelper.d.ts +83 -0
  123. package/utilities/popuphelper.ngfactory.d.ts +1 -0
  124. package/validation/equals.validator.d.ts +2 -0
  125. package/validation/equals.validator.ngfactory.d.ts +1 -0
  126. package/validation/mintextlength.validator.d.ts +2 -0
  127. package/validation/mintextlength.validator.ngfactory.d.ts +1 -0
  128. package/validation/notequals.validator.d.ts +2 -0
  129. package/validation/notequals.validator.ngfactory.d.ts +1 -0
  130. package/validation/validation.class.d.ts +22 -3
  131. package/controls/treeview/ngtreeitemaction.d.ts +0 -40
  132. package/controls/treeview/treeviewchild.d.ts +0 -12
  133. package/esm2015/controls/treeview/ngtreeitemaction.js +0 -60
  134. package/esm2015/controls/treeview/treeviewchild.js +0 -18
  135. package/esm2015/validation/minlength.validator.js +0 -21
  136. package/simpleangularcontrols-sac-common-10.0.0-rc.2.tgz +0 -0
  137. package/validation/minlength.validator.d.ts +0 -2
  138. /package/controls/{treeview/ngtreeitemaction.ngfactory.d.ts → contextmenu/contextmenu.interface.ngfactory.d.ts} +0 -0
  139. /package/controls/{treeview/treeviewchild.ngfactory.d.ts → list/buildvaluestring.ngfactory.d.ts} +0 -0
  140. /package/{validation/minlength.validator.ngfactory.d.ts → controls/list/dropdownoptions.ngfactory.d.ts} +0 -0
@@ -1,66 +1,74 @@
1
- import { Directive, EventEmitter, Input, Output, TemplateRef, } from '@angular/core';
2
1
  import { ControlHeight } from '../../enums/ControlHeight';
2
+ import { SACICON_SERVICE, SacDefaultIconService } from '../../services';
3
+ import { SACCONFIGURATION_SERVICE, SacDefaultConfigurationService } from '../../services/sac-configuration.service';
4
+ import { SacFormLayoutCommon } from '../layout/formlayout';
3
5
  import { SacRadiobuttonsCommon } from './radiobuttons';
6
+ import { Directive, EventEmitter, Host, Injector, Input, Output, TemplateRef } from '@angular/core';
4
7
  /**
5
8
  * Basis Komponente für SacRadiobutton.
6
9
  */
7
10
  export class SacRadiobuttonCommon {
11
+ // #endregion Properties
12
+ // #region Constructors
8
13
  /**
9
14
  * Konstruktor
10
15
  * @param SacRadioButtons
16
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
17
+ * @param injector Injector for injecting services
11
18
  */
12
- constructor(sacRadioButtons) {
19
+ constructor(sacRadioButtons, formlayout, injector) {
13
20
  this.sacRadioButtons = sacRadioButtons;
21
+ this.injector = injector;
22
+ // #region Properties
14
23
  /**
15
- * ControlHeight enum for use in HTML markup
24
+ * Boolean Property zum Ausblenden des Controls; default Wert - false
16
25
  */
17
- this.ControlHeight = ControlHeight;
26
+ this._hidden = false;
18
27
  /**
19
- * Output Event
28
+ * Form layout instance if exists
20
29
  */
21
- this.onselectitem = new EventEmitter();
30
+ this.formlayout = null;
22
31
  /**
23
- * Boolean Property zum Ausblenden des Controls; default Wert - false
32
+ * public public public public public public public public public public public public public ControlHeight enum for use in HTML markup
24
33
  */
25
- this._hidden = false;
34
+ this.ControlHeight = ControlHeight;
26
35
  /**
27
36
  * Unique Index für RadioButton
28
37
  */
29
38
  this._index = null;
39
+ /**
40
+ * Text to support the user during input.
41
+ */
42
+ this.helptext = '';
43
+ /**
44
+ * Output Event
45
+ */
46
+ this.onselectitem = new EventEmitter();
47
+ this.formlayout = formlayout;
48
+ this.configurationService = injector.get(SACCONFIGURATION_SERVICE, new SacDefaultConfigurationService());
49
+ this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
30
50
  // Registration des Controls in SacRadioButtons Container
31
51
  this.sacRadioButtons.RegisterRadioButton(this);
32
52
  }
53
+ // #endregion Constructors
54
+ // #region Public Getters And Setters
33
55
  /**
34
- * Methode ergibt Boolean, ob Control disabled ist
56
+ * Get Icon for Helptext Tooltip
35
57
  */
36
- get isDisabled() {
37
- return this.disabled || this.sacRadioButtons.disabled;
58
+ get HelptextTooltipIcon() {
59
+ return this.iconService.GenericHelptextIcon;
38
60
  }
39
61
  /**
40
- * Setter für hidden Property
62
+ * define the control height from parent control
41
63
  */
42
- set hidden(v) {
43
- if (v === null || v === undefined || typeof v === 'boolean') {
44
- this._hidden = v;
45
- }
46
- else {
47
- this._hidden = v === 'true';
48
- }
49
- // Model Reset falls RadioButton selektiert war
50
- if (this._hidden && this.checked) {
51
- this.sacRadioButtons.SelectItem(null);
52
- }
53
- }
54
- get hidden() {
55
- return this._hidden;
64
+ get componentHeight() {
65
+ return this.sacRadioButtons.componentHeight;
56
66
  }
57
67
  /**
58
68
  * Getter für Unique Index
59
69
  */
60
70
  get getIndex() {
61
- if (this._index === null &&
62
- this.sacRadioButtons !== null &&
63
- this.sacRadioButtons !== undefined) {
71
+ if (this._index === null && this.sacRadioButtons !== null && this.sacRadioButtons !== undefined) {
64
72
  this._index = this.sacRadioButtons.GetRadionButtonIndex();
65
73
  }
66
74
  return this._index;
@@ -71,22 +79,32 @@ export class SacRadiobuttonCommon {
71
79
  get getName() {
72
80
  return this.sacRadioButtons.name;
73
81
  }
82
+ get hidden() {
83
+ return this._hidden;
84
+ }
74
85
  /**
75
- * define the control height from parent control
86
+ * Setter für hidden Property
76
87
  */
77
- get componentHeight() {
78
- return this.sacRadioButtons.componentHeight;
88
+ set hidden(v) {
89
+ if (v === null || v === undefined || typeof v === 'boolean') {
90
+ this._hidden = v;
91
+ }
92
+ else {
93
+ this._hidden = v === 'true';
94
+ }
95
+ // Model Reset falls RadioButton selektiert war
96
+ if (this._hidden && this.checked) {
97
+ this.sacRadioButtons.SelectItem(null);
98
+ }
79
99
  }
80
- //#endregion
81
- //#region Control Events
82
100
  /**
83
- * Event wenn die Komponente zerstört wird
101
+ * Methode ergibt Boolean, ob Control disabled ist
84
102
  */
85
- ngOnDestroy() {
86
- // De-Registration des Controls in SacRadioButtons Container
87
- this.sacRadioButtons.UnregisterRadioButton(this);
103
+ get isDisabled() {
104
+ return this.disabled || this.sacRadioButtons.disabled;
88
105
  }
89
- //#endregion
106
+ // #endregion Public Getters And Setters
107
+ // #region Public Methods
90
108
  /**
91
109
  * Event bei Änderungen
92
110
  */
@@ -96,20 +114,51 @@ export class SacRadiobuttonCommon {
96
114
  this.onselectitem.emit();
97
115
  }
98
116
  }
117
+ /**
118
+ * Event wenn die Komponente zerstört wird
119
+ */
120
+ ngOnDestroy() {
121
+ // De-Registration des Controls in SacRadioButtons Container
122
+ this.sacRadioButtons.UnregisterRadioButton(this);
123
+ }
124
+ ngOnInit() {
125
+ // set method to display helptext
126
+ this.setHelpTextMode();
127
+ }
128
+ // #endregion Public Methods
129
+ // #region Private Methods
130
+ /**
131
+ * Set mode for helptext. Can be tooltip or text
132
+ */
133
+ setHelpTextMode() {
134
+ var _a;
135
+ if (!this.helptextmode) {
136
+ if ((_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.helptextmode) {
137
+ this.helptextmode = this.formlayout.helptextmode;
138
+ }
139
+ else {
140
+ this.helptextmode = this.configurationService.HelptextMode;
141
+ }
142
+ }
143
+ }
99
144
  }
100
145
  SacRadiobuttonCommon.decorators = [
101
146
  { type: Directive }
102
147
  ];
103
148
  SacRadiobuttonCommon.ctorParameters = () => [
104
- { type: SacRadiobuttonsCommon }
149
+ { type: SacRadiobuttonsCommon },
150
+ { type: SacFormLayoutCommon, decorators: [{ type: Host }] },
151
+ { type: Injector }
105
152
  ];
106
153
  SacRadiobuttonCommon.propDecorators = {
107
- value: [{ type: Input }],
108
- label: [{ type: Input }],
109
154
  checked: [{ type: Input }],
110
155
  disabled: [{ type: Input }],
156
+ helptext: [{ type: Input }],
157
+ helptextmode: [{ type: Input }],
158
+ label: [{ type: Input }],
159
+ labeltemplate: [{ type: Input }],
111
160
  onselectitem: [{ type: Output }],
112
- hidden: [{ type: Input }],
113
- labeltemplate: [{ type: Input }]
161
+ value: [{ type: Input }],
162
+ hidden: [{ type: Input }]
114
163
  };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9idXR0b24uanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY2hlY2tib3gvcmFkaW9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZEOztHQUVHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFDeEM7OztPQUdHO0lBQ0gsWUFBc0IsZUFBc0M7UUFBdEMsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBSzVEOztXQUVHO1FBQ0gsa0JBQWEsR0FBeUIsYUFBYSxDQUFDO1FBMEJwRDs7V0FFRztRQUVILGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVNsQzs7V0FFRztRQUNLLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFzQmpDOztXQUVHO1FBQ0gsV0FBTSxHQUFXLElBQUksQ0FBQztRQTFFcEIseURBQXlEO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQXFDRDs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUN4RCxDQUFDO0lBT0Q7O09BRUc7SUFDSCxJQUNJLE1BQU0sQ0FBQyxDQUFtQjtRQUM1QixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFZLENBQUM7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztTQUM3QjtRQUVELCtDQUErQztRQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQU9EOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsSUFDRSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUk7WUFDcEIsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJO1lBQzdCLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUNsQztZQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzNEO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFDOUMsQ0FBQztJQVVELFlBQVk7SUFFWix3QkFBd0I7SUFFeEI7O09BRUc7SUFDSCxXQUFXO1FBQ1QsNERBQTREO1FBQzVELElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQVk7SUFFWjs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUE5SUYsU0FBUzs7O1lBTEQscUJBQXFCOzs7b0JBd0IzQixLQUFLO29CQU1MLEtBQUs7c0JBTUwsS0FBSzt1QkFNTCxLQUFLOzJCQU1MLE1BQU07cUJBa0JOLEtBQUs7NEJBd0RMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbEhlaWdodCB9IGZyb20gJy4uLy4uL2VudW1zL0NvbnRyb2xIZWlnaHQnO1xyXG5pbXBvcnQgeyBTYWNSYWRpb2J1dHRvbnNDb21tb24gfSBmcm9tICcuL3JhZGlvYnV0dG9ucyc7XHJcblxyXG4vKipcclxuICogQmFzaXMgS29tcG9uZW50ZSBmw7xyIFNhY1JhZGlvYnV0dG9uLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNSYWRpb2J1dHRvbkNvbW1vbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogS29uc3RydWt0b3JcclxuICAgKiBAcGFyYW0gU2FjUmFkaW9CdXR0b25zXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNhY1JhZGlvQnV0dG9uczogU2FjUmFkaW9idXR0b25zQ29tbW9uKSB7XHJcbiAgICAvLyBSZWdpc3RyYXRpb24gZGVzIENvbnRyb2xzIGluIFNhY1JhZGlvQnV0dG9ucyBDb250YWluZXJcclxuICAgIHRoaXMuc2FjUmFkaW9CdXR0b25zLlJlZ2lzdGVyUmFkaW9CdXR0b24odGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb250cm9sSGVpZ2h0IGVudW0gZm9yIHVzZSBpbiBIVE1MIG1hcmt1cFxyXG4gICAqL1xyXG4gIENvbnRyb2xIZWlnaHQ6IHR5cGVvZiBDb250cm9sSGVpZ2h0ID0gQ29udHJvbEhlaWdodDtcclxuXHJcbiAgLyoqXHJcbiAgICogV2VydFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhYmVsIFRleHRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBCb29sZWFuIFByb3BlcnR5LCBvYiBSYWRpb2J1dHRvbiBjaGVja2VkIGlzdFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNoZWNrZWQ6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvb2xlYW4gUHJvcGVydHksIG9iIFJhZGlvYnV0dG9uIGRpc2FibGVkIGlzdFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgRXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBvbnNlbGVjdGl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZXJnaWJ0IEJvb2xlYW4sIG9iIENvbnRyb2wgZGlzYWJsZWQgaXN0XHJcbiAgICovXHJcbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNhY1JhZGlvQnV0dG9ucy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvb2xlYW4gUHJvcGVydHkgenVtIEF1c2JsZW5kZW4gZGVzIENvbnRyb2xzOyBkZWZhdWx0IFdlcnQgLSBmYWxzZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBoaWRkZW4gUHJvcGVydHlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBoaWRkZW4odjogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5faGlkZGVuID0gdiBhcyBib29sZWFuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGlkZGVuID0gdiA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1vZGVsIFJlc2V0IGZhbGxzIFJhZGlvQnV0dG9uIHNlbGVrdGllcnQgd2FyXHJcbiAgICBpZiAodGhpcy5faGlkZGVuICYmIHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNhY1JhZGlvQnV0dG9ucy5TZWxlY3RJdGVtKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuaXF1ZSBJbmRleCBmw7xyIFJhZGlvQnV0dG9uXHJcbiAgICovXHJcbiAgX2luZGV4OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZsO8ciBVbmlxdWUgSW5kZXhcclxuICAgKi9cclxuICBnZXQgZ2V0SW5kZXgoKTogbnVtYmVyIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5faW5kZXggPT09IG51bGwgJiZcclxuICAgICAgdGhpcy5zYWNSYWRpb0J1dHRvbnMgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5zYWNSYWRpb0J1dHRvbnMgIT09IHVuZGVmaW5lZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX2luZGV4ID0gdGhpcy5zYWNSYWRpb0J1dHRvbnMuR2V0UmFkaW9uQnV0dG9uSW5kZXgoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faW5kZXg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJlbnQgQ29udHJvbCBOYW1lXHJcbiAgICovXHJcbiAgZ2V0IGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNhY1JhZGlvQnV0dG9ucy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZGVmaW5lIHRoZSBjb250cm9sIGhlaWdodCBmcm9tIHBhcmVudCBjb250cm9sXHJcbiAgICovXHJcbiAgZ2V0IGNvbXBvbmVudEhlaWdodCgpOiBDb250cm9sSGVpZ2h0IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zYWNSYWRpb0J1dHRvbnMuY29tcG9uZW50SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbnRyb2wgVGVtcGxhdGVzXHJcblxyXG4gIC8qKlxyXG4gICAqIFRlbXBsYXRlIGbDvHIgVmFsdWUgRWxlbWVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgbGFiZWx0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBDb250cm9sIEV2ZW50c1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGRpZSBLb21wb25lbnRlIHplcnN0w7ZydCB3aXJkXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAvLyBEZS1SZWdpc3RyYXRpb24gZGVzIENvbnRyb2xzIGluIFNhY1JhZGlvQnV0dG9ucyBDb250YWluZXJcclxuICAgIHRoaXMuc2FjUmFkaW9CdXR0b25zLlVucmVnaXN0ZXJSYWRpb0J1dHRvbih0aGlzKTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBiZWkgw4RuZGVydW5nZW5cclxuICAgKi9cclxuICBwdWJsaWMgQ2hhbmdlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5zYWNSYWRpb0J1dHRvbnMuU2VsZWN0SXRlbSh0aGlzLnZhbHVlKTtcclxuICAgICAgdGhpcy5vbnNlbGVjdGl0ZW0uZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9idXR0b24uanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY2hlY2tib3gvcmFkaW9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzFELE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2SDs7R0FFRztBQUVILE1BQU0sT0FBZ0Isb0JBQW9CO0lBZ0Z0Qyx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDYyxlQUFzQyxFQUN4QyxVQUErQixFQUN0QixRQUFrQjtRQUZ6QixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFFL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVGdkMscUJBQXFCO1FBRXJCOztXQUVHO1FBQ0ssWUFBTyxHQUFZLEtBQUssQ0FBQztRQU9qQzs7V0FFRztRQUNPLGVBQVUsR0FBd0IsSUFBSSxDQUFDO1FBT2pEOztXQUVHO1FBQ0gsa0JBQWEsR0FBeUIsYUFBYSxDQUFDO1FBRXBEOztXQUVHO1FBQ0ksV0FBTSxHQUFXLElBQUksQ0FBQztRQWM3Qjs7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RTtZQUNwQixVQUFJLElBQUksQ0FBQyxVQUFVLDBDQUFFLFlBQVksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQzthQUNwRDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUM7YUFDOUQ7U0FDSjtJQUNMLENBQUM7OztZQXBOSixTQUFTOzs7WUFORCxxQkFBcUI7WUFEckIsbUJBQW1CLHVCQW9HbkIsSUFBSTtZQWxHMkIsUUFBUTs7O3NCQTBDM0MsS0FBSzt1QkFNTCxLQUFLO3VCQU1MLEtBQUs7MkJBS0wsS0FBSztvQkFNTCxLQUFLOzRCQU1MLEtBQUs7MkJBTUwsTUFBTTtvQkFNTixLQUFLO3FCQXVFTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbEhlaWdodCB9IGZyb20gJy4uLy4uL2VudW1zL0NvbnRyb2xIZWlnaHQnO1xyXG5pbXBvcnQgeyBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lTYWNDb25maWd1cmF0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVNhY0ljb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgU0FDSUNPTl9TRVJWSUNFLCBTYWNEZWZhdWx0SWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFNBQ0NPTkZJR1VSQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FjLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dCc7XHJcbmltcG9ydCB7IFNhY1JhZGlvYnV0dG9uc0NvbW1vbiB9IGZyb20gJy4vcmFkaW9idXR0b25zJztcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3QsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpcyBLb21wb25lbnRlIGbDvHIgU2FjUmFkaW9idXR0b24uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1JhZGlvYnV0dG9uQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IHp1bSBBdXNibGVuZGVuIGRlcyBDb250cm9sczsgZGVmYXVsdCBXZXJ0IC0gZmFsc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaGlkZGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNlIGZvciBsb2FkaW5nIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBjb250cm9sc1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlndXJhdGlvblNlcnZpY2U6IElTYWNDb25maWd1cmF0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gbGF5b3V0IGluc3RhbmNlIGlmIGV4aXN0c1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbiA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIHNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGljb25TZXJ2aWNlOiBJU2FjSWNvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBwdWJsaWMgcHVibGljIHB1YmxpYyBwdWJsaWMgcHVibGljIHB1YmxpYyBwdWJsaWMgcHVibGljIHB1YmxpYyBwdWJsaWMgcHVibGljIHB1YmxpYyBwdWJsaWMgQ29udHJvbEhlaWdodCBlbnVtIGZvciB1c2UgaW4gSFRNTCBtYXJrdXBcclxuICAgICAqL1xyXG4gICAgQ29udHJvbEhlaWdodDogdHlwZW9mIENvbnRyb2xIZWlnaHQgPSBDb250cm9sSGVpZ2h0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5pcXVlIEluZGV4IGbDvHIgUmFkaW9CdXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIF9pbmRleDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJvb2xlYW4gUHJvcGVydHksIG9iIFJhZGlvYnV0dG9uIGNoZWNrZWQgaXN0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2hlY2tlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJvb2xlYW4gUHJvcGVydHksIG9iIFJhZGlvYnV0dG9uIGRpc2FibGVkIGlzdFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCB0byBzdXBwb3J0IHRoZSB1c2VyIGR1cmluZyBpbnB1dC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGhlbHB0ZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGUgZm9yIGRpc3BsYXkgaGVscHRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoZWxwdGV4dG1vZGU6ICd0b29sdGlwJyB8ICd0ZXh0JyB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYWJlbCBUZXh0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGbDvHIgVmFsdWUgRWxlbWVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdXRwdXQgRXZlbnRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb25zZWxlY3RpdGVtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2VydFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHZhbHVlOiBhbnk7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEtvbnN0cnVrdG9yXHJcbiAgICAgKiBAcGFyYW0gU2FjUmFkaW9CdXR0b25zXHJcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgc2FjUmFkaW9CdXR0b25zOiBTYWNSYWRpb2J1dHRvbnNDb21tb24sXHJcbiAgICAgICAgQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmZvcm1sYXlvdXQgPSBmb3JtbGF5b3V0O1xyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ0NPTkZJR1VSQVRJT05fU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRDb25maWd1cmF0aW9uU2VydmljZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5pY29uU2VydmljZSA9IGluamVjdG9yLmdldChTQUNJQ09OX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKSk7XHJcblxyXG4gICAgICAgIC8vIFJlZ2lzdHJhdGlvbiBkZXMgQ29udHJvbHMgaW4gU2FjUmFkaW9CdXR0b25zIENvbnRhaW5lclxyXG4gICAgICAgIHRoaXMuc2FjUmFkaW9CdXR0b25zLlJlZ2lzdGVyUmFkaW9CdXR0b24odGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgSWNvbiBmb3IgSGVscHRleHQgVG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEhlbHB0ZXh0VG9vbHRpcEljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5HZW5lcmljSGVscHRleHRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmaW5lIHRoZSBjb250cm9sIGhlaWdodCBmcm9tIHBhcmVudCBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY29tcG9uZW50SGVpZ2h0KCk6IENvbnRyb2xIZWlnaHQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zYWNSYWRpb0J1dHRvbnMuY29tcG9uZW50SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0dGVyIGbDvHIgVW5pcXVlIEluZGV4XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZ2V0SW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy5faW5kZXggPT09IG51bGwgJiYgdGhpcy5zYWNSYWRpb0J1dHRvbnMgIT09IG51bGwgJiYgdGhpcy5zYWNSYWRpb0J1dHRvbnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbmRleCA9IHRoaXMuc2FjUmFkaW9CdXR0b25zLkdldFJhZGlvbkJ1dHRvbkluZGV4KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJlbnQgQ29udHJvbCBOYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNhY1JhZGlvQnV0dG9ucy5uYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaGlkZGVuKCk6IGJvb2xlYW4gfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR0ZXIgZsO8ciBoaWRkZW4gUHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgaGlkZGVuKHY6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB0aGlzLl9oaWRkZW4gPSB2IGFzIGJvb2xlYW47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faGlkZGVuID0gdiA9PT0gJ3RydWUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTW9kZWwgUmVzZXQgZmFsbHMgUmFkaW9CdXR0b24gc2VsZWt0aWVydCB3YXJcclxuICAgICAgICBpZiAodGhpcy5faGlkZGVuICYmIHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNhY1JhZGlvQnV0dG9ucy5TZWxlY3RJdGVtKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZXJnaWJ0IEJvb2xlYW4sIG9iIENvbnRyb2wgZGlzYWJsZWQgaXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNhY1JhZGlvQnV0dG9ucy5kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgYmVpIMOEbmRlcnVuZ2VuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBDaGFuZ2VFdmVudCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zYWNSYWRpb0J1dHRvbnMuU2VsZWN0SXRlbSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5vbnNlbGVjdGl0ZW0uZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdlbm4gZGllIEtvbXBvbmVudGUgemVyc3TDtnJ0IHdpcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERlLVJlZ2lzdHJhdGlvbiBkZXMgQ29udHJvbHMgaW4gU2FjUmFkaW9CdXR0b25zIENvbnRhaW5lclxyXG4gICAgICAgIHRoaXMuc2FjUmFkaW9CdXR0b25zLlVucmVnaXN0ZXJSYWRpb0J1dHRvbih0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gc2V0IG1ldGhvZCB0byBkaXNwbGF5IGhlbHB0ZXh0XHJcbiAgICAgICAgdGhpcy5zZXRIZWxwVGV4dE1vZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBtb2RlIGZvciBoZWxwdGV4dC4gQ2FuIGJlIHRvb2x0aXAgb3IgdGV4dFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldEhlbHBUZXh0TW9kZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGVscHRleHRtb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmhlbHB0ZXh0bW9kZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwdGV4dG1vZGUgPSB0aGlzLmZvcm1sYXlvdXQuaGVscHRleHRtb2RlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwdGV4dG1vZGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkhlbHB0ZXh0TW9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJU2FjQ29udGV4dG1lbnVDb21tb24ge1xyXG4gICAgLy8gI3JlZ2lvbiBNZXRob2RzXHJcblxyXG4gICAgY2xvc2UoKTogdm9pZDtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIE1ldGhvZHNcclxufVxyXG4iXX0=
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
+ *
4
+ * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
+ * tslint:disable
6
+ */
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuaW50ZXJmYWNlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9jb250ZXh0bWVudS9jb250ZXh0bWVudS5pbnRlcmZhY2UubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iXX0=
@@ -1,9 +1,10 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { ContentChild, Directive, ElementRef, HostListener, Inject, Injector, Input, NgZone, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
3
1
  import { SACICON_SERVICE, SacDefaultIconService } from '../../services';
4
2
  import { positionElements } from '../../utilities/positioning';
5
3
  import { SacContextmenuAnchorCommon } from './contextmenuanchor';
6
4
  import { SacContextMenuContrainerCommon } from './contextmenucontainer';
5
+ import { SacContextmenuItemCommon } from './contextmenuitem';
6
+ import { DOCUMENT } from '@angular/common';
7
+ import { ContentChild, ContentChildren, Directive, ElementRef, HostListener, Inject, Injector, Input, NgZone, QueryList, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
7
8
  /**
8
9
  * Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.
9
10
  */
@@ -52,12 +53,7 @@ export class SacContextmenuCommon {
52
53
  *
53
54
  * Please see the [positioning overview](#/positioning) for more details.
54
55
  */
55
- this.placement = [
56
- 'bottom-left',
57
- 'bottom-right',
58
- 'top-left',
59
- 'top-right',
60
- ];
56
+ this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];
61
57
  this.zoneSubscription = this.ngZone.onStable.subscribe(() => {
62
58
  this._positionMenu();
63
59
  });
@@ -73,17 +69,6 @@ export class SacContextmenuCommon {
73
69
  }
74
70
  // #endregion Public Getters And Setters
75
71
  // #region Public Methods
76
- /**
77
- * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
78
- */
79
- onClick(targetElement) {
80
- const anchor = this._anchor || this._anchorTemplate;
81
- if (this._menu &&
82
- !this._menu.nativeElement.contains(targetElement) &&
83
- !anchor.nativeElement.contains(targetElement)) {
84
- this.close();
85
- }
86
- }
87
72
  /**
88
73
  * Schliesst das Dropdown
89
74
  */
@@ -91,6 +76,9 @@ export class SacContextmenuCommon {
91
76
  this._resetContainer();
92
77
  this.isopen = false;
93
78
  }
79
+ ngAfterContentInit() {
80
+ this.menuitems.forEach((button) => (button.contextmenu = this));
81
+ }
94
82
  /**
95
83
  * Event wenn Component entfernt wird.
96
84
  */
@@ -100,6 +88,17 @@ export class SacContextmenuCommon {
100
88
  }
101
89
  this.zoneSubscription.unsubscribe();
102
90
  }
91
+ /**
92
+ * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
93
+ */
94
+ onClick(targetElement) {
95
+ const anchor = this._anchor || this._anchorTemplate;
96
+ if (this._menu &&
97
+ !this._menu.nativeElement.contains(targetElement) &&
98
+ !anchor.nativeElement.contains(targetElement)) {
99
+ this.close();
100
+ }
101
+ }
103
102
  /**
104
103
  * Öffnet das Dropdown / Zeigt das Menü an.
105
104
  */
@@ -142,8 +141,7 @@ export class SacContextmenuCommon {
142
141
  if (container === 'body') {
143
142
  const renderer = this.renderer;
144
143
  const dropdownMenuElement = this._menu.nativeElement;
145
- const bodyContainer = (this.bodyContainer =
146
- this.bodyContainer || renderer.createElement('div'));
144
+ const bodyContainer = (this.bodyContainer = this.bodyContainer || renderer.createElement('div'));
147
145
  // Override some styles to have the positioning working
148
146
  renderer.setStyle(bodyContainer, 'position', 'absolute');
149
147
  renderer.setStyle(dropdownMenuElement, 'position', 'static');
@@ -181,14 +179,15 @@ SacContextmenuCommon.ctorParameters = () => [
181
179
  { type: Injector }
182
180
  ];
183
181
  SacContextmenuCommon.propDecorators = {
184
- _anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
185
182
  _anchor: [{ type: ViewChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
183
+ _anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
186
184
  _menu: [{ type: ViewChild, args: [SacContextMenuContrainerCommon, { static: false },] }],
187
185
  buttontemplate: [{ type: Input }],
188
186
  container: [{ type: Input }],
189
187
  cssclass: [{ type: Input }],
190
188
  isopen: [{ type: Input }],
189
+ menuitems: [{ type: ContentChildren, args: [SacContextmenuItemCommon,] }],
191
190
  placement: [{ type: Input }],
192
191
  onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
193
192
  };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBeUUvQix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7O09BT0c7SUFDSCxZQUM0QixRQUFhLEVBQy9CLE1BQWMsRUFDZCxVQUFtQyxFQUNuQyxRQUFtQixFQUMzQixRQUFrQjtRQUpRLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQVc7UUF0RTdCOztXQUVHO1FBQ0ssa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBZ0JqRDs7V0FFRztRQUVJLGNBQVMsR0FBa0Is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QVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDOzs7WUFuUEYsU0FBUzs7OzRDQXVGTCxNQUFNLFNBQUMsUUFBUTtZQXZHbEIsTUFBTTtZQUxOLFVBQVU7WUFPVixTQUFTO1lBSlQsUUFBUTs7OzhCQXlCUCxZQUFZLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3NCQUsxRCxTQUFTLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO29CQUt2RCxTQUFTLFNBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzZCQW9CM0QsS0FBSzt3QkFLTCxLQUFLO3VCQUtMLEtBQUs7cUJBS0wsS0FBSzt3QkFlTCxLQUFLO3NCQXNETCxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBSZW5kZXJlcjIsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSVNhY0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU2FjSWNvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNJQ09OX1NFUlZJQ0UsIFNhY0RlZmF1bHRJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgUGxhY2VtZW50QXJyYXksIHBvc2l0aW9uRWxlbWVudHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9zaXRpb25pbmcnO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiB9IGZyb20gJy4vY29udGV4dG1lbnVhbmNob3InO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb24gfSBmcm9tICcuL2NvbnRleHRtZW51Y29udGFpbmVyJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIENvbnRleHQgTWVuw7wgRWxlbWVudC4gRGllIExvZ2lrIHd1cmRlIGF1cyBORy1CT09UU1RSQVAgw7xiZXJub21tZW4uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0NvbnRleHRtZW51Q29tbW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogQnV0dG9uIGbDvHIgT3Blbi9DbG9zZSBFdmVudCBhdXMgVGVtcGxhdGVcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwcml2YXRlIF9hbmNob3JUZW1wbGF0ZTogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb247XHJcbiAgLyoqXHJcbiAgICogQnV0dG9uIGbDvHIgT3Blbi9DbG9zZSBFdmVudFxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb24sIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHByaXZhdGUgX2FuY2hvcjogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb247XHJcbiAgLyoqXHJcbiAgICogQ29udGFpbmVyIEVsZW1lbnQgZsO8ciBEcm9wZG93blxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoU2FjQ29udGV4dE1lbnVDb250cmFpbmVyQ29tbW9uLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwcml2YXRlIF9tZW51OiBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvZHkgSFRNTCBFbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBib2R5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFpvbmUgU3Vic2NyaXB0aW9uIGbDvHIgUG9zdGl0b25pZXJ1bmcgZGVzIEVsZW1lbnRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB6b25lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIGljb24gc2VydmljZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gSFRNTCBUZW1wbGF0ZSBmw7xyIERyb3Bkb3duIEJ1dHRvbi4gQnV0dG9uIG11c3MgZGVuIE1hcmtlciBcIm5nQ29udGV4dG1lbnVBbmNob3JcIiBiZWluaGFsdGVuLCBkYW1pdCBkYXMgQ29udHJvbCBrb3JyZWt0IGZ1bmt0aW9uaWVydC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBidXR0b250ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuICAgKiBDb250YWluZXIgYW4gd2VsY2hlbSBkaWUgUG9zaXRpb24gYXVzZ2VyaWNodGV0IHdpcmQuIEFrdHVlbGwgd2lyZCBudW4gQm9keSBTdXBwb3J0ZWRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250YWluZXI6IG51bGwgfCAnYm9keScgPSAnYm9keSc7XHJcbiAgLyoqXHJcbiAgICogRXh0cmEgQ1NTIEtsYXNzZW4gZsO8ciBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNzc2NsYXNzOiBzdHJpbmcgPSAnJztcclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGFzIERyb3Bkb3duIG9mZmVuIGlzdC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc29wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgZHJvcGRvd24uXHJcbiAgICpcclxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcclxuICAgKiBgXCJib3R0b20tcmlnaHRcImAsIGBcImxlZnRcImAsIGBcImxlZnQtdG9wXCJgLCBgXCJsZWZ0LWJvdHRvbVwiYCwgYFwicmlnaHRcImAsIGBcInJpZ2h0LXRvcFwiYCxcclxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcclxuICAgKlxyXG4gICAqIEFjY2VwdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhIHN0cmluZyB3aXRoIHNwYWNlIHNlcGFyYXRlZCBwb3NzaWJsZSB2YWx1ZXMuXHJcbiAgICpcclxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImJvdHRvbS1sZWZ0IGJvdHRvbS1yaWdodCB0b3AtbGVmdCB0b3AtcmlnaHRcImBcclxuICAgKlxyXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9IFtcclxuICAgICdib3R0b20tbGVmdCcsXHJcbiAgICAnYm90dG9tLXJpZ2h0JyxcclxuICAgICd0b3AtbGVmdCcsXHJcbiAgICAndG9wLXJpZ2h0JyxcclxuICBdO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogS29uc3RydWt0b3JcclxuICAgKiBAcGFyYW0gZG9jdW1lbnQgSFRNTCBEb2N1bWVudCBFbGVtZW50XHJcbiAgICogQHBhcmFtIG5nWm9uZSBBbmd1bGFyIFpvbmUgU2VydmljZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIEhUTUwgRWxlbWVudCBkZXMgYWt0dWVsbGVuIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIEFuZ3VsYXIgUmVuZGVyaW5nIFNlcnZpY2VcclxuICAgKiBAcGFyYW0gaW5qZWN0b3IgaW5qZWN0b3IgdG8gcmVzb2x2ZSB0aGUgaWNvbiBzZXJ2aWNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgdGhpcy56b25lU3Vic2NyaXB0aW9uID0gdGhpcy5uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fcG9zaXRpb25NZW51KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmljb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgZGVmYXVsdCBjb250ZXh0IG1lbsO8IGJ1dHRvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgSWNvbkNvbnRleHRNZW51KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5Db250ZXh0TWVudU9wZW5JY29uO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIEhvc3RMaXN0ZW5lciB1bSBkYXMgRHJvcGRvd24genUgc2NobGllc3NlbiB3ZW5uIG5pY2h0IGF1ZiBkYXMgRWxlbWVudCBnZWtsaWNrdCB3aXJkLlxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgLyoqXHJcbiAgICogQ2xpY2sgRXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgb25DbGljayh0YXJnZXRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID1cclxuICAgICAgdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fbWVudSAmJlxyXG4gICAgICAhdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpICYmXHJcbiAgICAgICFhbmNob3IubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjaGxpZXNzdCBkYXMgRHJvcGRvd25cclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG4gICAgdGhpcy5pc29wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdlbm4gQ29tcG9uZW50IGVudGZlcm50IHdpcmQuXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNvcGVuKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIMOWZmZuZXQgZGFzIERyb3Bkb3duIC8gWmVpZ3QgZGFzIE1lbsO8IGFuLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXBwbHlDb250YWluZXIodGhpcy5jb250YWluZXIpO1xyXG4gICAgdGhpcy5pc29wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIHZvbiBEcm9wZG93blxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc29wZW4pIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGllIFBvc2l0aW9uIGRlcyBNZW7DvHMgaW0gTWFya3VwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9wb3NpdGlvbk1lbnUoKSB7XHJcbiAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID1cclxuICAgICAgdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgIGlmIChhbmNob3IgJiYgdGhpcy5fbWVudSkge1xyXG4gICAgICBwb3NpdGlvbkVsZW1lbnRzKFxyXG4gICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgIHRoaXMuYm9keUNvbnRhaW5lciB8fCB0aGlzLl9tZW51Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5wbGFjZW1lbnQsXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPT09ICdib2R5J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkaWUgUG9zaXRpb24gZGVzIE1lbsO8cyBpbm5lcmhhbGIgZGVyIFNlaXRlLiBEaWUgQXVzcmljaHR1bmcgcGFzc2llcnQgaW5uZXJoYWxiIGRlciBTZWl0ZVxyXG4gICAqIGRhbWl0IGRhcyBNZW7DvCBpbm5lcmhhbGIgZWluZXMgRGlhbG9ncyBzYXViZXIgZnVua3Rpb25pb25pZXJ0LlxyXG4gICAqIEBwYXJhbSBjb250YWluZXIgRGVmaW5pZXJ0IHdvIGRhcyBNZW7DvCBhdXNnZXJpY2h0ZXQgd2lyZC4gSW0gTW9tZW50IG51ciBCT0RZIFN1cHBvcnRlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2FwcGx5Q29udGFpbmVyKGNvbnRhaW5lcjogbnVsbCB8ICdib2R5JyA9IG51bGwpIHtcclxuICAgIC8vIFJlc2V0IENsYXNzZXMgb24gQ29udGFpbmVyXHJcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG5cclxuICAgIGlmIChjb250YWluZXIgPT09ICdib2R5Jykge1xyXG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXI7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duTWVudUVsZW1lbnQgPSB0aGlzLl9tZW51Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSAodGhpcy5ib2R5Q29udGFpbmVyID1cclxuICAgICAgICB0aGlzLmJvZHlDb250YWluZXIgfHwgcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG5cclxuICAgICAgLy8gT3ZlcnJpZGUgc29tZSBzdHlsZXMgdG8gaGF2ZSB0aGUgcG9zaXRpb25pbmcgd29ya2luZ1xyXG4gICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3N0YXRpYycpO1xyXG4gICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAnei1pbmRleCcsICcxMDUwJyk7XHJcblxyXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChib2R5Q29udGFpbmVyLCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBib2R5Q29udGFpbmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHp0IGRpZSBDU1MgS2xhc3NlbiBhdWYgZGVtIE1lbsO8IENvbnRhaW5lciBhdWYgZGVuIFN0YW5kYXJkIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIF9yZXNldENvbnRhaW5lcigpIHtcclxuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICAgIGlmICh0aGlzLl9tZW51KSB7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZHJvcGRvd25FbGVtZW50LCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgcmVuZGVyZXIucmVtb3ZlU3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XHJcbiAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICd0cmFuc2Zvcm0nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJvZHlDb250YWluZXIpIHtcclxuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlDb250YWluZXIpO1xyXG4gICAgICB0aGlzLmJvZHlDb250YWluZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVILFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2Qjs7R0FFRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFpRjdCLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7Ozs7Ozs7T0FPRztJQUNILFlBQ3VDLFFBQWEsRUFDL0IsTUFBYyxFQUNkLFVBQW1DLEVBQ25DLFFBQW1CLEVBQ3BDLFFBQWtCO1FBSmlCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQVc7UUF2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QVcsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUMzRCxRQUFRLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3RELFFBQVEsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDN0I7SUFDTCxDQUFDOzs7WUF6UEosU0FBUzs7OzRDQStGRCxNQUFNLFNBQUMsUUFBUTtZQTNHcEIsTUFBTTtZQUxOLFVBQVU7WUFRVixTQUFTO1lBTFQsUUFBUTs7O3NCQXFCUCxTQUFTLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzhCQU12RCxZQUFZLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO29CQU0xRCxTQUFTLFNBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzZCQXFCM0QsS0FBSzt3QkFNTCxLQUFLO3VCQU1MLEtBQUs7cUJBTUwsS0FBSzt3QkFNTCxlQUFlLFNBQUMsd0JBQXdCO3dCQWdCeEMsS0FBSztzQkFxRUwsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNhY0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU2FjSWNvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNJQ09OX1NFUlZJQ0UsIFNhY0RlZmF1bHRJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgUGxhY2VtZW50QXJyYXksIHBvc2l0aW9uRWxlbWVudHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9zaXRpb25pbmcnO1xyXG5pbXBvcnQgeyBJU2FjQ29udGV4dG1lbnVDb21tb24gfSBmcm9tICcuL2NvbnRleHRtZW51LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudWFuY2hvcic7XHJcbmltcG9ydCB7IFNhY0NvbnRleHRNZW51Q29udHJhaW5lckNvbW1vbiB9IGZyb20gJy4vY29udGV4dG1lbnVjb250YWluZXInO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0bWVudUl0ZW1Db21tb24gfSBmcm9tICcuL2NvbnRleHRtZW51aXRlbSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBDb250ZW50Q2hpbGQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIENvbnRleHQgTWVuw7wgRWxlbWVudC4gRGllIExvZ2lrIHd1cmRlIGF1cyBORy1CT09UU1RSQVAgw7xiZXJub21tZW4uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0NvbnRleHRtZW51Q29tbW9uIGltcGxlbWVudHMgSVNhY0NvbnRleHRtZW51Q29tbW9uLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdXR0b24gZsO8ciBPcGVuL0Nsb3NlIEV2ZW50XHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb24sIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYW5jaG9yOiBTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1dHRvbiBmw7xyIE9wZW4vQ2xvc2UgRXZlbnQgYXVzIFRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb24sIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYW5jaG9yVGVtcGxhdGU6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbmVyIEVsZW1lbnQgZsO8ciBEcm9wZG93blxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKFNhY0NvbnRleHRNZW51Q29udHJhaW5lckNvbW1vbiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51OiBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBab25lIFN1YnNjcmlwdGlvbiBmw7xyIFBvc3RpdG9uaWVydW5nIGRlcyBFbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJvZHkgSFRNTCBFbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYm9keUNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gc2VydmljZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgaWNvblNlcnZpY2U6IElTYWNJY29uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbSBIVE1MIFRlbXBsYXRlIGbDvHIgRHJvcGRvd24gQnV0dG9uLiBCdXR0b24gbXVzcyBkZW4gTWFya2VyIFwibmdDb250ZXh0bWVudUFuY2hvclwiIGJlaW5oYWx0ZW4sIGRhbWl0IGRhcyBDb250cm9sIGtvcnJla3QgZnVua3Rpb25pZXJ0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJ1dHRvbnRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbmVyIGFuIHdlbGNoZW0gZGllIFBvc2l0aW9uIGF1c2dlcmljaHRldCB3aXJkLiBBa3R1ZWxsIHdpcmQgbnVuIEJvZHkgU3VwcG9ydGVkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29udGFpbmVyOiBudWxsIHwgJ2JvZHknID0gJ2JvZHknO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXh0cmEgQ1NTIEtsYXNzZW4gZsO8ciBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNzc2NsYXNzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluaWVydCBvYiBkYXMgRHJvcGRvd24gb2ZmZW4gaXN0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzb3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWxsIGRpcmVjdGx5IGFzc2lnbmVkIGNvbnRleHQgbWVudSBlbGVtZW50cyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBkaXJlY3QgdGVtcGxhdGUgZm9yIHRoZSBjb250ZXh0IG1lbnUuXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oU2FjQ29udGV4dG1lbnVJdGVtQ29tbW9uKVxyXG4gICAgcHVibGljIG1lbnVpdGVtcyE6IFF1ZXJ5TGlzdDxTYWNDb250ZXh0bWVudUl0ZW1Db21tb24+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHByZWZlcnJlZCBwbGFjZW1lbnQgb2YgdGhlIGRyb3Bkb3duLlxyXG4gICAgICpcclxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYFwidG9wXCJgLCBgXCJ0b3AtbGVmdFwiYCwgYFwidG9wLXJpZ2h0XCJgLCBgXCJib3R0b21cImAsIGBcImJvdHRvbS1sZWZ0XCJgLFxyXG4gICAgICogYFwiYm90dG9tLXJpZ2h0XCJgLCBgXCJsZWZ0XCJgLCBgXCJsZWZ0LXRvcFwiYCwgYFwibGVmdC1ib3R0b21cImAsIGBcInJpZ2h0XCJgLCBgXCJyaWdodC10b3BcImAsXHJcbiAgICAgKiBgXCJyaWdodC1ib3R0b21cImBcclxuICAgICAqXHJcbiAgICAgKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYSBzdHJpbmcgd2l0aCBzcGFjZSBzZXBhcmF0ZWQgcG9zc2libGUgdmFsdWVzLlxyXG4gICAgICpcclxuICAgICAqIFRoZSBkZWZhdWx0IG9yZGVyIG9mIHByZWZlcmVuY2UgaXMgYFwiYm90dG9tLWxlZnQgYm90dG9tLXJpZ2h0IHRvcC1sZWZ0IHRvcC1yaWdodFwiYFxyXG4gICAgICpcclxuICAgICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXkgPSBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXTtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogS29uc3RydWt0b3JcclxuICAgICAqIEBwYXJhbSBkb2N1bWVudCBIVE1MIERvY3VtZW50IEVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBuZ1pvbmUgQW5ndWxhciBab25lIFNlcnZpY2VcclxuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmIEhUTUwgRWxlbWVudCBkZXMgYWt0dWVsbGVuIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgQW5ndWxhciBSZW5kZXJpbmcgU2VydmljZVxyXG4gICAgICogQHBhcmFtIGluamVjdG9yIGluamVjdG9yIHRvIHJlc29sdmUgdGhlIGljb24gc2VydmljZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBhbnksXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuem9uZVN1YnNjcmlwdGlvbiA9IHRoaXMubmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uTWVudSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmljb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ0lDT05fU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRJY29uU2VydmljZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIGRlZmF1bHQgY29udGV4dCBtZW7DvCBidXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uQ29udGV4dE1lbnUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5Db250ZXh0TWVudU9wZW5JY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY2hsaWVzc3QgZGFzIERyb3Bkb3duXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG4gICAgICAgIHRoaXMuaXNvcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1lbnVpdGVtcy5mb3JFYWNoKChidXR0b24pID0+IChidXR0b24uY29udGV4dG1lbnUgPSB0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3ZW5uIENvbXBvbmVudCBlbnRmZXJudCB3aXJkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNvcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdExpc3RlbmVyIHVtIGRhcyBEcm9wZG93biB6dSBzY2hsaWVzc2VuIHdlbm4gbmljaHQgYXVmIGRhcyBFbGVtZW50IGdla2xpY2t0IHdpcmQuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgICAvKipcclxuICAgICAqIENsaWNrIEV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkNsaWNrKHRhcmdldEVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID0gdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuX21lbnUgJiZcclxuICAgICAgICAgICAgIXRoaXMuX21lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KSAmJlxyXG4gICAgICAgICAgICAhYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIMOWZmZuZXQgZGFzIERyb3Bkb3duIC8gWmVpZ3QgZGFzIE1lbsO8IGFuLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hcHBseUNvbnRhaW5lcih0aGlzLmNvbnRhaW5lcik7XHJcbiAgICAgICAgdGhpcy5pc29wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHZvbiBEcm9wZG93blxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzb3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR6dCBkaWUgUG9zaXRpb24gZGVzIE1lbsO8cyBpbSBNYXJrdXBcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9wb3NpdGlvbk1lbnUoKSB7XHJcbiAgICAgICAgY29uc3QgYW5jaG9yOiBTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiA9IHRoaXMuX2FuY2hvciB8fCB0aGlzLl9hbmNob3JUZW1wbGF0ZTtcclxuXHJcbiAgICAgICAgaWYgKGFuY2hvciAmJiB0aGlzLl9tZW51KSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uRWxlbWVudHMoXHJcbiAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgICAgIHRoaXMuYm9keUNvbnRhaW5lciB8fCB0aGlzLl9tZW51Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlbWVudCxcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID09PSAnYm9keSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR6dCBkaWUgUG9zaXRpb24gZGVzIE1lbsO8cyBpbm5lcmhhbGIgZGVyIFNlaXRlLiBEaWUgQXVzcmljaHR1bmcgcGFzc2llcnQgaW5uZXJoYWxiIGRlciBTZWl0ZVxyXG4gICAgICogZGFtaXQgZGFzIE1lbsO8IGlubmVyaGFsYiBlaW5lcyBEaWFsb2dzIHNhdWJlciBmdW5rdGlvbmlvbmllcnQuXHJcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIERlZmluaWVydCB3byBkYXMgTWVuw7wgYXVzZ2VyaWNodGV0IHdpcmQuIEltIE1vbWVudCBudXIgQk9EWSBTdXBwb3J0ZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYXBwbHlDb250YWluZXIoY29udGFpbmVyOiBudWxsIHwgJ2JvZHknID0gbnVsbCkge1xyXG4gICAgICAgIC8vIFJlc2V0IENsYXNzZXMgb24gQ29udGFpbmVyXHJcbiAgICAgICAgdGhpcy5fcmVzZXRDb250YWluZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRhaW5lciA9PT0gJ2JvZHknKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25NZW51RWxlbWVudCA9IHRoaXMuX21lbnUubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgY29uc3QgYm9keUNvbnRhaW5lciA9ICh0aGlzLmJvZHlDb250YWluZXIgPSB0aGlzLmJvZHlDb250YWluZXIgfHwgcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG5cclxuICAgICAgICAgICAgLy8gT3ZlcnJpZGUgc29tZSBzdHlsZXMgdG8gaGF2ZSB0aGUgcG9zaXRpb25pbmcgd29ya2luZ1xyXG4gICAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgICAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3N0YXRpYycpO1xyXG4gICAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAnei1pbmRleCcsICcxMDUwJyk7XHJcblxyXG4gICAgICAgICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChib2R5Q29udGFpbmVyLCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBib2R5Q29udGFpbmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR6dCBkaWUgQ1NTIEtsYXNzZW4gYXVmIGRlbSBNZW7DvCBDb250YWluZXIgYXVmIGRlbiBTdGFuZGFyZCB6dXLDvGNrXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Jlc2V0Q29udGFpbmVyKCkge1xyXG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICAgICAgICBpZiAodGhpcy5fbWVudSkge1xyXG4gICAgICAgICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25NZW51RWxlbWVudCA9IHRoaXMuX21lbnUubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKGRyb3Bkb3duRWxlbWVudCwgZHJvcGRvd25NZW51RWxlbWVudCk7XHJcbiAgICAgICAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICdwb3NpdGlvbicpO1xyXG4gICAgICAgICAgICByZW5kZXJlci5yZW1vdmVTdHlsZShkcm9wZG93bk1lbnVFbGVtZW50LCAndHJhbnNmb3JtJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmJvZHlDb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlDb250YWluZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmJvZHlDb250YWluZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
@@ -1,10 +1,21 @@
1
- import { Directive } from '@angular/core';
1
+ import { Directive, Input } from '@angular/core';
2
2
  /**
3
3
  * Base Context Menu Item
4
4
  */
5
5
  export class SacContextmenuItemCommon {
6
+ constructor() {
7
+ // #region Properties
8
+ /**
9
+ * Reference to the higher-level context menu. This property is always set automatically by the context menu. However, it may be necessary to set the reference manually.
10
+ */
11
+ this.contextmenu = null;
12
+ // #endregion Properties
13
+ }
6
14
  }
7
15
  SacContextmenuItemCommon.decorators = [
8
16
  { type: Directive }
9
17
  ];
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVpdGVtLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51aXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3Qjs7O1lBRHBDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIENvbnRleHQgTWVudSBJdGVtXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0NvbnRleHRtZW51SXRlbUNvbW1vbiB7fVxyXG4iXX0=
18
+ SacContextmenuItemCommon.propDecorators = {
19
+ contextmenu: [{ type: Input }]
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVpdGVtLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51aXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRDs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFSSxxQkFBcUI7UUFFckI7O1dBRUc7UUFFSSxnQkFBVyxHQUFpQyxJQUFJLENBQUM7UUFFeEQsd0JBQXdCO0lBQzVCLENBQUM7OztZQVhBLFNBQVM7OzswQkFPTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNhY0NvbnRleHRtZW51Q29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQmFzZSBDb250ZXh0IE1lbnUgSXRlbVxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNDb250ZXh0bWVudUl0ZW1Db21tb24ge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGhpZ2hlci1sZXZlbCBjb250ZXh0IG1lbnUuIFRoaXMgcHJvcGVydHkgaXMgYWx3YXlzIHNldCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBjb250ZXh0IG1lbnUuIEhvd2V2ZXIsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gc2V0IHRoZSByZWZlcmVuY2UgbWFudWFsbHkuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29udGV4dG1lbnU6IElTYWNDb250ZXh0bWVudUNvbW1vbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG59XHJcbiJdfQ==
@@ -1,17 +1,17 @@
1
- import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
- import { SacContextmenuCommon } from './contextmenu';
3
1
  import { SacContextmenuItemCommon } from './contextmenuitem';
2
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
4
3
  /**
5
4
  * Base Context Menu Button Item
6
5
  */
7
6
  export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
7
+ // #endregion Properties
8
+ // #region Constructors
8
9
  /**
9
10
  * Constructor
10
- * @param contextmenu Instance of Context Menü.
11
11
  */
12
- constructor(contextmenu) {
12
+ constructor() {
13
13
  super();
14
- this.contextmenu = contextmenu;
14
+ // #region Properties
15
15
  /**
16
16
  * Menu Item ist deaktiviert
17
17
  */
@@ -20,6 +20,10 @@ export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
20
20
  * Icon Column in Menü ist deaktiviert
21
21
  */
22
22
  this._isicondisabled = false;
23
+ /**
24
+ * Event wenn auf den Button geklickt wird
25
+ */
26
+ this.clicked = new EventEmitter();
23
27
  /**
24
28
  * css class for button styling
25
29
  */
@@ -29,9 +33,17 @@ export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
29
33
  */
30
34
  this.iconstyle = '';
31
35
  /**
32
- * Event wenn auf den Button geklickt wird
36
+ * name of button. used for generate id and name
33
37
  */
34
- this.clicked = new EventEmitter();
38
+ this.name = '';
39
+ }
40
+ // #endregion Constructors
41
+ // #region Public Getters And Setters
42
+ /**
43
+ * Menu Item ist deaktiviert
44
+ */
45
+ get isdisabled() {
46
+ return this._isdisabled;
35
47
  }
36
48
  /**
37
49
  * Menu Item ist deaktiviert
@@ -45,10 +57,10 @@ export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
45
57
  }
46
58
  }
47
59
  /**
48
- * Menu Item ist deaktiviert
60
+ * Icon Column in Menü ist deaktiviert
49
61
  */
50
- get isdisabled() {
51
- return this._isdisabled;
62
+ get isicondisabled() {
63
+ return this._isicondisabled;
52
64
  }
53
65
  /**
54
66
  * Icon Column in Menü ist deaktiviert
@@ -61,19 +73,17 @@ export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
61
73
  this._isicondisabled = v === 'true';
62
74
  }
63
75
  }
64
- /**
65
- * Icon Column in Menü ist deaktiviert
66
- */
67
- get isicondisabled() {
68
- return this._isicondisabled;
69
- }
76
+ // #endregion Public Getters And Setters
77
+ // #region Public Methods
70
78
  /**
71
79
  * Die Methode wird das cklickaction Emitter aktivieren
72
80
  */
73
81
  callaction(event) {
74
82
  if (!this._isdisabled) {
75
83
  this.clicked.emit();
76
- this.contextmenu.close();
84
+ if (this.contextmenu !== null) {
85
+ this.contextmenu.close();
86
+ }
77
87
  }
78
88
  event.stopPropagation();
79
89
  }
@@ -81,17 +91,16 @@ export class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {
81
91
  SacContextmenuItemButtonCommon.decorators = [
82
92
  { type: Directive }
83
93
  ];
84
- SacContextmenuItemButtonCommon.ctorParameters = () => [
85
- { type: SacContextmenuCommon }
86
- ];
94
+ SacContextmenuItemButtonCommon.ctorParameters = () => [];
87
95
  SacContextmenuItemButtonCommon.propDecorators = {
88
- icon: [{ type: Input }],
96
+ clicked: [{ type: Output }],
89
97
  cssclass: [{ type: Input }],
98
+ icon: [{ type: Input }],
90
99
  iconstyle: [{ type: Input }],
91
100
  image: [{ type: Input }],
92
- isdisabled: [{ type: Input }],
93
- isicondisabled: [{ type: Input }],
101
+ name: [{ type: Input }],
94
102
  text: [{ type: Input }],
95
- clicked: [{ type: Output }]
103
+ isdisabled: [{ type: Input }],
104
+ isicondisabled: [{ type: Input }]
96
105
  };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVpdGVtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51aXRlbWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3RDs7R0FFRztBQUVILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx3QkFBd0I7SUFDMUU7OztPQUdHO0lBQ0gsWUFBc0IsV0FBaUM7UUFDckQsS0FBSyxFQUFFLENBQUM7UUFEWSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFJdkQ7O1dBRUc7UUFDTyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUV2Qzs7V0FFRztRQUNPLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBUTNDOztXQUVHO1FBRUksYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUU3Qjs7V0FFRztRQUVJLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFrRDlCOztXQUVHO1FBRUgsWUFBTyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBbEZ2RCxDQUFDO0lBb0NEOztPQUVHO0lBQ0gsSUFDVyxVQUFVLENBQUMsQ0FBbUI7UUFDdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBWSxDQUFDO1NBQ2pDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csY0FBYyxDQUFDLENBQW1CO1FBQzNDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQVksQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBY0Q7O09BRUc7SUFDSSxVQUFVLENBQUMsS0FBaUI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7OztZQXJHRixTQUFTOzs7WUFORCxvQkFBb0I7OzttQkE2QjFCLEtBQUs7dUJBTUwsS0FBSzt3QkFNTCxLQUFLO29CQU1MLEtBQUs7eUJBTUwsS0FBSzs2QkFrQkwsS0FBSzttQkFrQkwsS0FBSztzQkFNTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhY0NvbnRleHRtZW51Q29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudSc7XHJcbmltcG9ydCB7IFNhY0NvbnRleHRtZW51SXRlbUNvbW1vbiB9IGZyb20gJy4vY29udGV4dG1lbnVpdGVtJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIENvbnRleHQgTWVudSBCdXR0b24gSXRlbVxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNDb250ZXh0bWVudUl0ZW1CdXR0b25Db21tb24gZXh0ZW5kcyBTYWNDb250ZXh0bWVudUl0ZW1Db21tb24ge1xyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGNvbnRleHRtZW51IEluc3RhbmNlIG9mIENvbnRleHQgTWVuw7wuXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRleHRtZW51OiBTYWNDb250ZXh0bWVudUNvbW1vbikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lbnUgSXRlbSBpc3QgZGVha3RpdmllcnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX2lzZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWNvbiBDb2x1bW4gaW4gTWVuw7wgaXN0IGRlYWt0aXZpZXJ0XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9pc2ljb25kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBJY29uIGbDvHIgTWVuw7xcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpY29uOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIGNzcyBjbGFzcyBmb3IgYnV0dG9uIHN0eWxpbmdcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjc3NjbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IFByb3BlcnR5IGbDvHIgU3R5bGluZyBkZXMgQnV0dG9ucy4gRGVmaW5pZXJ0IGRpZSBDc3MgS2xhc3NlbiBkZXMgQnV0dG9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGljb25zdHlsZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEltYWdlIGbDvHIgTWVuw7wuIFdpcmQgYmVuw7Z0aWd0IHdlbm4gZGFzIEljb24gZsO8ciBkZW4gQnV0dG9uIGVpbiBGaWxlIHVuZCBuaWNodCBlaW4gSWNvbiBGb250IGlzdC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNZW51IEl0ZW0gaXN0IGRlYWt0aXZpZXJ0XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGlzZGlzYWJsZWQodjogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5faXNkaXNhYmxlZCA9IHYgYXMgYm9vbGVhbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2lzZGlzYWJsZWQgPSB2ID09PSAndHJ1ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1lbnUgSXRlbSBpc3QgZGVha3RpdmllcnRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGlzZGlzYWJsZWQoKTogYm9vbGVhbiB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gQ29sdW1uIGluIE1lbsO8IGlzdCBkZWFrdGl2aWVydFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpc2ljb25kaXNhYmxlZCh2OiBib29sZWFuIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLl9pc2ljb25kaXNhYmxlZCA9IHYgYXMgYm9vbGVhbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2lzaWNvbmRpc2FibGVkID0gdiA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBJY29uIENvbHVtbiBpbiBNZW7DvCBpc3QgZGVha3RpdmllcnRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGlzaWNvbmRpc2FibGVkKCk6IGJvb2xlYW4gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzaWNvbmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBmw7xyIE1lbsO8IEl0ZW0uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGV4dDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGF1ZiBkZW4gQnV0dG9uIGdla2xpY2t0IHdpcmRcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBjbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHdpcmQgZGFzIGNrbGlja2FjdGlvbiBFbWl0dGVyIGFrdGl2aWVyZW5cclxuICAgKi9cclxuICBwdWJsaWMgY2FsbGFjdGlvbihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLl9pc2Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XHJcbiAgICAgIHRoaXMuY29udGV4dG1lbnUuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxufVxyXG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVpdGVtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51aXRlbWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFOztHQUVHO0FBRUgsTUFBTSxPQUFPLDhCQUErQixTQUFRLHdCQUF3QjtJQXVEeEUsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7T0FFRztJQUNIO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUE5RFoscUJBQXFCO1FBRXJCOztXQUVHO1FBQ08sZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFdkM7O1dBRUc7UUFDTyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUVJLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU5RDs7V0FFRztRQUVJLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFRN0I7O1dBRUc7UUFFSSxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBUTlCOztXQUVHO1FBRUksU0FBSSxHQUFXLEVBQUUsQ0FBQztJQWlCekIsQ0FBQztJQUVELDBCQUEwQjtJQUUxQixxQ0FBcUM7SUFFckM7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csVUFBVSxDQUFDLENBQW1CO1FBQ3JDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQVksQ0FBQztTQUNuQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLGNBQWMsQ0FBQyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFZLENBQUM7U0FDdkM7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFRCx3Q0FBd0M7SUFFeEMseUJBQXlCO0lBRXpCOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEtBQWlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUM1QjtTQUNKO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7OztZQTdISixTQUFTOzs7O3NCQWlCTCxNQUFNO3VCQU1OLEtBQUs7bUJBTUwsS0FBSzt3QkFNTCxLQUFLO29CQU1MLEtBQUs7bUJBTUwsS0FBSzttQkFNTCxLQUFLO3lCQTRCTCxLQUFLOzZCQW1CTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjQ29udGV4dG1lbnVJdGVtQ29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudWl0ZW0nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgQ29udGV4dCBNZW51IEJ1dHRvbiBJdGVtXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0NvbnRleHRtZW51SXRlbUJ1dHRvbkNvbW1vbiBleHRlbmRzIFNhY0NvbnRleHRtZW51SXRlbUNvbW1vbiB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1lbnUgSXRlbSBpc3QgZGVha3RpdmllcnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9pc2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJY29uIENvbHVtbiBpbiBNZW7DvCBpc3QgZGVha3RpdmllcnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9pc2ljb25kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2VubiBhdWYgZGVuIEJ1dHRvbiBnZWtsaWNrdCB3aXJkXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNzcyBjbGFzcyBmb3IgYnV0dG9uIHN0eWxpbmdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjc3NjbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJY29uIGbDvHIgTWVuw7xcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpY29uOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBQcm9wZXJ0eSBmw7xyIFN0eWxpbmcgZGVzIEJ1dHRvbnMuIERlZmluaWVydCBkaWUgQ3NzIEtsYXNzZW4gZGVzIEJ1dHRvbnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpY29uc3R5bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1hZ2UgZsO8ciBNZW7DvC4gV2lyZCBiZW7DtnRpZ3Qgd2VubiBkYXMgSWNvbiBmw7xyIGRlbiBCdXR0b24gZWluIEZpbGUgdW5kIG5pY2h0IGVpbiBJY29uIEZvbnQgaXN0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGltYWdlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBuYW1lIG9mIGJ1dHRvbi4gdXNlZCBmb3IgZ2VuZXJhdGUgaWQgYW5kIG5hbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgZsO8ciBNZW7DvCBJdGVtLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1lbnUgSXRlbSBpc3QgZGVha3RpdmllcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpc2Rpc2FibGVkKCk6IGJvb2xlYW4gfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc2Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWVudSBJdGVtIGlzdCBkZWFrdGl2aWVydFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBpc2Rpc2FibGVkKHY6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc2Rpc2FibGVkID0gdiBhcyBib29sZWFuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzZGlzYWJsZWQgPSB2ID09PSAndHJ1ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWNvbiBDb2x1bW4gaW4gTWVuw7wgaXN0IGRlYWt0aXZpZXJ0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNpY29uZGlzYWJsZWQoKTogYm9vbGVhbiB8IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzaWNvbmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWNvbiBDb2x1bW4gaW4gTWVuw7wgaXN0IGRlYWt0aXZpZXJ0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGlzaWNvbmRpc2FibGVkKHY6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc2ljb25kaXNhYmxlZCA9IHYgYXMgYm9vbGVhbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9pc2ljb25kaXNhYmxlZCA9IHYgPT09ICd0cnVlJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIERpZSBNZXRob2RlIHdpcmQgZGFzIGNrbGlja2FjdGlvbiBFbWl0dGVyIGFrdGl2aWVyZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbGxhY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHRtZW51ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRtZW51LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG59XHJcbiJdfQ==