@sapui5/sap.fe.base 1.131.0 → 1.132.0

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.
@@ -28,7 +28,8 @@ import type {
28
28
  PathAnnotationExpression,
29
29
  PathConditionExpression,
30
30
  Property,
31
- PropertyAnnotationValue
31
+ PropertyAnnotationValue,
32
+ ConstantExpression as VocabConstantExpression
32
33
  } from "@sap-ux/vocabularies-types";
33
34
  import { CommonAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Common";
34
35
  import { resolveEnumValue } from "sap/fe/base/AnnotationEnum";
@@ -847,7 +848,8 @@ type ComplexAnnotationExpression<P> =
847
848
  | GtAnnotationExpression<P>
848
849
  | GeAnnotationExpression<P>
849
850
  | LeAnnotationExpression<P>
850
- | LtAnnotationExpression<P>;
851
+ | LtAnnotationExpression<P>
852
+ | VocabConstantExpression<P>;
851
853
 
852
854
  function isPrimitiveObject(objectType: object): boolean {
853
855
  switch (objectType.constructor.name) {
@@ -951,6 +953,9 @@ export function getExpressionFromAnnotation<T extends PrimitiveType>(
951
953
  visitedNavigationPaths,
952
954
  pathVisitor
953
955
  ) as BindingToolkitExpression<PrimitiveTypeCast<T>>;
956
+ case "Constant":
957
+ // Not a real case but the type system needs it
958
+ return constant(annotationValue.value as PrimitiveTypeCast<T>);
954
959
  }
955
960
  return unresolvableExpression;
956
961
  }
@@ -1767,11 +1772,15 @@ export function addTypeInformation<T, U extends Fn<T>>(
1767
1772
  const uomPath = pathInModel("/##@@requestUnitsOfMeasure");
1768
1773
  uomPath.targetType = "any";
1769
1774
  uomPath.mode = "OneTime";
1775
+ oFormatOptions ??= {};
1776
+ oFormatOptions.preserveDecimals = false; // default value since we don't have a CLDR
1770
1777
  parameterExpressions.push(uomPath);
1771
1778
  } else if (type === "sap.ui.model.odata.type.Currency") {
1772
1779
  const currencyPath = pathInModel("/##@@requestCurrencyCodes");
1773
1780
  currencyPath.targetType = "any";
1774
1781
  currencyPath.mode = "OneTime";
1782
+ oFormatOptions ??= {};
1783
+ oFormatOptions.preserveDecimals = false; // default value since we don't have a CLDR
1775
1784
  parameterExpressions.push(currencyPath);
1776
1785
  }
1777
1786
 
@@ -1794,6 +1803,7 @@ type ComplexTypeFormatOptions = {
1794
1803
  showTime?: boolean;
1795
1804
  showDate?: boolean;
1796
1805
  showTimezone?: boolean;
1806
+ preserveDecimals?: boolean;
1797
1807
  };
1798
1808
 
1799
1809
  export type ComplexTypeConstraintOptions = {
@@ -11,7 +11,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
11
11
  var association = ClassSupport.association;
12
12
  var aggregation = ClassSupport.aggregation;
13
13
  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
14
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
15
14
  function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
16
15
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
17
16
  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
@@ -34,11 +33,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
34
33
  multiple: true,
35
34
  singularName: "ariaLabelledBy"
36
35
  }), _dec4 = defineState(), _dec(_class = (_class2 = /*#__PURE__*/function (_Control) {
37
- _inheritsLoose(BuildingBlockBase, _Control);
38
- /**
39
- * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
40
- */
41
-
42
36
  function BuildingBlockBase(settings, others) {
43
37
  var _this;
44
38
  if (typeof settings === "string") {
@@ -46,12 +40,16 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
46
40
  others.id = settings;
47
41
  }
48
42
  _this = _Control.call(this, settings, others) || this;
49
- _initializerDefineProperty(_this, "content", _descriptor, _assertThisInitialized(_this));
50
- _initializerDefineProperty(_this, "ariaLabelledBy", _descriptor2, _assertThisInitialized(_this));
51
- _initializerDefineProperty(_this, "state", _descriptor3, _assertThisInitialized(_this));
43
+ _initializerDefineProperty(_this, "content", _descriptor, _this);
44
+ /**
45
+ * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
46
+ */
47
+ _initializerDefineProperty(_this, "ariaLabelledBy", _descriptor2, _this);
48
+ _initializerDefineProperty(_this, "state", _descriptor3, _this);
52
49
  _this._oldDomRef = null;
53
50
  return _this;
54
51
  }
52
+ _inheritsLoose(BuildingBlockBase, _Control);
55
53
  BuildingBlockBase.render = function render(oRm, oControl) {
56
54
  if (!oControl.content || oControl.getVisible() === false) {
57
55
  InvisibleRenderer.render(oRm, oControl);
@@ -69,7 +67,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
69
67
  var _proto = BuildingBlockBase.prototype;
70
68
  _proto.bindProperty = function bindProperty(name, bindingInfo) {
71
69
  const propertyMetadata = this.getMetadata().getProperty(name);
72
- if ((propertyMetadata === null || propertyMetadata === void 0 ? void 0 : propertyMetadata.bindable) === false && propertyMetadata.group === "Data") {
70
+ if (propertyMetadata?.bindable === false && propertyMetadata.group === "Data") {
73
71
  this[name] = bindingInfo;
74
72
  } else {
75
73
  _Control.prototype.bindProperty.call(this, name, bindingInfo);
@@ -90,10 +88,9 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
90
88
  };
91
89
  _proto.getDomRef = function getDomRef() {
92
90
  const oContent = this.content;
93
- let domRef = (oContent === null || oContent === void 0 ? void 0 : oContent.getDomRef()) ?? _Control.prototype.getDomRef.call(this);
91
+ let domRef = oContent?.getDomRef() ?? _Control.prototype.getDomRef.call(this);
94
92
  if (!domRef) {
95
- var _this$_oldDomRef;
96
- domRef = ((_this$_oldDomRef = this._oldDomRef) === null || _this$_oldDomRef === void 0 ? void 0 : _this$_oldDomRef.deref()) ?? null;
93
+ domRef = this._oldDomRef?.deref() ?? null;
97
94
  if (domRef) {
98
95
  return document.getElementById(domRef.id);
99
96
  }
@@ -125,9 +122,8 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
125
122
  * @returns The accessibility information for the control.
126
123
  */;
127
124
  _proto.getAccessibilityInfo = function getAccessibilityInfo() {
128
- var _this$content;
129
125
  let accessibilityInfo = {};
130
- if ((_this$content = this.content) !== null && _this$content !== void 0 && _this$content.isA("sap.ui.core.Control")) {
126
+ if (this.content?.isA("sap.ui.core.Control")) {
131
127
  accessibilityInfo = this.content.getAccessibilityInfo();
132
128
  }
133
129
  return accessibilityInfo;
@@ -140,21 +136,18 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
140
136
  * @returns ID to be used for the <code>labelFor</code>
141
137
  */;
142
138
  _proto.getIdForLabel = function getIdForLabel() {
143
- var _this$content2;
144
- if ((_this$content2 = this.content) !== null && _this$content2 !== void 0 && _this$content2.isA("sap.ui.core.Control")) {
139
+ if (this.content?.isA("sap.ui.core.Control")) {
145
140
  return this.content.getIdForLabel();
146
141
  }
147
142
  return "";
148
143
  };
149
144
  _proto.addStyleClass = function addStyleClass(styleClass) {
150
- var _this$content3;
151
- (_this$content3 = this.content) === null || _this$content3 === void 0 ? void 0 : _this$content3.addStyleClass(styleClass);
145
+ this.content?.addStyleClass(styleClass);
152
146
  _Control.prototype.addStyleClass.call(this, styleClass);
153
147
  return this;
154
148
  };
155
149
  _proto.removeStyleClass = function removeStyleClass(styleClass) {
156
- var _this$content4;
157
- (_this$content4 = this.content) === null || _this$content4 === void 0 ? void 0 : _this$content4.removeStyleClass(styleClass);
150
+ this.content?.removeStyleClass(styleClass);
158
151
  _Control.prototype.removeStyleClass.call(this, styleClass);
159
152
  return this;
160
153
  }
@@ -168,7 +161,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
168
161
  return BindingToolkit.bindState(this.state, path);
169
162
  };
170
163
  return BuildingBlockBase;
171
- }(Control), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "content", [_dec2], {
164
+ }(Control), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "content", [_dec2], {
172
165
  configurable: true,
173
166
  enumerable: true,
174
167
  writable: true,
@@ -185,7 +178,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
185
178
  initializer: function () {
186
179
  return {};
187
180
  }
188
- })), _class2)) || _class);
181
+ }), _class2)) || _class);
189
182
  return BuildingBlockBase;
190
183
  }, false);
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsIl9pbmhlcml0c0xvb3NlIiwic2V0dGluZ3MiLCJvdGhlcnMiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX29sZERvbVJlZiIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0eSIsImJpbmRhYmxlIiwiZ3JvdXAiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZXZlbnQiLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwib0NvbnRlbnQiLCJfdGhpcyRfb2xkRG9tUmVmIiwiZGVyZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Rm9jdXNEb21SZWYiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwiX29FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsIl90aGlzJGNvbnRlbnQiLCJhY2Nlc3NpYmlsaXR5SW5mbyIsImlzQSIsImdldElkRm9yTGFiZWwiLCJfdGhpcyRjb250ZW50MiIsImFkZFN0eWxlQ2xhc3MiLCJzdHlsZUNsYXNzIiwiX3RoaXMkY29udGVudDMiLCJyZW1vdmVTdHlsZUNsYXNzIiwiX3RoaXMkY29udGVudDQiLCJiaW5kU3RhdGUiLCJwYXRoIiwiQmluZGluZ1Rvb2xraXQiLCJzdGF0ZSIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RhbnRFeHByZXNzaW9uLCBQYXRoSW5Nb2RlbEV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCAqIGFzIEJpbmRpbmdUb29sa2l0IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YsIFN0YXRlT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEludmlzaWJsZVJlbmRlcmVyIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVSZW5kZXJlclwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IHtcblx0Ly8gRm9yY2UgYSBzdGF0ZSB1cGRhdGVcblx0X3VwZGF0ZVN0YXRlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYnVpbGRpbmcgYmxvY2tzLlxuICogVGhpcyBjb250YWlucyB0aGUgbG93IGxldmVsIGZ1bmN0aW9uYWxpdHkgb2YgaGF2aW5nIGEgY29udGVudCBhZ2dyZWdhdGlvbiBhbmQgaGFuZGxpbmcgdGhlIHJlbmRlcmluZyBvZiB0aGUgY29udGVudCB3aXRob3V0IGFuIGFjdHVhbCBET00gZWxlbWVudC5cbiAqIFRoZSBidWlsZGluZyBibG9jayBhbHNvIGRlZmluZXMgYSBzdGF0ZSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuICogQWNjZXNzaWJpbGl0eSBhbmQgY2xhc3NlcyBpbmZvcm1hdGlvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjb250ZW50IGNvbnRyb2wuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5iYXNlLkJ1aWxkaW5nQmxvY2tCYXNlXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4gZXh0ZW5kcyBDb250cm9sIHtcblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5FbGVtZW50XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQ/OiBUO1xuXG5cdC8qKlxuXHQgKiBBc3NvY2lhdGlvbiB0byBjb250cm9scyAvIElEcyB0aGF0IGxhYmVsIHRoaXMgY29udHJvbCAoc2VlIFdBSS1BUklBIGF0dHJpYnV0ZSBhcmlhLWxhYmVsbGVkYnkpLlxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlLCBzaW5ndWxhck5hbWU6IFwiYXJpYUxhYmVsbGVkQnlcIiB9KVxuXHRhcmlhTGFiZWxsZWRCeSE6IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVTdGF0ZSgpXG5cdHByb3RlY3RlZCBzdGF0ZTogU3RhdGVPZjxLPiA9IHt9IGFzIFN0YXRlT2Y8Sz47XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzKTtcblx0fVxuXG5cdHByaXZhdGUgX29sZERvbVJlZjogV2Vha1JlZjxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG5cdHN0YXRpYyByZW5kZXI8VCBleHRlbmRzIENvbnRyb2w+KG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IEJ1aWxkaW5nQmxvY2tCYXNlPFQ+KTogdm9pZCB7XG5cdFx0aWYgKCFvQ29udHJvbC5jb250ZW50IHx8IG9Db250cm9sLmdldFZpc2libGUoKSA9PT0gZmFsc2UpIHtcblx0XHRcdEludmlzaWJsZVJlbmRlcmVyLnJlbmRlcihvUm0sIG9Db250cm9sKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRyb2wuY29udGVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlIHRoZSBiaW5kUHJvcGVydHkgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mby5cblx0ICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGUgcHJvcGVydHlcblx0ICogQHBhcmFtIGJpbmRpbmdJbmZvIFRoZSBiaW5kaW5nIGluZm9cblx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBidWlsZGluZyBibG9jayBmb3IgY2hhaW5pbmdcblx0ICovXG5cdG92ZXJyaWRlIGJpbmRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIGJpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdGhpcyB7XG5cdFx0Y29uc3QgcHJvcGVydHlNZXRhZGF0YSA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0eShuYW1lKTtcblx0XHRpZiAocHJvcGVydHlNZXRhZGF0YT8uYmluZGFibGUgPT09IGZhbHNlICYmIHByb3BlcnR5TWV0YWRhdGEuZ3JvdXAgPT09IFwiRGF0YVwiKSB7XG5cdFx0XHQodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbbmFtZV0gPSBiaW5kaW5nSW5mbztcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYmluZFByb3BlcnR5KG5hbWUsIGJpbmRpbmdJbmZvKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvL3NldCB0aGUgb2xkIGRvbSByZWZcblx0b3ZlcnJpZGUgb25BZnRlclJlbmRlcmluZyhldmVudDogSlF1ZXJ5LkV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZG9tUmVmID0gdGhpcy5nZXREb21SZWYoKTtcblx0XHRpZiAoZG9tUmVmKSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBuZXcgV2Vha1JlZihkb21SZWYpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBudWxsO1xuXHRcdH1cblx0XHRzdXBlci5vbkFmdGVyUmVuZGVyaW5nKGV2ZW50KTtcblx0fVxuXG5cdG92ZXJyaWRlIGdldERvbVJlZigpOiBFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0bGV0IGRvbVJlZjogRWxlbWVudCB8IG51bGwgPSBvQ29udGVudD8uZ2V0RG9tUmVmKCkgPz8gc3VwZXIuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKCFkb21SZWYpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IE9iamVjdCB7XG5cdFx0bGV0IGFjY2Vzc2liaWxpdHlJbmZvID0ge307XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPENvbnRyb2w+KFwic2FwLnVpLmNvcmUuQ29udHJvbFwiKSkge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYmluZFN0YXRlKHBhdGg6IGtleW9mIEspOiBQYXRoSW5Nb2RlbEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4gfCBDb25zdGFudEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4ge1xuXHRcdHJldHVybiBCaW5kaW5nVG9vbGtpdC5iaW5kU3RhdGUodGhpcy5zdGF0ZSBhcyBLLCBwYXRoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrQmFzZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBV0E7RUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsaUJBQWlCLElBQUFDLElBQUEsR0FEdEJDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBRTlDQyxXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFLHFCQUFxQjtJQUFFQyxRQUFRLEVBQUUsS0FBSztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU05RUMsV0FBVyxDQUFDO0lBQUVKLElBQUksRUFBRSxxQkFBcUI7SUFBRUMsUUFBUSxFQUFFLElBQUk7SUFBRUksWUFBWSxFQUFFO0VBQWlCLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVGQyxXQUFXLENBQUMsQ0FBQyxFQUFBWCxJQUFBLENBQUFZLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQUFBQyxjQUFBLENBQUFoQixpQkFBQSxFQUFBZSxRQUFBO0lBTmQ7QUFDRDtBQUNBOztJQU9DLFNBQUFmLGtCQUFZaUIsUUFBc0QsRUFBRUMsTUFBMkMsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDaEgsSUFBSSxPQUFPRixRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2pDQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ2JBLE1BQU0sQ0FBQ0UsRUFBRSxHQUFHSCxRQUFRO01BQ3JCO01BQ0FFLEtBQUEsR0FBQUosUUFBQSxDQUFBTSxJQUFBLE9BQU1KLFFBQVEsRUFBdUJDLE1BQU0sQ0FBQztNQUFDSSwwQkFBQSxDQUFBSCxLQUFBLGFBQUFJLFdBQUEsRUFBQUMsc0JBQUEsQ0FBQUwsS0FBQTtNQUFBRywwQkFBQSxDQUFBSCxLQUFBLG9CQUFBTSxZQUFBLEVBQUFELHNCQUFBLENBQUFMLEtBQUE7TUFBQUcsMEJBQUEsQ0FBQUgsS0FBQSxXQUFBTyxZQUFBLEVBQUFGLHNCQUFBLENBQUFMLEtBQUE7TUFBQUEsS0FBQSxDQUd0Q1EsVUFBVSxHQUE0QixJQUFJO01BQUEsT0FBQVIsS0FBQTtJQUZsRDtJQUFDbkIsaUJBQUEsQ0FJTTRCLE1BQU0sR0FBYixTQUFBQSxPQUFpQ0MsR0FBa0IsRUFBRUMsUUFBOEIsRUFBUTtNQUMxRixJQUFJLENBQUNBLFFBQVEsQ0FBQ0MsT0FBTyxJQUFJRCxRQUFRLENBQUNFLFVBQVUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3pEQyxpQkFBaUIsQ0FBQ0wsTUFBTSxDQUFDQyxHQUFHLEVBQUVDLFFBQVEsQ0FBQztNQUN4QyxDQUFDLE1BQU07UUFDTkQsR0FBRyxDQUFDSyxhQUFhLENBQUNKLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDO01BQ3BDO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQSxJQUFBSSxNQUFBLEdBQUFuQyxpQkFBQSxDQUFBb0MsU0FBQTtJQUFBRCxNQUFBLENBTVNFLFlBQVksR0FBckIsU0FBQUEsYUFBc0JDLElBQVksRUFBRUMsV0FBZ0MsRUFBUTtNQUMzRSxNQUFNQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQ0osSUFBSSxDQUFDO01BQzdELElBQUksQ0FBQUUsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRUcsUUFBUSxNQUFLLEtBQUssSUFBSUgsZ0JBQWdCLENBQUNJLEtBQUssS0FBSyxNQUFNLEVBQUU7UUFDN0UsSUFBSSxDQUE2Qk4sSUFBSSxDQUFDLEdBQUdDLFdBQVc7TUFDdEQsQ0FBQyxNQUFNO1FBQ054QixRQUFBLENBQUFxQixTQUFBLENBQU1DLFlBQVksQ0FBQWhCLElBQUEsT0FBQ2lCLElBQUksRUFBRUMsV0FBVztNQUNyQztNQUNBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0lBQUE7SUFBQUosTUFBQSxDQUNTVSxnQkFBZ0IsR0FBekIsU0FBQUEsaUJBQTBCQyxLQUFtQixFQUFRO01BQ3BELE1BQU1DLE1BQU0sR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO01BQy9CLElBQUlELE1BQU0sRUFBRTtRQUNYLElBQUksQ0FBQ3BCLFVBQVUsR0FBRyxJQUFJc0IsT0FBTyxDQUFDRixNQUFNLENBQUM7TUFDdEMsQ0FBQyxNQUFNO1FBQ04sSUFBSSxDQUFDcEIsVUFBVSxHQUFHLElBQUk7TUFDdkI7TUFDQVosUUFBQSxDQUFBcUIsU0FBQSxDQUFNUyxnQkFBZ0IsQ0FBQXhCLElBQUEsT0FBQ3lCLEtBQUs7SUFDN0IsQ0FBQztJQUFBWCxNQUFBLENBRVFhLFNBQVMsR0FBbEIsU0FBQUEsVUFBQSxFQUFxQztNQUNwQyxNQUFNRSxRQUFRLEdBQUcsSUFBSSxDQUFDbkIsT0FBTztNQUM3QixJQUFJZ0IsTUFBc0IsR0FBRyxDQUFBRyxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUYsU0FBUyxDQUFDLENBQUMsS0FBQWpDLFFBQUEsQ0FBQXFCLFNBQUEsQ0FBVVksU0FBUyxDQUFBM0IsSUFBQSxNQUFFO01BQ3ZFLElBQUksQ0FBQzBCLE1BQU0sRUFBRTtRQUFBLElBQUFJLGdCQUFBO1FBQ1pKLE1BQU0sR0FBRyxFQUFBSSxnQkFBQSxPQUFJLENBQUN4QixVQUFVLGNBQUF3QixnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUJDLEtBQUssQ0FBQyxDQUFDLEtBQUksSUFBSTtRQUN6QyxJQUFJTCxNQUFNLEVBQUU7VUFDWCxPQUFPTSxRQUFRLENBQUNDLGNBQWMsQ0FBQ1AsTUFBTSxDQUFDM0IsRUFBRSxDQUFDO1FBQzFDO01BQ0Q7TUFDQSxPQUFPMkIsTUFBTTtJQUNkLENBQUM7SUFBQVosTUFBQSxDQUVRb0IsY0FBYyxHQUF2QixTQUFBQSxlQUFBLEVBQTBDO01BQ3pDLE1BQU1MLFFBQVEsR0FBRyxJQUFJLENBQUNuQixPQUFPO01BQzdCLE9BQU9tQixRQUFRLEdBQUdBLFFBQVEsQ0FBQ0ssY0FBYyxDQUFDLENBQUMsR0FBQXhDLFFBQUEsQ0FBQXFCLFNBQUEsQ0FBU21CLGNBQWMsQ0FBQWxDLElBQUEsTUFBRTtJQUNyRTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBYyxNQUFBLENBTVNxQix5QkFBeUIsR0FBbEMsU0FBQUEsMEJBQW1DQyxTQUFpQixFQUFFQyxVQUFrQixFQUFVO01BQ2pGLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO01BRWhDLElBQUlELE9BQU8sSUFBS0EsT0FBTyxDQUE4REgseUJBQXlCLEVBQUU7UUFDL0c7UUFDQ0csT0FBTyxDQUE2REgseUJBQXlCLENBQUNDLFNBQVMsRUFBRUMsVUFBVSxDQUFDO01BQ3RIO01BRUEsT0FBT0EsVUFBVTtJQUNsQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF2QixNQUFBLENBSVMwQixvQkFBb0IsR0FBN0IsU0FBQUEscUJBQUEsRUFBd0M7TUFBQSxJQUFBQyxhQUFBO01BQ3ZDLElBQUlDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztNQUMxQixLQUFBRCxhQUFBLEdBQUksSUFBSSxDQUFDL0IsT0FBTyxjQUFBK0IsYUFBQSxlQUFaQSxhQUFBLENBQWNFLEdBQUcsQ0FBVSxxQkFBcUIsQ0FBQyxFQUFFO1FBQ3RERCxpQkFBaUIsR0FBRyxJQUFJLENBQUNoQyxPQUFPLENBQUM4QixvQkFBb0IsQ0FBQyxDQUFDO01BQ3hEO01BQ0EsT0FBT0UsaUJBQWlCO0lBQ3pCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUE1QixNQUFBLENBTVM4QixhQUFhLEdBQXRCLFNBQUFBLGNBQUEsRUFBaUM7TUFBQSxJQUFBQyxjQUFBO01BQ2hDLEtBQUFBLGNBQUEsR0FBSSxJQUFJLENBQUNuQyxPQUFPLGNBQUFtQyxjQUFBLGVBQVpBLGNBQUEsQ0FBY0YsR0FBRyxDQUFVLHFCQUFxQixDQUFDLEVBQUU7UUFDdEQsT0FBTyxJQUFJLENBQUNqQyxPQUFPLENBQUNrQyxhQUFhLENBQUMsQ0FBQztNQUNwQztNQUNBLE9BQU8sRUFBRTtJQUNWLENBQUM7SUFBQTlCLE1BQUEsQ0FFUWdDLGFBQWEsR0FBdEIsU0FBQUEsY0FBdUJDLFVBQWtCLEVBQVE7TUFBQSxJQUFBQyxjQUFBO01BQ2hELENBQUFBLGNBQUEsR0FBQyxJQUFJLENBQUN0QyxPQUFPLGNBQUFzQyxjQUFBLHVCQUFiQSxjQUFBLENBQXNDRixhQUFhLENBQUNDLFVBQVUsQ0FBQztNQUMvRHJELFFBQUEsQ0FBQXFCLFNBQUEsQ0FBTStCLGFBQWEsQ0FBQTlDLElBQUEsT0FBQytDLFVBQVU7TUFDOUIsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBakMsTUFBQSxDQUVRbUMsZ0JBQWdCLEdBQXpCLFNBQUFBLGlCQUEwQkYsVUFBa0IsRUFBUTtNQUFBLElBQUFHLGNBQUE7TUFDbkQsQ0FBQUEsY0FBQSxHQUFDLElBQUksQ0FBQ3hDLE9BQU8sY0FBQXdDLGNBQUEsdUJBQWJBLGNBQUEsQ0FBc0NELGdCQUFnQixDQUFDRixVQUFVLENBQUM7TUFDbEVyRCxRQUFBLENBQUFxQixTQUFBLENBQU1rQyxnQkFBZ0IsQ0FBQWpELElBQUEsT0FBQytDLFVBQVU7TUFDakMsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFqQyxNQUFBLENBS1VxQyxTQUFTLEdBQW5CLFNBQUFBLFVBQW9CQyxJQUFhLEVBQTRFO01BQzVHLE9BQU9DLGNBQWMsQ0FBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQ0csS0FBSyxFQUFPRixJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUFBLE9BQUF6RSxpQkFBQTtFQUFBLEVBeElxRjRFLE9BQU8sSUFBQXJELFdBQUEsR0FBQXNELHlCQUFBLENBQUEvRCxPQUFBLENBQUFzQixTQUFBLGNBQUFqQyxLQUFBO0lBQUEyRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhELFlBQUEsR0FBQW9ELHlCQUFBLENBQUEvRCxPQUFBLENBQUFzQixTQUFBLHFCQUFBNUIsS0FBQTtJQUFBc0UsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2RCxZQUFBLEdBQUFtRCx5QkFBQSxDQUFBL0QsT0FBQSxDQUFBc0IsU0FBQSxZQUFBekIsS0FBQTtJQUFBbUUsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FXL0QsQ0FBQyxDQUFDO0lBQUE7RUFBQSxLQUFBbkUsT0FBQSxNQUFBRCxNQUFBO0VBQUEsT0FnSWxCYixpQkFBaUI7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJpZCIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX29sZERvbVJlZiIsIl9pbmhlcml0c0xvb3NlIiwicmVuZGVyIiwib1JtIiwib0NvbnRyb2wiLCJjb250ZW50IiwiZ2V0VmlzaWJsZSIsIkludmlzaWJsZVJlbmRlcmVyIiwicmVuZGVyQ29udHJvbCIsIl9wcm90byIsInByb3RvdHlwZSIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJnZXRNZXRhZGF0YSIsImdldFByb3BlcnR5IiwiYmluZGFibGUiLCJncm91cCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJldmVudCIsImRvbVJlZiIsImdldERvbVJlZiIsIldlYWtSZWYiLCJvQ29udGVudCIsImRlcmVmIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldEZvY3VzRG9tUmVmIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIl9vRWxlbWVudCIsIm1BcmlhUHJvcHMiLCJvUGFyZW50IiwiZ2V0UGFyZW50IiwiZ2V0QWNjZXNzaWJpbGl0eUluZm8iLCJhY2Nlc3NpYmlsaXR5SW5mbyIsImlzQSIsImdldElkRm9yTGFiZWwiLCJhZGRTdHlsZUNsYXNzIiwic3R5bGVDbGFzcyIsInJlbW92ZVN0eWxlQ2xhc3MiLCJiaW5kU3RhdGUiLCJwYXRoIiwiQmluZGluZ1Rvb2xraXQiLCJzdGF0ZSIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RhbnRFeHByZXNzaW9uLCBQYXRoSW5Nb2RlbEV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCAqIGFzIEJpbmRpbmdUb29sa2l0IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YsIFN0YXRlT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEludmlzaWJsZVJlbmRlcmVyIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVSZW5kZXJlclwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IHtcblx0Ly8gRm9yY2UgYSBzdGF0ZSB1cGRhdGVcblx0X3VwZGF0ZVN0YXRlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYnVpbGRpbmcgYmxvY2tzLlxuICogVGhpcyBjb250YWlucyB0aGUgbG93IGxldmVsIGZ1bmN0aW9uYWxpdHkgb2YgaGF2aW5nIGEgY29udGVudCBhZ2dyZWdhdGlvbiBhbmQgaGFuZGxpbmcgdGhlIHJlbmRlcmluZyBvZiB0aGUgY29udGVudCB3aXRob3V0IGFuIGFjdHVhbCBET00gZWxlbWVudC5cbiAqIFRoZSBidWlsZGluZyBibG9jayBhbHNvIGRlZmluZXMgYSBzdGF0ZSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuICogQWNjZXNzaWJpbGl0eSBhbmQgY2xhc3NlcyBpbmZvcm1hdGlvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjb250ZW50IGNvbnRyb2wuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5iYXNlLkJ1aWxkaW5nQmxvY2tCYXNlXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4gZXh0ZW5kcyBDb250cm9sIHtcblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5FbGVtZW50XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQ/OiBUO1xuXG5cdC8qKlxuXHQgKiBBc3NvY2lhdGlvbiB0byBjb250cm9scyAvIElEcyB0aGF0IGxhYmVsIHRoaXMgY29udHJvbCAoc2VlIFdBSS1BUklBIGF0dHJpYnV0ZSBhcmlhLWxhYmVsbGVkYnkpLlxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlLCBzaW5ndWxhck5hbWU6IFwiYXJpYUxhYmVsbGVkQnlcIiB9KVxuXHRhcmlhTGFiZWxsZWRCeSE6IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVTdGF0ZSgpXG5cdHByb3RlY3RlZCBzdGF0ZTogU3RhdGVPZjxLPiA9IHt9IGFzIFN0YXRlT2Y8Sz47XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzKTtcblx0fVxuXG5cdHByaXZhdGUgX29sZERvbVJlZjogV2Vha1JlZjxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG5cdHN0YXRpYyByZW5kZXI8VCBleHRlbmRzIENvbnRyb2w+KG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IEJ1aWxkaW5nQmxvY2tCYXNlPFQ+KTogdm9pZCB7XG5cdFx0aWYgKCFvQ29udHJvbC5jb250ZW50IHx8IG9Db250cm9sLmdldFZpc2libGUoKSA9PT0gZmFsc2UpIHtcblx0XHRcdEludmlzaWJsZVJlbmRlcmVyLnJlbmRlcihvUm0sIG9Db250cm9sKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRyb2wuY29udGVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlIHRoZSBiaW5kUHJvcGVydHkgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mby5cblx0ICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGUgcHJvcGVydHlcblx0ICogQHBhcmFtIGJpbmRpbmdJbmZvIFRoZSBiaW5kaW5nIGluZm9cblx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBidWlsZGluZyBibG9jayBmb3IgY2hhaW5pbmdcblx0ICovXG5cdG92ZXJyaWRlIGJpbmRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIGJpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdGhpcyB7XG5cdFx0Y29uc3QgcHJvcGVydHlNZXRhZGF0YSA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0eShuYW1lKTtcblx0XHRpZiAocHJvcGVydHlNZXRhZGF0YT8uYmluZGFibGUgPT09IGZhbHNlICYmIHByb3BlcnR5TWV0YWRhdGEuZ3JvdXAgPT09IFwiRGF0YVwiKSB7XG5cdFx0XHQodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbbmFtZV0gPSBiaW5kaW5nSW5mbztcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYmluZFByb3BlcnR5KG5hbWUsIGJpbmRpbmdJbmZvKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvL3NldCB0aGUgb2xkIGRvbSByZWZcblx0b3ZlcnJpZGUgb25BZnRlclJlbmRlcmluZyhldmVudDogSlF1ZXJ5LkV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZG9tUmVmID0gdGhpcy5nZXREb21SZWYoKTtcblx0XHRpZiAoZG9tUmVmKSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBuZXcgV2Vha1JlZihkb21SZWYpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBudWxsO1xuXHRcdH1cblx0XHRzdXBlci5vbkFmdGVyUmVuZGVyaW5nKGV2ZW50KTtcblx0fVxuXG5cdG92ZXJyaWRlIGdldERvbVJlZigpOiBFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0bGV0IGRvbVJlZjogRWxlbWVudCB8IG51bGwgPSBvQ29udGVudD8uZ2V0RG9tUmVmKCkgPz8gc3VwZXIuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKCFkb21SZWYpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IE9iamVjdCB7XG5cdFx0bGV0IGFjY2Vzc2liaWxpdHlJbmZvID0ge307XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPENvbnRyb2w+KFwic2FwLnVpLmNvcmUuQ29udHJvbFwiKSkge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYmluZFN0YXRlKHBhdGg6IGtleW9mIEspOiBQYXRoSW5Nb2RlbEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4gfCBDb25zdGFudEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4ge1xuXHRcdHJldHVybiBCaW5kaW5nVG9vbGtpdC5iaW5kU3RhdGUodGhpcy5zdGF0ZSBhcyBLLCBwYXRoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrQmFzZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFXQTtFQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxpQkFBaUIsSUFBQUMsSUFBQSxHQUR0QkMsY0FBYyxDQUFDLCtCQUErQixDQUFDLEVBQUFDLEtBQUEsR0FFOUNDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTTlFQyxXQUFXLENBQUM7SUFBRUosSUFBSSxFQUFFLHFCQUFxQjtJQUFFQyxRQUFRLEVBQUUsSUFBSTtJQUFFSSxZQUFZLEVBQUU7RUFBaUIsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHNUZDLFdBQVcsQ0FBQyxDQUFDLEVBQUFYLElBQUEsQ0FBQVksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBR2QsU0FBQWYsa0JBQVlnQixRQUFzRCxFQUFFQyxNQUEyQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNoSCxJQUFJLE9BQU9GLFFBQVEsS0FBSyxRQUFRLEVBQUU7UUFDakNDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDYkEsTUFBTSxDQUFDRSxFQUFFLEdBQUdILFFBQVE7TUFDckI7TUFDQUUsS0FBQSxHQUFBSCxRQUFBLENBQUFLLElBQUEsT0FBTUosUUFBUSxFQUF1QkMsTUFBTSxDQUFDO01BQUNJLDBCQUFBLENBQUFILEtBQUEsYUFBQUksV0FB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