@magic-xpa/gui 4.800.0-dev480.21 → 4.800.0-dev480.210

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 (105) hide show
  1. package/bundles/magic-xpa-gui.umd.js +1050 -7528
  2. package/bundles/magic-xpa-gui.umd.js.map +1 -1
  3. package/bundles/magic-xpa-gui.umd.min.js +1 -1
  4. package/bundles/magic-xpa-gui.umd.min.js.map +1 -1
  5. package/esm2015/index.js +1 -1
  6. package/esm2015/magic-xpa-gui.js +1 -4
  7. package/esm2015/src/Commands.js +11 -114
  8. package/esm2015/src/Events.js +1 -517
  9. package/esm2015/src/EventsProcessor.js +1 -51
  10. package/esm2015/src/FocusManager.js +1 -13
  11. package/esm2015/src/GuiConstants.js +2 -11
  12. package/esm2015/src/GuiEnums.js +126 -130
  13. package/esm2015/src/GuiEnvironment.js +1 -1
  14. package/esm2015/src/IFlowMonitorQueue.js +1 -1
  15. package/esm2015/src/Manager.js +10 -148
  16. package/esm2015/src/UIBridge.js +1 -6
  17. package/esm2015/src/env/IEnvironment.js +1 -1
  18. package/esm2015/src/gui/ControlBase.js +1 -1
  19. package/esm2015/src/gui/GuiMgControl.js +1 -94
  20. package/esm2015/src/gui/GuiMgForm.js +1 -1
  21. package/esm2015/src/gui/KeyboardItem.js +5 -46
  22. package/esm2015/src/gui/LastFocusedVal.js +1 -5
  23. package/esm2015/src/gui/MgValue.js +1 -1
  24. package/esm2015/src/gui/PropParentInterface.js +1 -1
  25. package/esm2015/src/gui/low/DialogHandler.js +1 -10
  26. package/esm2015/src/gui/low/GuiCommand.js +1 -12
  27. package/esm2015/src/gui/low/GuiCommandQueue.js +1 -66
  28. package/esm2015/src/gui/low/GuiInteractive.js +8 -465
  29. package/esm2015/src/gui/low/Style.js +1 -9
  30. package/esm2015/src/management/RuntimeContextBase.js +11 -14
  31. package/esm2015/src/management/data/BlobType.js +0 -0
  32. package/esm2015/src/management/data/DcValues.js +8 -67
  33. package/esm2015/src/management/data/DcValuesBuilderBase.js +2 -37
  34. package/esm2015/src/management/data/FieldDef.js +1 -95
  35. package/esm2015/src/management/data/FieldsTable.js +2 -28
  36. package/esm2015/src/management/data/GuiDataViewBase.js +33 -72
  37. package/esm2015/src/management/data/GuiFieldBase.js +4 -39
  38. package/esm2015/src/management/data/IRecord.js +1 -1
  39. package/esm2015/src/management/data/IReferencedObject.js +1 -8
  40. package/esm2015/src/management/data/NUM_TYPE.js +14 -485
  41. package/esm2015/src/management/data/ObjectReferenceBase.js +1 -3
  42. package/esm2015/src/management/data/ObjectReferencesCollection.js +1 -2
  43. package/esm2015/src/management/data/RecordUtils.js +6 -112
  44. package/esm2015/src/management/data/VectorType.js +17 -252
  45. package/esm2015/src/management/data/VectorTypeBase.js +1 -35
  46. package/esm2015/src/management/events/IActionManager.js +1 -1
  47. package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
  48. package/esm2015/src/management/exp/ExpressionInterface.js +5 -3
  49. package/esm2015/src/management/exp/GuiExpressionEvaluator.js +38 -155
  50. package/esm2015/src/management/gui/ControlTable.js +18 -72
  51. package/esm2015/src/management/gui/DisplayConvertor.js +43 -493
  52. package/esm2015/src/management/gui/FieldValidator.js +58 -339
  53. package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +1 -1
  54. package/esm2015/src/management/gui/GuiFormPropertyAdapter.js +1 -8
  55. package/esm2015/src/management/gui/HebrewDate.js +3 -140
  56. package/esm2015/src/management/gui/Helps.js +2 -48
  57. package/esm2015/src/management/gui/MgControlBase.js +143 -876
  58. package/esm2015/src/management/gui/MgFormBase.js +68 -407
  59. package/esm2015/src/management/gui/PIC.js +58 -285
  60. package/esm2015/src/management/gui/PropDefaults.js +13 -48
  61. package/esm2015/src/management/gui/PropInterface.js +2 -4
  62. package/esm2015/src/management/gui/PropTable.js +72 -183
  63. package/esm2015/src/management/gui/Property.js +35 -372
  64. package/esm2015/src/management/gui/ValidationDetails.js +10 -52
  65. package/esm2015/src/management/gui/ValidationDetailsBase.js +12 -45
  66. package/esm2015/src/management/gui/WrongFormatException.js +1 -15
  67. package/esm2015/src/management/tasks/GuiDataCollection.js +1 -1
  68. package/esm2015/src/management/tasks/GuiTaskBase.js +38 -383
  69. package/esm2015/src/management/tasks/IMGDataTable.js +1 -1
  70. package/esm2015/src/management/tasks/ITask.js +1 -1
  71. package/esm2015/src/management/tasks/MgTimer.js +1 -16
  72. package/esm2015/src/management/tasks/TaskDefinitionId.js +8 -18
  73. package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +1 -13
  74. package/esm2015/src/util/AuthenticationDialogHandler.js +1 -4
  75. package/esm2015/src/util/MemoryUtil.js +1 -41
  76. package/esm2015/src/util/ObjectReference.js +1 -8
  77. package/esm2015/src/util/ProcessLauncher.js +3 -21
  78. package/esm2015/src/util/UsernamePasswordCredentials.js +1 -9
  79. package/fesm2015/magic-xpa-gui.js +857 -7052
  80. package/fesm2015/magic-xpa-gui.js.map +1 -1
  81. package/magic-xpa-gui.d.ts +0 -3
  82. package/package.json +2 -2
  83. package/src/Commands.d.ts +2 -0
  84. package/src/Events.d.ts +0 -2
  85. package/src/GuiEnums.d.ts +125 -128
  86. package/src/env/IEnvironment.d.ts +3 -0
  87. package/src/gui/PropParentInterface.d.ts +1 -1
  88. package/src/gui/low/GuiInteractive.d.ts +3 -1
  89. package/src/gui/low/Style.d.ts +0 -3
  90. package/src/management/RuntimeContextBase.d.ts +2 -0
  91. package/src/management/data/GuiDataViewBase.d.ts +4 -4
  92. package/src/management/data/IRecord.d.ts +1 -1
  93. package/src/management/exp/ExpressionInterface.d.ts +4 -0
  94. package/src/management/exp/GuiExpressionEvaluator.d.ts +4 -6
  95. package/src/management/gui/ControlTable.d.ts +1 -1
  96. package/src/management/gui/DisplayConvertor.d.ts +1 -1
  97. package/src/management/gui/GuiControlPropertyAdapter.d.ts +1 -1
  98. package/src/management/gui/MgControlBase.d.ts +7 -7
  99. package/src/management/gui/MgFormBase.d.ts +6 -6
  100. package/src/management/gui/PIC.d.ts +1 -0
  101. package/src/management/gui/PropInterface.d.ts +2 -4
  102. package/src/management/gui/PropTable.d.ts +4 -5
  103. package/src/management/gui/Property.d.ts +1 -1
  104. package/src/management/tasks/GuiTaskBase.d.ts +8 -14
  105. package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
@@ -6,16 +6,14 @@ import { ValidationDetailsBase } from "./ValidationDetailsBase";
6
6
  export class ValidationDetails extends ValidationDetailsBase {
7
7
  constructor(oldvalueOrRangeStrOrVd, val, range, pic, control) {
8
8
  super();
9
- // ATTENTION !!! when you add/modify/delete a member variable don't forget to take care
10
- // about the copy constructor: ValidationDetails(ValidationDetails vd)
11
9
  this._control = null;
12
10
  this._fieldValidator = null;
13
11
  this._picData = null;
14
- this._pictureEnable = null; // for inner (of Numeric type) use only, String of 1's -> possible to write ; 0's -> impossible to write ; for '\' using
15
- this._pictureReal = null; // for inner (of Numeric type) use only
12
+ this._pictureEnable = null;
13
+ this._pictureReal = null;
16
14
  this._isNull = false;
17
- this._oldvalue = null; // old value of the control
18
- this._val = null; // new value, inserted into control
15
+ this._oldvalue = null;
16
+ this._val = null;
19
17
  this._validationFailed = false;
20
18
  this.errMessage = null;
21
19
  this.constructor_3();
@@ -37,8 +35,8 @@ export class ValidationDetails extends ValidationDetailsBase {
37
35
  }
38
36
  constructor_0(oldvalue, val, range, pic, control) {
39
37
  this._picData = pic;
40
- this._oldvalue = oldvalue; // old value of the field
41
- this._val = val; // new inserted value of the field
38
+ this._oldvalue = oldvalue;
39
+ this._val = val;
42
40
  this._range = range;
43
41
  this._control = control;
44
42
  switch (pic.getAttr()) {
@@ -49,7 +47,7 @@ export class ValidationDetails extends ValidationDetailsBase {
49
47
  break;
50
48
  case StorageAttribute.BOOLEAN:
51
49
  if (this._range == null)
52
- this._range = "True,False"; // default range value for Logical
50
+ this._range = "True,False";
53
51
  break;
54
52
  case StorageAttribute.DATE:
55
53
  case StorageAttribute.TIME:
@@ -63,28 +61,16 @@ export class ValidationDetails extends ValidationDetailsBase {
63
61
  this._picData.getAttr());
64
62
  break;
65
63
  }
66
- // get Range for the picture:
67
64
  if (this._range != null)
68
65
  this.fillRange();
69
- // free memory
70
66
  range = null;
71
67
  }
72
- /// <summary>
73
- /// constructor for range only, make parsing of Range and fill
74
- /// DiscreteRangeValues and ContinuousRangeValues
75
- /// (used in DisplayConventor)
76
- /// </summary>
77
- /// <param name = "range">string</param>
78
68
  constructor_1(rangeStr) {
79
69
  this.constructor_3();
80
70
  this._range = rangeStr;
81
71
  if (this._range !== null)
82
72
  this.fillRange();
83
73
  }
84
- /// <summary>
85
- /// Make copy of validation details,
86
- /// copy constructor
87
- /// </summary>
88
74
  constructor_2(vd) {
89
75
  this.constructor_3();
90
76
  this._oldvalue = vd.getOldValue();
@@ -110,9 +96,6 @@ export class ValidationDetails extends ValidationDetailsBase {
110
96
  constructor_3() {
111
97
  this._fieldValidator = new FieldValidator();
112
98
  }
113
- /// <summary>
114
- /// ***********************Numeric*****************************************
115
- /// </summary>
116
99
  getRealNumericPicture() {
117
100
  let mask = this._picData.getMask();
118
101
  let dec_ = this._picData.getDec();
@@ -124,7 +107,7 @@ export class ValidationDetails extends ValidationDetailsBase {
124
107
  let isPointInserted = false;
125
108
  let currChar = 0;
126
109
  for (let i = 0; i < this._picData.getMaskSize(); i = i + 1) {
127
- currChar = +mask.charAt(i); // it's ASCII of the char
110
+ currChar = +mask.charAt(i);
128
111
  switch (currChar) {
129
112
  case PICInterface.PIC_N:
130
113
  if (isFirstPic_N) {
@@ -162,7 +145,7 @@ export class ValidationDetails extends ValidationDetailsBase {
162
145
  }
163
146
  }
164
147
  break;
165
- default: // const string in Alpha
148
+ default:
166
149
  this.setPictures(currChar.toString(), '1');
167
150
  break;
168
151
  }
@@ -170,11 +153,6 @@ export class ValidationDetails extends ValidationDetailsBase {
170
153
  Events.WriteDevToLog(this._pictureReal.ToString());
171
154
  Events.WriteDevToLog(this._pictureEnable.ToString());
172
155
  }
173
- /// <summary>
174
- /// add chars to Real and Enable String Buffers
175
- /// </summary>
176
- /// <param name = "real">to Real</param>
177
- /// <param name = "Enable">to Enable</param>
178
156
  setPictures(Real, Enable) {
179
157
  this._pictureEnable.Append(Enable);
180
158
  this._pictureReal.Append(Real);
@@ -188,25 +166,15 @@ export class ValidationDetails extends ValidationDetailsBase {
188
166
  setRange(range) {
189
167
  this._range = range;
190
168
  }
191
- /// <summary>
192
- /// set the "validation failed" flag
193
- /// </summary>
194
169
  setValidationFailed(val) {
195
170
  this._validationFailed = val;
196
171
  }
197
- /// <summary>
198
- /// set isNull flag of the ValDetails
199
- /// </summary>
200
172
  setNull(isNull_) {
201
173
  this._isNull = isNull_;
202
174
  }
203
- /// <summary>
204
- /// returns the valid display value (with mask)
205
- /// </summary>
206
175
  getDispValue() {
207
176
  if (typeof this._val === 'string') {
208
177
  let minimumValueLength = this._picData.getMinimumValueLength();
209
- // RTrim the value beyond this index
210
178
  if (this._val.length > minimumValueLength) {
211
179
  if (minimumValueLength > 0 || StrUtil.rtrim(this._val).length > 0) {
212
180
  let str = this._val.substr(minimumValueLength);
@@ -233,27 +201,21 @@ export class ValidationDetails extends ValidationDetailsBase {
233
201
  getPictureEnable() {
234
202
  return this._pictureEnable.ToString();
235
203
  }
236
- // for Numeric
237
204
  getIsNegative() {
238
205
  return this._picData.isNegative();
239
206
  }
240
- // for Numeric
241
207
  getIsPadFill() {
242
208
  return this._picData.padFill();
243
209
  }
244
- // for Numeric
245
210
  getPadFillChar() {
246
211
  return this._picData.getPad();
247
212
  }
248
- // for Numeric, Date, Time
249
213
  getIsZeroFill() {
250
214
  return this._picData.zeroFill();
251
215
  }
252
- // for Numeric, Date, Time
253
216
  getZeroFillChar() {
254
217
  return this._picData.getZeroPad();
255
218
  }
256
- // for Numeric
257
219
  getNegativeSignPref() {
258
220
  return this._picData.getNegPref_();
259
221
  }
@@ -272,10 +234,6 @@ export class ValidationDetails extends ValidationDetailsBase {
272
234
  evaluate() {
273
235
  return this._fieldValidator.checkVal(this);
274
236
  }
275
- /// <summary>
276
- ///
277
- /// </summary>
278
- /// <returns></returns>
279
237
  CloneDiscreteRangeValues() {
280
238
  let clone = new List();
281
239
  clone.AddRange(this._discreteRangeValues.GetEnumerator());
@@ -287,4 +245,4 @@ export class ValidationDetails extends ValidationDetailsBase {
287
245
  return clone;
288
246
  }
289
247
  }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBb0MxRCxZQUFZLHNCQUE0QixFQUFFLEdBQVksRUFBRSxLQUFjLEVBQUUsR0FBUyxFQUFFLE9BQXVCO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBbkNWLHVGQUF1RjtRQUN2RixzRUFBc0U7UUFFOUQsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0Isb0JBQWUsR0FBbUIsSUFBSSxDQUFDO1FBQ3ZDLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFDckIsbUJBQWMsR0FBa0IsSUFBSSxDQUFDLENBQUMsd0hBQXdIO1FBQzlKLGlCQUFZLEdBQWtCLElBQUksQ0FBQyxDQUFDLHVDQUF1QztRQUMzRSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7UUFDckQsU0FBSSxHQUFRLElBQUksQ0FBQyxDQUFFLG1DQUFtQztRQUN0RCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsZUFBVSxHQUFXLElBQUksQ0FBQztRQXVCaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxD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SyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yfSBmcm9tIFwiLi9GaWVsZFZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgUElDSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2UgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRGV0YWlsc0Jhc2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRldGFpbHMgZXh0ZW5kcyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2Uge1xyXG5cclxuICAvLyBBVFRFTlRJT04gISEhIHdoZW4geW91IGFkZC9tb2RpZnkvZGVsZXRlIGEgbWVtYmVyIHZhcmlhYmxlIGRvbid0IGZvcmdldCB0byB0YWtlIGNhcmVcclxuICAvLyBhYm91dCB0aGUgY29weSBjb25zdHJ1Y3RvcjogVmFsaWRhdGlvbkRldGFpbHMoVmFsaWRhdGlvbkRldGFpbHMgdmQpXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsaWRhdG9yOiBGaWVsZFZhbGlkYXRvciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljRGF0YTogUElDID0gbnVsbDtcclxuICBwcml2YXRlIF9waWN0dXJlRW5hYmxlOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5LCBTdHJpbmcgb2YgMSdzIC0+IHBvc3NpYmxlIHRvIHdyaXRlIDsgMCdzIC0+IGltcG9zc2libGUgdG8gd3JpdGUgOyBmb3IgJ1xcJyB1c2luZ1xyXG4gIHByaXZhdGUgX3BpY3R1cmVSZWFsOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5XHJcbiAgcHJpdmF0ZSBfaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfb2xkdmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDsgIC8vIG5ldyB2YWx1ZSwgaW5zZXJ0ZWQgaW50byBjb250cm9sXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVyck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVyck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgRXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVyck1lc3NhZ2UgPSBtc2c7XHJcbiAgfVxyXG5cclxuICBnZXQgVmFsaWRhdGlvbkZhaWxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRmFpbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnN0cnVjdG9yLCB3aGljaCBzZXRzIGFsbCBtZW1iZXIgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk7XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkPzogYW55LCB2YWw/OiBzdHJpbmcsIHJhbmdlPzogc3RyaW5nLCBwaWM/OiBQSUMsIGNvbnRyb2w/OiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcblxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkLCB2YWwsIHJhbmdlLCBwaWMsIGNvbnRyb2wpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZCBpbnN0YW5jZW9mIFZhbGlkYXRpb25EZXRhaWxzKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKG9sZHZhbHVlOiBhbnksIHZhbDogYW55LCByYW5nZTogc3RyaW5nLCBwaWM6IFBJQywgY29udHJvbDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljRGF0YSA9IHBpYztcclxuICAgIHRoaXMuX29sZHZhbHVlID0gb2xkdmFsdWU7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDsgLy8gbmV3ICBpbnNlcnRlZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcclxuXHJcbiAgICBzd2l0Y2ggKHBpYy5nZXRBdHRyKCkpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVFbmFibGUgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2UgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3JhbmdlID0gXCJUcnVlLEZhbHNlXCI7IC8vIGRlZmF1bHQgcmFuZ2UgdmFsdWUgZm9yIExvZ2ljYWxcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlZhbGlkYXRpb25EZXRhaWxzLlZhbGlkYXRpb25EZXRhaWxzOiBUaGVyZSBpcyBubyB0eXBlIFwiICtcclxuICAgICAgICAgIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGdldCBSYW5nZSBmb3IgdGhlIHBpY3R1cmU6XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT0gbnVsbClcclxuICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuXHJcbiAgICAvLyBmcmVlIG1lbW9yeVxyXG4gICAgcmFuZ2UgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnN0cnVjdG9yIGZvciByYW5nZSBvbmx5LCBtYWtlIHBhcnNpbmcgb2YgIFJhbmdlIGFuZCBmaWxsXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgKHVzZWQgaW4gRGlzcGxheUNvbnZlbnRvcilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmFuZ2VcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShyYW5nZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2VTdHI7XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBjb3B5IG9mIHZhbGlkYXRpb24gZGV0YWlscyxcclxuICAvLy8gICBjb3B5IGNvbnN0cnVjdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX29sZHZhbHVlID0gdmQuZ2V0T2xkVmFsdWUoKTtcclxuICAgIHRoaXMuX3ZhbCA9IHZkLl92YWw7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHZkLmdldFJhbmdlKCk7XHJcbiAgICB0aGlzLl9jb250cm9sID0gdmQuZ2V0Q29udHJvbCgpO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZkLl9waWN0dXJlUmVhbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlUmVhbCA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5fcGljdHVyZUVuYWJsZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodmQuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0RGlzY3JldGVSYW5nZVZhbHVlcygpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5nZXRDb250aW51b3VzUmFuZ2VWYWx1ZXMoKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9IHZkLkNsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9waWNEYXRhID0gdmQuZ2V0UElDKCk7XHJcbiAgICB0aGlzLl9pc051bGwgPSB2ZC5nZXRJc051bGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpZWxkVmFsaWRhdG9yID0gbmV3IEZpZWxkVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgKioqKioqKioqKioqKioqKioqKioqKipOdW1lcmljKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk6IHZvaWQge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3BpY0RhdGEuZ2V0TWFzaygpO1xyXG4gICAgbGV0IGRlY186IG51bWJlciA9IHRoaXMuX3BpY0RhdGEuZ2V0RGVjKCk7XHJcbiAgICBsZXQgd2hvbGVfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldFdob2xlcygpO1xyXG4gICAgbGV0IGRlY2ltYWxfOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS53aXRoRGVjaW1hbCgpO1xyXG4gICAgbGV0IGRlY19wbnRfaW5fZmlyc3Q6IGJvb2xlYW4gPSB0aGlzLl9waWNEYXRhLmRlY0luRmlyc3RQb3MoKTtcclxuICAgIGxldCBpc05lZ2F0aXZlOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5pc05lZ2F0aXZlKCk7XHJcbiAgICBsZXQgaXNGaXJzdFBpY19OOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBpc1BvaW50SW5zZXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VyckNoYXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICBjdXJyQ2hhciA9ICttYXNrLmNoYXJBdChpKTsgLy8gaXQncyBBU0NJSSBvZiB0aGUgY2hhclxyXG5cclxuICAgICAgc3dpdGNoIChjdXJyQ2hhcikge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgaWYgKGlzRmlyc3RQaWNfTikge1xyXG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSlcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCctJywgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNfcG50X2luX2ZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNGaXJzdFBpY19OID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkZWNpbWFsXykge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlXyA9PT0gMCAmJiAhaXNQb2ludEluc2VydGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkZWNfID4gMCkge1xyXG4gICAgICAgICAgICAgIGRlY18tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OiAvLyBjb25zdCBzdHJpbmcgaW4gQWxwaGFcclxuICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoY3VyckNoYXIudG9TdHJpbmcoKSwgJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGNoYXJzIHRvIFJlYWwgYW5kIEVuYWJsZSBTdHJpbmcgQnVmZmVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWFsXCI+dG8gUmVhbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJFbmFibGVcIj50byBFbmFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0UGljdHVyZXMoUmVhbDogc3RyaW5nLCBFbmFibGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljdHVyZUVuYWJsZS5BcHBlbmQoRW5hYmxlKTtcclxuICAgIHRoaXMuX3BpY3R1cmVSZWFsLkFwcGVuZChSZWFsKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzZXRPbGRWYWx1ZShvbGR2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmFuZ2UocmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIFwidmFsaWRhdGlvbiBmYWlsZWRcIiBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRWYWxpZGF0aW9uRmFpbGVkKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgaXNOdWxsIGZsYWcgb2YgdGhlIFZhbERldGFpbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE51bGwoaXNOdWxsXzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNOdWxsID0gaXNOdWxsXztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWxpZCBkaXNwbGF5IHZhbHVlICh3aXRoIG1hc2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXREaXNwVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICBsZXQgbWluaW11bVZhbHVlTGVuZ3RoOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldE1pbmltdW1WYWx1ZUxlbmd0aCgpO1xyXG5cclxuICAgICAgLy8gUlRyaW0gdGhlIHZhbHVlIGJleW9uZCB0aGlzIGluZGV4XHJcbiAgICAgIGlmICh0aGlzLl92YWwubGVuZ3RoID4gbWluaW11bVZhbHVlTGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1pbmltdW1WYWx1ZUxlbmd0aCA+IDAgfHwgU3RyVXRpbC5ydHJpbSh0aGlzLl92YWwpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHI6IHN0cmluZyA9IHRoaXMuX3ZhbC5zdWJzdHIobWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC5zdWJzdHIoMCwgbWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbCArIFN0clV0aWwucnRyaW0oc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fY29udHJvbCAhPSBudWxsICYmIHRoaXMuX2NvbnRyb2wuaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fdmFsLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2xkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRBdHRyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlUmVhbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVSZWFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlRW5hYmxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljdHVyZUVuYWJsZS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc05lZ2F0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc1BhZEZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5wYWRGaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpY1xyXG4gIGdldFBhZEZpbGxDaGFyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRQYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljLCBEYXRlLCBUaW1lXHJcbiAgZ2V0SXNaZXJvRmlsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLnplcm9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldFplcm9GaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0WmVyb1BhZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXROZWdhdGl2ZVNpZ25QcmVmKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXROZWdQcmVmXygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldFBJQygpOiBQSUMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRJc051bGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNOdWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoKTogVmFsaWRhdGlvbkRldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsaWRhdG9yLmNoZWNrVmFsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIENsb25lRGlzY3JldGVSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLkdldEVudW1lcmF0b3IoKSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICBsZXQgY2xvbmU6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGNsb25lLkFkZFJhbmdlKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBb0MxRCxZQUFZLHNCQUE0QixFQUFFLEdBQVksRUFBRSxLQUFjLEVBQUUsR0FBUyxFQUFFLE9BQXVCO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBaENGLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQUN2QyxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBQ3JCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUNyQyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLFNBQUksR0FBUSxJQUFJLENBQUM7UUFDakIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLGVBQVUsR0FBVyxJQUFJLENBQUM7UUF1QmhDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFz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QyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFNTyx3QkFBd0I7UUFDOUIsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yfSBmcm9tIFwiLi9GaWVsZFZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgUElDSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2UgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRGV0YWlsc0Jhc2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRldGFpbHMgZXh0ZW5kcyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2Uge1xyXG5cclxuICAvLyBBVFRFTlRJT04gISEhIHdoZW4geW91IGFkZC9tb2RpZnkvZGVsZXRlIGEgbWVtYmVyIHZhcmlhYmxlIGRvbid0IGZvcmdldCB0byB0YWtlIGNhcmVcclxuICAvLyBhYm91dCB0aGUgY29weSBjb25zdHJ1Y3RvcjogVmFsaWRhdGlvbkRldGFpbHMoVmFsaWRhdGlvbkRldGFpbHMgdmQpXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsaWRhdG9yOiBGaWVsZFZhbGlkYXRvciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljRGF0YTogUElDID0gbnVsbDtcclxuICBwcml2YXRlIF9waWN0dXJlRW5hYmxlOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5LCBTdHJpbmcgb2YgMSdzIC0+IHBvc3NpYmxlIHRvIHdyaXRlIDsgMCdzIC0+IGltcG9zc2libGUgdG8gd3JpdGUgOyBmb3IgJ1xcJyB1c2luZ1xyXG4gIHByaXZhdGUgX3BpY3R1cmVSZWFsOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5XHJcbiAgcHJpdmF0ZSBfaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfb2xkdmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDsgIC8vIG5ldyB2YWx1ZSwgaW5zZXJ0ZWQgaW50byBjb250cm9sXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVyck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVyck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgRXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVyck1lc3NhZ2UgPSBtc2c7XHJcbiAgfVxyXG5cclxuICBnZXQgVmFsaWRhdGlvbkZhaWxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRmFpbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnN0cnVjdG9yLCB3aGljaCBzZXRzIGFsbCBtZW1iZXIgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk7XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkPzogYW55LCB2YWw/OiBzdHJpbmcsIHJhbmdlPzogc3RyaW5nLCBwaWM/OiBQSUMsIGNvbnRyb2w/OiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcblxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkLCB2YWwsIHJhbmdlLCBwaWMsIGNvbnRyb2wpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZCBpbnN0YW5jZW9mIFZhbGlkYXRpb25EZXRhaWxzKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKG9sZHZhbHVlOiBhbnksIHZhbDogYW55LCByYW5nZTogc3RyaW5nLCBwaWM6IFBJQywgY29udHJvbDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljRGF0YSA9IHBpYztcclxuICAgIHRoaXMuX29sZHZhbHVlID0gb2xkdmFsdWU7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDsgLy8gbmV3ICBpbnNlcnRlZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcclxuXHJcbiAgICBzd2l0Y2ggKHBpYy5nZXRBdHRyKCkpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVFbmFibGUgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2UgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3JhbmdlID0gXCJUcnVlLEZhbHNlXCI7IC8vIGRlZmF1bHQgcmFuZ2UgdmFsdWUgZm9yIExvZ2ljYWxcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlZhbGlkYXRpb25EZXRhaWxzLlZhbGlkYXRpb25EZXRhaWxzOiBUaGVyZSBpcyBubyB0eXBlIFwiICtcclxuICAgICAgICAgIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGdldCBSYW5nZSBmb3IgdGhlIHBpY3R1cmU6XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT0gbnVsbClcclxuICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuXHJcbiAgICAvLyBmcmVlIG1lbW9yeVxyXG4gICAgcmFuZ2UgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnN0cnVjdG9yIGZvciByYW5nZSBvbmx5LCBtYWtlIHBhcnNpbmcgb2YgIFJhbmdlIGFuZCBmaWxsXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgKHVzZWQgaW4gRGlzcGxheUNvbnZlbnRvcilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmFuZ2VcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShyYW5nZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2VTdHI7XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBjb3B5IG9mIHZhbGlkYXRpb24gZGV0YWlscyxcclxuICAvLy8gICBjb3B5IGNvbnN0cnVjdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX29sZHZhbHVlID0gdmQuZ2V0T2xkVmFsdWUoKTtcclxuICAgIHRoaXMuX3ZhbCA9IHZkLl92YWw7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHZkLmdldFJhbmdlKCk7XHJcbiAgICB0aGlzLl9jb250cm9sID0gdmQuZ2V0Q29udHJvbCgpO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZkLl9waWN0dXJlUmVhbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlUmVhbCA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5fcGljdHVyZUVuYWJsZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodmQuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0RGlzY3JldGVSYW5nZVZhbHVlcygpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5nZXRDb250aW51b3VzUmFuZ2VWYWx1ZXMoKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9IHZkLkNsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9waWNEYXRhID0gdmQuZ2V0UElDKCk7XHJcbiAgICB0aGlzLl9pc051bGwgPSB2ZC5nZXRJc051bGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpZWxkVmFsaWRhdG9yID0gbmV3IEZpZWxkVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgKioqKioqKioqKioqKioqKioqKioqKipOdW1lcmljKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk6IHZvaWQge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3BpY0RhdGEuZ2V0TWFzaygpO1xyXG4gICAgbGV0IGRlY186IG51bWJlciA9IHRoaXMuX3BpY0RhdGEuZ2V0RGVjKCk7XHJcbiAgICBsZXQgd2hvbGVfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldFdob2xlcygpO1xyXG4gICAgbGV0IGRlY2ltYWxfOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS53aXRoRGVjaW1hbCgpO1xyXG4gICAgbGV0IGRlY19wbnRfaW5fZmlyc3Q6IGJvb2xlYW4gPSB0aGlzLl9waWNEYXRhLmRlY0luRmlyc3RQb3MoKTtcclxuICAgIGxldCBpc05lZ2F0aXZlOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5pc05lZ2F0aXZlKCk7XHJcbiAgICBsZXQgaXNGaXJzdFBpY19OOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBpc1BvaW50SW5zZXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VyckNoYXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICBjdXJyQ2hhciA9ICttYXNrLmNoYXJBdChpKTsgLy8gaXQncyBBU0NJSSBvZiB0aGUgY2hhclxyXG5cclxuICAgICAgc3dpdGNoIChjdXJyQ2hhcikge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgaWYgKGlzRmlyc3RQaWNfTikge1xyXG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSlcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCctJywgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNfcG50X2luX2ZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNGaXJzdFBpY19OID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkZWNpbWFsXykge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlXyA9PT0gMCAmJiAhaXNQb2ludEluc2VydGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkZWNfID4gMCkge1xyXG4gICAgICAgICAgICAgIGRlY18tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OiAvLyBjb25zdCBzdHJpbmcgaW4gQWxwaGFcclxuICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoY3VyckNoYXIudG9TdHJpbmcoKSwgJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGNoYXJzIHRvIFJlYWwgYW5kIEVuYWJsZSBTdHJpbmcgQnVmZmVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWFsXCI+dG8gUmVhbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJFbmFibGVcIj50byBFbmFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0UGljdHVyZXMoUmVhbDogc3RyaW5nLCBFbmFibGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljdHVyZUVuYWJsZS5BcHBlbmQoRW5hYmxlKTtcclxuICAgIHRoaXMuX3BpY3R1cmVSZWFsLkFwcGVuZChSZWFsKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzZXRPbGRWYWx1ZShvbGR2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmFuZ2UocmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIFwidmFsaWRhdGlvbiBmYWlsZWRcIiBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRWYWxpZGF0aW9uRmFpbGVkKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgaXNOdWxsIGZsYWcgb2YgdGhlIFZhbERldGFpbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE51bGwoaXNOdWxsXzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNOdWxsID0gaXNOdWxsXztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWxpZCBkaXNwbGF5IHZhbHVlICh3aXRoIG1hc2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXREaXNwVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICBsZXQgbWluaW11bVZhbHVlTGVuZ3RoOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldE1pbmltdW1WYWx1ZUxlbmd0aCgpO1xyXG5cclxuICAgICAgLy8gUlRyaW0gdGhlIHZhbHVlIGJleW9uZCB0aGlzIGluZGV4XHJcbiAgICAgIGlmICh0aGlzLl92YWwubGVuZ3RoID4gbWluaW11bVZhbHVlTGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1pbmltdW1WYWx1ZUxlbmd0aCA+IDAgfHwgU3RyVXRpbC5ydHJpbSh0aGlzLl92YWwpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHI6IHN0cmluZyA9IHRoaXMuX3ZhbC5zdWJzdHIobWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC5zdWJzdHIoMCwgbWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbCArIFN0clV0aWwucnRyaW0oc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fY29udHJvbCAhPSBudWxsICYmIHRoaXMuX2NvbnRyb2wuaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fdmFsLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2xkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRBdHRyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlUmVhbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVSZWFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlRW5hYmxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljdHVyZUVuYWJsZS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc05lZ2F0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc1BhZEZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5wYWRGaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpY1xyXG4gIGdldFBhZEZpbGxDaGFyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRQYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljLCBEYXRlLCBUaW1lXHJcbiAgZ2V0SXNaZXJvRmlsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLnplcm9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldFplcm9GaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0WmVyb1BhZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXROZWdhdGl2ZVNpZ25QcmVmKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXROZWdQcmVmXygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldFBJQygpOiBQSUMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRJc051bGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNOdWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoKTogVmFsaWRhdGlvbkRldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsaWRhdG9yLmNoZWNrVmFsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIENsb25lRGlzY3JldGVSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLkdldEVudW1lcmF0b3IoKSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICBsZXQgY2xvbmU6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGNsb25lLkFkZFJhbmdlKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -3,59 +3,41 @@ import { StrUtil, SEQ_2_HTML, HTML_2_STR } from "@magic-xpa/utils";
3
3
  import { List, NString } from "@magic-xpa/mscorelib";
4
4
  export class ValidationDetailsBase {
5
5
  constructor(rangeStr) {
6
- this._continuousRangeValues = null; // can't use List<T> - uses Clone()
7
- this._discreteRangeValues = null; // can't use List<T> - uses Clone()
8
- this._range = null; // 'compressed' string of the range
6
+ this._continuousRangeValues = null;
7
+ this._discreteRangeValues = null;
8
+ this._range = null;
9
9
  if (arguments.length === 1) {
10
10
  this._range = rangeStr;
11
11
  if (this._range !== null)
12
12
  this.fillRange();
13
13
  }
14
14
  }
15
- /// <summary>
16
- /// ***********************Range*****************************************
17
- /// </summary>
18
- /// <summary>
19
- /// Fill Range structures in the class
20
- /// </summary>
21
15
  fillRange() {
22
- this._range = StrUtil.makePrintableTokens(this._range, SEQ_2_HTML) /*''*/;
23
- // find delimiters ',' which has not '\,' => RealDelimeters
16
+ this._range = StrUtil.makePrintableTokens(this._range, SEQ_2_HTML);
24
17
  let from = 0;
25
18
  let prev = 0;
26
19
  while ((from = this.findDelimeter(from, ",", this._range)) !== -1 && prev < this._range.length) {
27
20
  this.rangeForms(this._range.substr(prev, from - prev));
28
21
  from = (prev = from + 1);
29
22
  }
30
- // last element:
31
23
  if (prev < this._range.length) {
32
24
  this.rangeForms(this._range.substr(prev));
33
25
  }
34
- // range=null; // don't delete it
35
26
  if (this._discreteRangeValues != null) {
36
- StrUtil.makePrintableTokens(this._discreteRangeValues, HTML_2_STR /*'\u0003*/);
27
+ StrUtil.makePrintableTokens(this._discreteRangeValues, HTML_2_STR);
37
28
  Events.WriteDevToLog(this._discreteRangeValues.toString());
38
29
  }
39
30
  if (this._continuousRangeValues !== null) {
40
- StrUtil.makePrintableTokens(this._continuousRangeValues, HTML_2_STR /*'\u0003'*/) /*''*/;
31
+ StrUtil.makePrintableTokens(this._continuousRangeValues, HTML_2_STR);
41
32
  Events.WriteDevToLog(this._continuousRangeValues.toString());
42
33
  }
43
34
  }
44
- /// <summary>
45
- /// Fill Vectors of DiscreterangeValues and ContinuousRangeValues
46
- /// DiscreteRangeValues: every member is discrete value of the range
47
- /// ContinuousRangeValues: [LOW border, TOP border, ...]
48
- /// </summary>
49
- /// <param name = "found">- String to insert to DiscreteRangeValues, or parse to ContinuousRangeValues</param>
50
35
  rangeForms(found) {
51
36
  let minus;
52
- if ((minus = this.findDelimeter(0, "-", found)) === -1)
53
- // not found continuous range: num1-num2
54
- {
55
- found = NString.TrimStart(found); // TODO - sadhana check if this is needed
37
+ if ((minus = this.findDelimeter(0, "-", found)) === -1) {
38
+ found = NString.TrimStart(found);
56
39
  let todel = 0;
57
40
  while (todel < found.length && (todel = this.findDelimeter(todel, "\\", found)) !== -1) {
58
- // to delete '\' and replace '\\' with '\'
59
41
  found = found.substr(0, todel) + found.substr(todel = todel + 1);
60
42
  todel = todel + 1;
61
43
  }
@@ -64,7 +46,6 @@ export class ValidationDetailsBase {
64
46
  this._discreteRangeValues.push(found);
65
47
  }
66
48
  else {
67
- // index of minus found in if statement
68
49
  let val;
69
50
  for (let i = 0; i < 2; i = i + 1) {
70
51
  if (i === 0) {
@@ -72,8 +53,7 @@ export class ValidationDetailsBase {
72
53
  }
73
54
  else {
74
55
  minus = minus + 1;
75
- // skip blanks between '-' and the value. Heading blanks cause to wrong values.
76
- while (minus < found.length && found.charAt(minus) === " " /*' '*/) {
56
+ while (minus < found.length && found.charAt(minus) === " ") {
77
57
  minus = minus + 1;
78
58
  }
79
59
  val = found.substr(minus);
@@ -86,29 +66,16 @@ export class ValidationDetailsBase {
86
66
  }
87
67
  }
88
68
  }
89
- /// <summary>
90
- /// delete String/char from the string
91
- /// </summary>
92
- /// <param name = "delete">String to delete</param>
93
- /// <param name = "String">delete from the String</param>
94
69
  deleteChar(stringToDelete, from) {
95
70
  let index = 0;
96
71
  while ((index = from.indexOf(stringToDelete, index)) !== -1)
97
72
  from = from.substr(0, index) + from.substr(index + stringToDelete.length);
98
73
  return from;
99
74
  }
100
- /// <summary>
101
- /// Find real delimiter, there is no symbol '\' before REAL delimiter
102
- /// </summary>
103
- /// <param name = "start">of string, looking in</param>
104
- /// <param name = "delim">to found</param>
105
- /// <returns> place of found real delimiter, or -1 -> not found</returns>
106
75
  findDelimeter(start, delim, str) {
107
76
  let found = str.indexOf(delim, start);
108
- while (found < str.length && found > 0)
109
- // => found!=-1(not found); found!=0(not first letter)
110
- {
111
- if (str.charAt(found - 1) === "\\" /*'\'*/) {
77
+ while (found < str.length && found > 0) {
78
+ if (str.charAt(found - 1) === "\\") {
112
79
  found = str.indexOf(delim, found + 1);
113
80
  }
114
81
  else
@@ -123,4 +90,4 @@ export class ValidationDetailsBase {
123
90
  return this._continuousRangeValues;
124
91
  }
125
92
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFBWSxRQUFpQjtRQU5uQiwyQkFBc0IsR0FBaUIsSUFBSSxDQUFDLENBQUUsbUNBQW1DO1FBQ2pGLHlCQUFvQixHQUFpQixJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7UUFDOUUsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLG1DQUFtQztRQUtsRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUNiLDJFQUEyRTtJQUMzRSxjQUFjO0lBQ2QsYUFBYTtJQUNiLHdDQUF3QztJQUN4QyxjQUFjO0lBQ0osU0FBUztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBLE9BQU8sQ0FBQztRQUMxRSwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNy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QUFDO0lBR0QsYUFBYTtJQUNiLHVFQUF1RTtJQUN2RSxjQUFjO0lBQ2QsdURBQXVEO0lBQ3ZELDBDQUEwQztJQUMxQyx5RUFBeUU7SUFDakUsYUFBYSxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsR0FBVztRQUM3RCxJQUFJLEtBQUssR0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxPQUFPLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQ3BDLHNEQUFzRDtRQUN4RDtZQUNFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFBLE9BQU8sRUFBRTtnQkFDekMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN2Qzs7Z0JBRUMsTUFBTTtTQUNUO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0Qsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFBWSxRQUFpQjtRQU5uQiwyQkFBc0IsR0FBaUIsSUFBSSxDQUFDO1FBQzVDLHlCQUFvQixHQUFpQixJQUFJLENBQUM7UUFDMUMsV0FBTSxHQUFXLElBQUksQ0FBQztRQUs5QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBUVMsU0FBUztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFRO1FBRTFFLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUks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SUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,16 +1,8 @@
1
1
  import { Exception } from "@magic-xpa/mscorelib";
2
2
  import { MsgInterface } from "@magic-xpa/utils";
3
- /// <summary> this exception should be thrown whenever the User inserted input
4
- /// to field which can not be initialized by mask/format, so
5
- /// after catching the exception it needs:
6
- /// set focus back to the field
7
- /// return to the field old value
8
- /// write in the status bar relevant message
9
- /// </summary>
10
3
  export class WrongFormatException extends Exception {
11
4
  constructor(type) {
12
5
  super(type);
13
- // type of the field produced the exception
14
6
  this._type = null;
15
7
  this.name = "WrongFormatException";
16
8
  if (arguments.length === 0) {
@@ -22,16 +14,10 @@ export class WrongFormatException extends Exception {
22
14
  initialize() {
23
15
  this._type = null;
24
16
  }
25
- /// <summary>constructor on case of wrong RANGE ONLY
26
- /// to insert relevant range to the status bar
27
- /// </summary>
28
17
  constructor_0() {
29
18
  this.initialize();
30
19
  this._type = MsgInterface.STR_RNG_TXT;
31
20
  }
32
- /// <summary>constructor on case of wrong user input
33
- /// to insert 'Bad 'type' .'message to status bar
34
- /// </summary>
35
21
  constructor_1(type) {
36
22
  this.initialize();
37
23
  this._type = type;
@@ -40,4 +26,4 @@ export class WrongFormatException extends Exception {
40
26
  return this._type;
41
27
  }
42
28
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JvbmdGb3JtYXRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1dyb25nRm9ybWF0RXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCwwQ0FBMEM7QUFDMUMsK0JBQStCO0FBQy9CLGlDQUFpQztBQUNqQyw0Q0FBNEM7QUFDNUMsY0FBYztBQUNkLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTO0lBTWpELFlBQVksSUFBYTtRQUV2QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFOZCwyQ0FBMkM7UUFDbkMsVUFBSyxHQUFXLElBQUksQ0FBQztRQU8zQixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBQ25DLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFFMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCw4Q0FBOEM7SUFDOUMsY0FBYztJQUNOLGFBQWE7UUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGlEQUFpRDtJQUNqRCxjQUFjO0lBQ04sYUFBYSxDQUFDLElBQVk7UUFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXhjZXB0aW9ufSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtNc2dJbnRlcmZhY2V9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+IHRoaXMgZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gd2hlbmV2ZXIgdGhlIFVzZXIgaW5zZXJ0ZWQgaW5wdXRcclxuLy8vIHRvIGZpZWxkIHdoaWNoIGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQgYnkgbWFzay9mb3JtYXQsIHNvXHJcbi8vLyBhZnRlciBjYXRjaGluZyB0aGUgZXhjZXB0aW9uIGl0IG5lZWRzOlxyXG4vLy8gc2V0IGZvY3VzIGJhY2sgdG8gdGhlIGZpZWxkXHJcbi8vLyByZXR1cm4gdG8gdGhlIGZpZWxkIG9sZCB2YWx1ZVxyXG4vLy8gd3JpdGUgaW4gdGhlIHN0YXR1cyBiYXIgcmVsZXZhbnQgbWVzc2FnZVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgV3JvbmdGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24ge1xyXG5cclxuICAvLyB0eXBlIG9mIHRoZSBmaWVsZCBwcm9kdWNlZCB0aGUgZXhjZXB0aW9uXHJcbiAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nID0gbnVsbDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBzdXBlcih0eXBlKTtcclxuXHJcbiAgICB0aGlzLm5hbWUgPSBcIldyb25nRm9ybWF0RXhjZXB0aW9uXCI7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG5cclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEodHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLl90eXBlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5jb25zdHJ1Y3RvciBvbiBjYXNlIG9mIHdyb25nIFJBTkdFIE9OTFlcclxuICAvLy8gdG8gaW5zZXJ0IHJlbGV2YW50IHJhbmdlIHRvIHRoZSBzdGF0dXMgYmFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICAgIHRoaXMuX3R5cGUgPSBNc2dJbnRlcmZhY2UuU1RSX1JOR19UWFQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Y29uc3RydWN0b3Igb24gY2FzZSBvZiB3cm9uZyB1c2VyIGlucHV0XHJcbiAgLy8vIHRvIGluc2VydCAnQmFkICd0eXBlJyAuJ21lc3NhZ2UgdG8gc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxufVxyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JvbmdGb3JtYXRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1dyb25nRm9ybWF0RXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFTOUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFNakQsWUFBWSxJQUFhO1FBRXZCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUxOLFVBQUssR0FBVyxJQUFJLENBQUM7UUFPM0IsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFLTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUtPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TXNnSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW5ldmVyIHRoZSBVc2VyIGluc2VydGVkIGlucHV0XHJcbi8vLyB0byBmaWVsZCB3aGljaCBjYW4gbm90IGJlIGluaXRpYWxpemVkIGJ5IG1hc2svZm9ybWF0LCBzb1xyXG4vLy8gYWZ0ZXIgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiBpdCBuZWVkczpcclxuLy8vIHNldCBmb2N1cyBiYWNrIHRvIHRoZSBmaWVsZFxyXG4vLy8gcmV0dXJuIHRvIHRoZSBmaWVsZCBvbGQgdmFsdWVcclxuLy8vIHdyaXRlIGluIHRoZSBzdGF0dXMgYmFyIHJlbGV2YW50IG1lc3NhZ2VcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFdyb25nRm9ybWF0RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHtcclxuXHJcbiAgLy8gdHlwZSBvZiB0aGUgZmllbGQgcHJvZHVjZWQgdGhlIGV4Y2VwdGlvblxyXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcih0eXBlPzogc3RyaW5nKSB7XHJcblxyXG4gICAgc3VwZXIodHlwZSk7XHJcblxyXG4gICAgdGhpcy5uYW1lID0gXCJXcm9uZ0Zvcm1hdEV4Y2VwdGlvblwiO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fdHlwZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Y29uc3RydWN0b3Igb24gY2FzZSBvZiB3cm9uZyBSQU5HRSBPTkxZXHJcbiAgLy8vIHRvIGluc2VydCByZWxldmFudCByYW5nZSB0byB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB0aGlzLl90eXBlID0gTXNnSW50ZXJmYWNlLlNUUl9STkdfVFhUO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmNvbnN0cnVjdG9yIG9uIGNhc2Ugb2Ygd3JvbmcgdXNlciBpbnB1dFxyXG4gIC8vLyB0byBpbnNlcnQgJ0JhZCAndHlwZScgLidtZXNzYWdlIHRvIHN0YXR1cyBiYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,4 +1,4 @@
1
1
  export class GuiDataCollection {
2
2
  }
3
3
  GuiDataCollection.MGDataTable = null;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRGF0YUNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpRGF0YUNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjs7QUFFckIsNkJBQVcsR0FBaUIsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1HRGF0YVRhYmxlIH0gZnJvbSBcIi4vSU1HRGF0YVRhYmxlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpRGF0YUNvbGxlY3Rpb25cclxue1xyXG4gIHN0YXRpYyBNR0RhdGFUYWJsZTogSU1HRGF0YVRhYmxlID0gbnVsbDtcclxufVxyXG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRGF0YUNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpRGF0YUNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjs7QUFFckIsNkJBQVcsR0FBaUIsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1HRGF0YVRhYmxlIH0gZnJvbSBcIi4vSU1HRGF0YVRhYmxlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpRGF0YUNvbGxlY3Rpb25cclxue1xyXG4gIHN0YXRpYyBNR0RhdGFUYWJsZTogSU1HRGF0YVRhYmxlID0gbnVsbDtcclxufVxyXG4iXX0=