@sapui5/sap.fe.macros 1.133.2 → 1.133.4

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.macros",
3
- "version": "1.133.2",
3
+ "version": "1.133.4",
4
4
  "description": "SAPUI5 Library sap.fe.macros",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.133.2</version>
9
+ <version>1.133.4</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -43,7 +43,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
43
43
  }), _dec2 = mixin(InlineEdit), _dec3 = property({
44
44
  type: "boolean"
45
45
  }), _dec4 = property({
46
- type: "boolean",
46
+ type: "any",
47
47
  isBindingInfo: true
48
48
  }), _dec5 = property({
49
49
  type: "string"
@@ -71,12 +71,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
71
71
  }), _dec18 = property({
72
72
  type: "string"
73
73
  }), _dec19 = property({
74
- type: "string",
74
+ type: "any",
75
75
  bindable: true,
76
76
  isBindingInfo: true,
77
77
  required: false
78
78
  }), _dec20 = property({
79
- type: "string",
79
+ type: "any",
80
80
  bindable: true,
81
81
  isBindingInfo: true,
82
82
  required: false
@@ -89,7 +89,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
89
89
  }), _dec24 = property({
90
90
  type: "string"
91
91
  }), _dec25 = property({
92
- type: "object",
92
+ type: "any",
93
93
  isBindingInfo: true
94
94
  }), _dec26 = property({
95
95
  type: "boolean"
@@ -1012,4 +1012,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
1012
1012
  }), _applyDecoratedDescriptor(_class2.prototype, "handleChange", [_dec32], Object.getOwnPropertyDescriptor(_class2.prototype, "handleChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleLiveChange", [_dec33], Object.getOwnPropertyDescriptor(_class2.prototype, "handleLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onValidateFieldGroup", [_dec34], Object.getOwnPropertyDescriptor(_class2.prototype, "onValidateFieldGroup"), _class2.prototype), _class2)) || _class) || _class);
1013
1013
  return FieldAPI;
1014
1014
  }, false);
1015
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZEFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIklubGluZUVkaXQiLCJfZGVjMyIsInByb3BlcnR5IiwidHlwZSIsIl9kZWM0IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWM1IiwiX2RlYzYiLCJleHBlY3RlZEFubm90YXRpb25zIiwiZXhwZWN0ZWRUeXBlcyIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsImV2ZW50IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiYXNzb2NpYXRpb24iLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJhZ2dyZWdhdGlvbiIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsImJpbmRhYmxlIiwicmVxdWlyZWQiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJfZGVjMjciLCJfZGVjMjgiLCJfZGVjMjkiLCJfZGVjMzAiLCJfZGVjMzEiLCJfZGVjMzIiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjMzMiLCJfZGVjMzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX01hY3JvQVBJIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNvbWJpbmVkUHJvcHMiLCJpZCIsIl9mbGV4SWQiLCJ2aElkUHJlZml4IiwiaWRQcmVmaXgiLCJfYXBpSWQiLCJpbmNsdWRlcyIsIl92aEZsZXhJZCIsIl9zaG93VmFsdWVIZWxwVGVtcGxhdGUiLCJnZW5lcmF0ZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsImZvY3VzSGFuZGxlcnNBdHRhY2hlZCIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldENvbGxhYm9yYXRpb25CaW5kaW5nIiwiZmllbGQiLCJiaW5kaW5nIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nIiwiaXNBIiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJleHRyYWN0Q2hhbmdlRXZlbnREZXRhaWxzIiwiY2hhbmdlRXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJjb250cm9sbGVyIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJiaW5kaW5nQ29udGV4dCIsImlzVHJhbnNpZW50IiwidmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWQiLCJmaWVsZFZhbGlkaXR5IiwiRmllbGRSdW50aW1lSGVscGVyIiwiZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlIiwic3RhdGUiLCJjdXN0b21WYWx1ZUJpbmRpbmciLCJoYW5kbGVDaGFuZ2UiLCJuZXdWYWx1ZSIsInZhbHVlTW9kZWwiLCJnZXRNb2RlbCIsIm1vZGVsIiwic2V0UHJvcGVydHkiLCJwYXRoIiwidXBkYXRlQmluZGluZ3MiLCJmZUNvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25Db250cm9sbGVyIiwidW5kZWZpbmVkIiwidGhlbiIsIm9Tb3VyY2UiLCJtUGFyYW1ldGVycyIsImZpcmVFdmVudCIsInZhbHVlIiwiZ2V0VmFsdWUiLCJpc1ZhbGlkIiwiX3NpZGVFZmZlY3RzIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsImNhdGNoIiwiTG9nIiwiZGVidWciLCJ2YWx1ZVJlc29sdmVkQW5kUGF0Y2hTZW50Iiwic2V0VGltZW91dCIsImVkaXRGbG93Iiwic3luY1Rhc2siLCJwcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkIiwiYkNvbGxhYm9yYXRpb25FbmFibGVkIiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJpbmRleE9mIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiX2V2ZW50Iiwib25WYWxpZGF0ZUZpZWxkR3JvdXAiLCJzb3VyY2VGaWVsZCIsInZpZXciLCJnZXRDb250cm9sbGVyIiwiaGFuZGxlRmllbGRHcm91cENoYW5nZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaXNBcmlhbExhYmVsbGVkQnlDb21wbGlhbnQiLCJjb250cm9sIiwib0NvbnRlbnQiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImFBcmlhTGFiZWxsZWRCeSIsImdldEFyaWFMYWJlbGxlZEJ5Iiwic0lkIiwiYUFyaWFMYWJlbGxlZEJ5cyIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmZvY3VzaW4iLCJldnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsImdldENvbnRyb2xJbkZpZWxkV3JhcHBlciIsImZpZWxkV3JhcHBlciIsImNvbnRyb2xzIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RGlzcGxheSIsImdldENvbnRlbnRFZGl0IiwibGVuZ3RoIiwib0NvbnRyb2wiLCJnZXRJdGVtcyIsImdldFNlbGVjdGVkIiwiZ2V0VGV4dCIsImdldFRpdGxlIiwiRXJyb3IiLCJnZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJtYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJzZXRWYWx1ZSIsInNldFNlbGVjdGVkIiwic2V0VGV4dCIsImdldEVuYWJsZWQiLCJnZXRQcm9wZXJ0eSIsImVkaXRNb2RlIiwiRmllbGRFZGl0TW9kZSIsIkRpc2FibGVkIiwibGluayIsInNldEVuYWJsZWQiLCJlbmFibGVkIiwiZWRpdE1vZGVUeXBlIiwiRWRpdGFibGUiLCJzZXRFZGl0TW9kZSIsInNldExpbmtFbmFibGVkIiwiYWRkTWVzc2FnZSIsInBhcmFtZXRlcnMiLCJtc2dNYW5hZ2VyIiwiZ2V0TWVzc2FnZU1hbmFnZXIiLCJnZXRSZXNvbHZlZFBhdGgiLCJvTWVzc2FnZSIsIk1lc3NhZ2UiLCJ0YXJnZXQiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwiZGVzY3JpcHRpb24iLCJwZXJzaXN0ZW50IiwiYWRkTWVzc2FnZXMiLCJnZXRJZCIsInJlbW92ZU1lc3NhZ2UiLCJhcnIiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVzdWx0IiwiZmluZCIsImUiLCJyZW1vdmVNZXNzYWdlcyIsIk1lc3NhZ2luZyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJwcmVwYXJlZFByb3BlcnRpZXMiLCJwcmVwYXJlUHJvcGVydGllcyIsImNyZWF0ZUNvbnRlbnQiLCJtZXRhQ29udGV4dFBhdGgiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImlucHV0RmllbGRQcm9wZXJ0aWVzIiwiZ2V0UHJvcGVydHlCYWciLCJvbkxpdmVDaGFuZ2UiLCJoYXNMaXN0ZW5lcnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0Iiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJjb21wdXRlZENvbnRleHRQYXRoIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiY29tcHV0ZWRNZXRhUGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiaXNQcm9wZXJ0eUluaXRpYWwiLCJ2aXNpYmxlIiwic2V0VXBGaWVsZCIsImlzRHluYW1pY0luc3RhbnRpYXRpb24iLCJzZXRPckJpbmRQcm9wZXJ0eSIsInJlcXVpcmVkRXhwcmVzc2lvbiIsImV2ZW50SGFuZGxlcnMiLCJjaGFuZ2UiLCJiaW5kIiwibGl2ZUNoYW5nZSIsInZhbGlkYXRlRmllbGRHcm91cCIsImhhbmRsZVR5cGVNaXNzbWF0Y2giLCJvbkhhbmRsZVR5cGVNaXNzbWF0Y2giLCJoYW5kbGVGaWxlU2l6ZUV4Y2VlZCIsIm9uSGFuZGxlRmlsZVNpemVFeGNlZWQiLCJoYW5kbGVVcGxvYWRDb21wbGV0ZSIsImV2IiwiZmlsZUZpbGVuYW1lRXhwcmVzc2lvbiIsImZpbGVSZWxhdGl2ZVByb3BlcnR5UGF0aCIsInVwbG9hZFN0cmVhbSIsIm9uVXBsb2FkU3RyZWFtIiwicmVtb3ZlU3RyZWFtIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwib25IYW5kbGVPcGVuVXBsb2FkZXIiLCJoYW5kbGVDbG9zZVVwbG9hZGVyIiwib25IYW5kbGVDbG9zZVVwbG9hZGVyIiwib3BlbkV4dGVybmFsTGluayIsIm9uT3BlbkV4dGVybmFsTGluayIsIm9uRm9jdXNPdXQiLCJsaW5rUHJlc3NlZCIsIm9uTGlua1ByZXNzZWQiLCJkaXNwbGF5QWdncmVnYXRpb25EZXRhaWxzIiwiRmllbGRSdW50aW1lIiwiZGlzcGxheUFnZ3JlZ2F0ZURldGFpbHMiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZGF0YU1vZGVsUGF0aCIsIkZpZWxkU3RydWN0dXJlIiwiZ2V0RmllbGRTdHJ1Y3R1cmVUZW1wbGF0ZSIsImFkZERlcGVuZGVudCIsImdldFBvc3NpYmxlVmFsdWVIZWxwVGVtcGxhdGUiLCJNZXNzYWdlVG9hc3QiLCJzaG93IiwicHJlc3NMaW5rIiwiaGFuZGxlQ29udGVudEZvY3VzT3V0Iiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwiY3VycmVudFByb3BlcnR5VmFsdWUiLCJhZ2dyZWdhdGlvbk5hbWUiLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuQXJyYXkiLCJtYW5hZ2VkT2JqZWN0IiwicHVzaCIsImdldElubGluZUVkaXRQcm9wZXJ0eU5hbWUiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsInRhcmdldFByb3BlcnR5IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlIiwidGFyZ2V0T2JqZWN0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YVBvaW50VHlwZVR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1LCBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgbWl4aW4sIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgWE1MUHJlcHJvY2Vzc29yQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB0eXBlIEZvcm1FbGVtZW50V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRm9ybUVsZW1lbnRXcmFwcGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250YWN0IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRhY3QvQ29udGFjdFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0J1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiO1xuaW1wb3J0IHR5cGUgRmllbGRXcmFwcGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgVGV4dExpbmsgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvVGV4dExpbmtcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgeyBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIERhdGFQb2ludCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9EYXRhUG9pbnRcIjtcbmltcG9ydCAqIGFzIEZpZWxkU3RydWN0dXJlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL2ZpZWxkL0ZpZWxkU3RydWN0dXJlXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCBJbnB1dEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCB7IHNldFVwRmllbGQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9maWVsZC9GaWVsZFN0cnVjdHVyZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBDaGVja0JveCBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCB0eXBlIHsgQ2hlY2tCb3gkU2VsZWN0RXZlbnQgfSBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCB0eXBlIEV4cGFuZGFibGVUZXh0IGZyb20gXCJzYXAvbS9FeHBhbmRhYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IHR5cGUgSW5wdXRCYXNlIGZyb20gXCJzYXAvbS9JbnB1dEJhc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5wdXRCYXNlJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL0lucHV0QmFzZVwiO1xuaW1wb3J0IHR5cGUgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCB0eXBlIE9iamVjdElkZW50aWZpZXIgZnJvbSBcInNhcC9tL09iamVjdElkZW50aWZpZXJcIjtcbmltcG9ydCB0eXBlIE9iamVjdFN0YXR1cyBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgdHlwZSBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEZpZWxkLCBGaWVsZCRDaGFuZ2VFdmVudCwgZGVmYXVsdCBhcyBNRENGaWVsZCB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIFY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhQ29udGV4dEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsZVVwbG9hZGVyJENoYW5nZUV2ZW50LFxuXHRGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCxcblx0RmlsZVVwbG9hZGVyJFR5cGVNaXNzbWF0Y2hFdmVudFxufSBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi4vTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEVtYWlsIGZyb20gXCIuLi9jb250YWN0L0VtYWlsXCI7XG5pbXBvcnQgdHlwZSBGaWxlV3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCBJbmxpbmVFZGl0IGZyb20gXCIuLi9pbmxpbmVFZGl0L0lubGluZUVkaXRcIjtcbmltcG9ydCB0eXBlIEZpZWxkRm9ybWF0T3B0aW9ucyBmcm9tIFwiLi9GaWVsZEZvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgZmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBEYXRhRmllbGQgb3IgRGF0YVBvaW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgZmllbGQgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGEgcHJvcGVydHkgZnJvbSB0aGUgZW50aXR5IHR5cGUuXG4gKiBXaGVuIGNyZWF0aW5nIGEgRmllbGQgYnVpbGRpbmcgYmxvY2ssIHlvdSBtdXN0IHByb3ZpZGUgYW4gSUQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MgY29ycmVjdGx5LlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RmllbGQgaWQ9XCJNeUZpZWxkXCIgbWV0YVBhdGg9XCJNeVByb3BlcnR5XCIgLyZndDtcbiAqIDwvcHJlPlxuICogPGEgaHJlZj1cIi9zYXB1aTUtc2RrLWludGVybmFsL3Rlc3QtcmVzb3VyY2VzL3NhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL2J1aWxkaW5nQmxvY2tPdmVydmlld1wiIHRhcmdldD1cIl9ibGFua1wiID5PdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja3M8L2E+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5GaWVsZFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmZpZWxkLkZpZWxkQVBJXCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcblx0XHRcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkZvcm1FbGVtZW50V3JhcHBlclwiIC8qLCBub3Qgc3VyZSBpIHdhbnQgdG8gYWRkIHRob3NlIHlldCBcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRBUElcIiwgXCJzYXAubS5IQm94XCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIiwgXCJzYXAubS5CdXR0b25cIiovXG5cdF1cbn0pXG5AbWl4aW4oSW5saW5lRWRpdClcbmNsYXNzIEZpZWxkQVBJIGV4dGVuZHMgTWFjcm9BUEkge1xuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgZWRpdGFibGUgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgaWYgdGhlIHBhZ2UgaXMgY3VycmVudGx5IGVkaXRhYmxlLlxuXHQgKiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBjYW5ub3Qgc2V0IGEgZmllbGQgdG8gZWRpdGFibGUgaWYgaXQgaGFzIGJlZW4gZGVmaW5lZCBpbiB0aGUgYW5ub3RhdGlvbiBhcyBub3QgZWRpdGFibGUuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBkZXByZWNhdGVkXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZWRpdGFibGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSByZWFkLW9ubHkgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc0JpbmRpbmdJbmZvOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSByZWFkT25seSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBGaWVsZCBjb250cm9sLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwdWJsaWMgaWQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIHByb3BlcnR5IGluIHRoZSBtZXRhbW9kZWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHRQYXRoLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW10sXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiLCBcIlByb3BlcnR5XCJdXG5cdH0pXG5cdHB1YmxpYyByZWFkb25seSBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogV3JhcCBmaWVsZFxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgd3JhcD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXVxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGNvbnRhaW5pbmcgZGV0YWlscyBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkIGlzIGNoYW5nZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdGNoYW5nZSE6IEV2ZW50SGFuZGxlcjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgY29udGFpbmluZyBkZXRhaWxzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBmaWVsZCBnZXQgdGhlIGZvY3VzLlxuXHQgKlxuXHQgKi9cblx0QGV2ZW50KClcblx0Zm9jdXNpbiE6IEV2ZW50SGFuZGxlcjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgY29udGFpbmluZyBkZXRhaWxzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgaXMgbGl2ZSBjaGFuZ2VkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRsaXZlQ2hhbmdlITogRXZlbnRIYW5kbGVyO1xuXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyB2aElkUHJlZml4ITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBhY3Rpb24gd2lsbCBuYXZpZ2F0ZSBhZnRlciBleGVjdXRpb25cblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHJlYWRvbmx5IG5hdmlnYXRlQWZ0ZXJBY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZEZvcm1hdE9wdGlvbnNcIiB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZm9ybWF0T3B0aW9ucz86IEZpZWxkRm9ybWF0T3B0aW9ucztcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cblx0cHVibGljIF9mbGV4SWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEVkaXQgTW9kZSBvZiB0aGUgZmllbGQuXG5cdCAqXG5cdCAqIElmIHRoZSBlZGl0TW9kZSBpcyB1bmRlZmluZWQgdGhlbiB3ZSBjb21wdXRlIGl0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YVxuXHQgKiBPdGhlcndpc2Ugd2UgdXNlIHRoZSB2YWx1ZSBwcm92aWRlZCBoZXJlLlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInNhcC51aS5tZGMuZW51bXMuRmllbGRFZGl0TW9kZVwiXG5cdH0pXG5cdHB1YmxpYyByZWFkb25seSBlZGl0TW9kZT86IEZpZWxkRWRpdE1vZGUgfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogT3B0aW9uIHRvIGFkZCBzZW1hbnRpYyBvYmplY3RzIGZvciBhIGZpZWxkLlxuXHQgKiBUaGlzIHBhcmFtZXRlciBvdmVyd3JpdGVzIHRoZSBzZW1hbnRpYyBvYmplY3RzIGRlZmluZWQgdGhyb3VnaCBhbm5vdGF0aW9ucy5cblx0ICogVmFsaWQgb3B0aW9ucyBhcmUgZWl0aGVyIGEgc2luZ2xlIHNlbWFudGljIG9iamVjdCwgYSBzdHJpbmdpZmllZCBhcnJheSBvZiBzZW1hbnRpYyBvYmplY3RzLFxuXHQgKiBhIGZvcm1hdHRlciBvciBhIHNpbmdsZSBiaW5kaW5nIGV4cHJlc3Npb24gcmV0dXJuaW5nIGVpdGhlciBhIHNpbmdsZSBzZW1hbnRpYyBvYmplY3Qgb3IgYW4gYXJyYXkgb2Ygc2VtYW50aWMgb2JqZWN0cy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgc2VtYW50aWNPYmplY3QhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBvcHRpb25hbGx5IHByb3ZpZGUgYW4gZXh0ZXJuYWwgdmFsdWUgdGhhdCBjb21lcyBmcm9tIGEgZGlmZmVyZW50IG1vZGVsIHRoYW4gdGhlIG9EYXRhIG1vZGVsLlxuXHQgKiBJdCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggYSBmaWVsZCB3aXRoIHZhbHVlIGhlbHAsIGFuZCB3aXRob3V0IHN1cHBvcnQgZm9yIGNvbXBsZXggdmFsdWUgaGVscCAoY3VycmVuY3kgLyB1bml0KS5cblx0ICogQGV4cGVyaW1lbnRhbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0YmluZGFibGU6IHRydWUsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogZmFsc2Vcblx0fSlcblx0cHVibGljIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGlzIGlzIHVzZWQgdG8gb3B0aW9uYWxseSBwcm92aWRlIGFuIGV4dGVybmFsIGRlc2NyaXB0aW9uIHRoYXQgY29tZXMgZnJvbSBhIGRpZmZlcmVudCBtb2RlbCB0aGFuIHRoZSBvRGF0YSBtb2RlbC5cblx0ICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSB2YWx1ZSBwcm9wZXJ0eS5cblx0ICogQGV4cGVyaW1lbnRhbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0YmluZGFibGU6IHRydWUsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogZmFsc2Vcblx0fSlcblx0cHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIlxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgdGV4dEFsaWduPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHB1YmxpYyByZWFkb25seSBzaG93RXJyb3JPYmplY3RTdGF0dXM/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGNvbGxhYm9yYXRpb25FbmFibGVkPzogYm9vbGVhbjsgLy8gTmVlZCB0byBiZSBjb21wdXRlZCBvbiBkZW1hbmRcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBtYWluUHJvcGVydHlSZWxhdGl2ZVBhdGg/OiBzdHJpbmc7IC8vIE5lZWQgdG8gYmUgY29tcHV0ZWQgb24gZGVtYW5kXG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiwgaXNCaW5kaW5nSW5mbzogdHJ1ZSB9KVxuXHRjdXN0b21WYWx1ZUJpbmRpbmc/OiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHwgUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbmxpbmVFZGl0RW5hYmxlZD8gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRoYXNJbmxpbmVFZGl0PzogYm9vbGVhbjtcblxuXHRwcml2YXRlIGZvY3VzSGFuZGxlcnNBdHRhY2hlZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgY29tcHV0ZWRNZXRhUGF0aD86IENvbnRleHQ7XG5cblx0cHJpdmF0ZSBjb21wdXRlZENvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHRwcml2YXRlIG9kYXRhTWV0YU1vZGVsITogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRfdmhGbGV4SWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRfYXBpSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0X3Nob3dWYWx1ZUhlbHBUZW1wbGF0ZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcHJlcHJvY2Vzc29yQ29udGV4dCE6IFhNTFByZXByb2Nlc3NvckNvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGJpbmRpbmcgdXNlZCBmb3IgY29sbGFib3JhdGlvbiBub3RpZmljYXRpb25zLlxuXHQgKiBAcGFyYW0gZmllbGRcblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmdcblx0ICovXG5cdGdldENvbGxhYm9yYXRpb25CaW5kaW5nKGZpZWxkOiBDb250cm9sKTogT0RhdGFMaXN0QmluZGluZyB8IE9EYXRhQ29udGV4dEJpbmRpbmcge1xuXHRcdGxldCBiaW5kaW5nID0gKGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgVjRDb250ZXh0KS5nZXRCaW5kaW5nKCk7XG5cblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWVsZCk7XG5cdFx0XHRiaW5kaW5nID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKS5nZXRCaW5kaW5nKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJpbmRpbmc7XG5cdH1cblxuXHQvKipcblx0ICogRXh0cmFjdHMgZGF0YSBmcm9tIGEgY2hhbmdlIGV2ZW50IGZvciB1c2FnZSBpbiB0aGUgaGFuZGxlQ2hhbmdlIG1ldGhvZC5cblx0ICogQHBhcmFtIGNoYW5nZUV2ZW50IFRoZSBjaGFuZ2UgZXZlbnQgb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIGRldGFpbHNcblx0ICovXG5cdHByaXZhdGUgZXh0cmFjdENoYW5nZUV2ZW50RGV0YWlscyhjaGFuZ2VFdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBVSTVFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB7XG5cdFx0c291cmNlOiBGaWVsZDtcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcjtcblx0XHRpc1RyYW5zaWVudDogYm9vbGVhbjtcblx0XHR2YWx1ZVJlc29sdmVkOiBQcm9taXNlPHZvaWQ+O1xuXHRcdHZhbGlkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRcdGZpZWxkVmFsaWRpdHk6IGJvb2xlYW47XG5cdFx0Y3VzdG9tVmFsdWVCaW5kaW5nOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHwgUHJvcGVydHlCaW5kaW5nSW5mbyB8IHVuZGVmaW5lZDtcblx0fSB7XG5cdFx0Y29uc3Qgc291cmNlID0gY2hhbmdlRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHQvLyBJZiB0aGUgZmllbGQgaXMgYm91bmQgdG8gYSBKU09OIG1vZGVsLCBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSByZXR1cm5zIHVuZGVmaW5lZC5cblx0XHQvLyBJbiBzdWNoIGNhc2VzLCB3ZSBjYW5ub3QgY2FsbCBpc1RyYW5zaWVudCBvbiBpdC4gRGVmYXVsdGluZyB0byBmYWxzZS5cblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZSAmJiBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBpc1RyYW5zaWVudCA9IGJpbmRpbmdDb250ZXh0ID8gKGJpbmRpbmdDb250ZXh0IGFzIHVua25vd24gYXMgeyBpc1RyYW5zaWVudDogRnVuY3Rpb24gfSkuaXNUcmFuc2llbnQoKSA6IGZhbHNlO1xuXHRcdGNvbnN0IHZhbHVlUmVzb2x2ZWQgPSBjaGFuZ2VFdmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpIHx8IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdGNvbnN0IHZhbGlkID0gY2hhbmdlRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsaWRcIik7XG5cdFx0Y29uc3QgZmllbGRWYWxpZGl0eSA9IEZpZWxkUnVudGltZUhlbHBlci5nZXRGaWVsZFN0YXRlT25DaGFuZ2UoY2hhbmdlRXZlbnQpLnN0YXRlW1widmFsaWRpdHlcIl07XG5cdFx0Y29uc3QgY3VzdG9tVmFsdWVCaW5kaW5nID0gdGhpcz8uY3VzdG9tVmFsdWVCaW5kaW5nO1xuXG5cdFx0cmV0dXJuIHsgc291cmNlLCBjb250cm9sbGVyLCBpc1RyYW5zaWVudCwgdmFsdWVSZXNvbHZlZCwgdmFsaWQsIGZpZWxkVmFsaWRpdHksIGN1c3RvbVZhbHVlQmluZGluZyB9O1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGhhbmRsZUNoYW5nZShjaGFuZ2VFdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBVSTVFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB2b2lkIHtcblx0XHRjb25zdCB7IHNvdXJjZSwgY29udHJvbGxlciwgaXNUcmFuc2llbnQsIHZhbHVlUmVzb2x2ZWQsIHZhbGlkLCBmaWVsZFZhbGlkaXR5LCBjdXN0b21WYWx1ZUJpbmRpbmcgfSA9XG5cdFx0XHR0aGlzLmV4dHJhY3RDaGFuZ2VFdmVudERldGFpbHMoY2hhbmdlRXZlbnQpO1xuXG5cdFx0aWYgKGN1c3RvbVZhbHVlQmluZGluZykge1xuXHRcdFx0bGV0IG5ld1ZhbHVlO1xuXHRcdFx0Y29uc3QgdmFsdWVNb2RlbCA9IHNvdXJjZT8uZ2V0TW9kZWwoY3VzdG9tVmFsdWVCaW5kaW5nLm1vZGVsKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoc291cmNlLmlzQShcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRcdG5ld1ZhbHVlID0gKGNoYW5nZUV2ZW50IGFzIENoZWNrQm94JFNlbGVjdEV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJzZWxlY3RlZFwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5ld1ZhbHVlID0gKGNoYW5nZUV2ZW50IGFzIElucHV0QmFzZSRDaGFuZ2VFdmVudCkuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIik7XG5cdFx0XHR9XG5cdFx0XHR2YWx1ZU1vZGVsPy5zZXRQcm9wZXJ0eShjdXN0b21WYWx1ZUJpbmRpbmcucGF0aCwgbmV3VmFsdWUpO1xuXHRcdFx0dmFsdWVNb2RlbD8udXBkYXRlQmluZGluZ3ModHJ1ZSk7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlIHRoZSBGRSBDb250cm9sbGVyIGluc3RlYWQgb2YgdGhlIGV4dGVuc2lvbkFQSSB0byBhY2Nlc3MgaW50ZXJuYWwgRkUgY29udHJvbGxlcnNcblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyID8gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlcikgOiB1bmRlZmluZWQ7XG5cblx0XHQvLyBDdXJyZW50bHkgd2UgaGF2ZSB1bmRlZmluZWQgYW5kIHRydWUuLi4gYW5kIG91ciBjcmVhdGlvbiByb3cgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoaXMuXG5cdFx0Ly8gSSB3b3VsZCBtb3ZlIHRoaXMgbG9naWMgdG8gdGhpcyBwbGFjZSBhcyBpdCdzIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3IgZmllbGQgY29uc3VtZXJcblx0XHR2YWx1ZVJlc29sdmVkXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KGNoYW5nZUV2ZW50IGFzIHsgb1NvdXJjZT86IEZpZWxkIH0pLm9Tb3VyY2UgPSBzb3VyY2U7XG5cdFx0XHRcdChjaGFuZ2VFdmVudCBhcyB7IG1QYXJhbWV0ZXJzPzogeyB2YWxpZD86IGJvb2xlYW4gfSB9KS5tUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHR2YWxpZDogdmFsaWQgPz8gdHJ1ZVxuXHRcdFx0XHR9O1xuXHRcdFx0XHR0aGlzPy5maXJlRXZlbnQoXCJjaGFuZ2VcIiwgeyB2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBpc1ZhbGlkOiB2YWxpZCA/PyB0cnVlIH0pO1xuXHRcdFx0XHRpZiAoIWlzVHJhbnNpZW50KSB7XG5cdFx0XHRcdFx0Ly8gdHJpZ2dlciBzaWRlIGVmZmVjdHMgd2l0aG91dCByZWdpc3RlcmluZyBkZWZlcnJlZCBzaWRlIGVmZmVjdHNcblx0XHRcdFx0XHQvLyBkZWZlcnJlZCBzaWRlIGVmZmVjdHMgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCBieSBwcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkIGJlZm9yZSB2YWx1ZVJlc29sdmVkIGlzIHJlc29sdmVkLlxuXHRcdFx0XHRcdGZlQ29udHJvbGxlcj8uX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkQ2hhbmdlKGNoYW5nZUV2ZW50LCAhIWZpZWxkVmFsaWRpdHksIHZhbHVlUmVzb2x2ZWQsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFJlY29tbWVuZGF0aW9uc1xuXHRcdFx0XHRpZiAoY29udHJvbGxlcikge1xuXHRcdFx0XHRcdEZpZWxkUnVudGltZUhlbHBlci5mZXRjaFJlY29tbWVuZGF0aW9ucyhzb3VyY2UsIGNvbnRyb2xsZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChjaGFuZ2VFdmVudCBhcyB7IG9Tb3VyY2U/OiBGaWVsZCB9KS5vU291cmNlID0gc291cmNlO1xuXHRcdFx0XHQoY2hhbmdlRXZlbnQgYXMgeyBtUGFyYW1ldGVycz86IHsgdmFsaWQ/OiBib29sZWFuIH0gfSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGZhbHNlXG5cdFx0XHRcdH07XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlByZXJlcXVpc2l0ZXMgb24gRmllbGQgZm9yIHRoZSBTaWRlRWZmZWN0cyBhbmQgUmVjb21tZW5kYXRpb25zIGhhdmUgYmVlbiByZWplY3RlZFwiKTtcblx0XHRcdFx0Ly8gYXMgdGhlIFVJIG1pZ2h0IG5lZWQgdG8gcmVhY3Qgb24uIFdlIGNvdWxkIHByb3ZpZGUgYSBwYXJhbWV0ZXIgdG8gaW5mb3JtIGlmIHZhbGlkYXRpb25cblx0XHRcdFx0Ly8gd2FzIHN1Y2Nlc3NmdWw/XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwiY2hhbmdlXCIsIHsgdmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgaXNWYWxpZDogdmFsaWQgPz8gZmFsc2UgfSk7XG5cdFx0XHR9KTtcblxuXHRcdC8vIEZvciB0aGUgRWRpdEZsb3cgc3luY2hyb25pemF0aW9uLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIFBBVENIIHJlcXVlc3QgdG8gYmUgc2VudCwgb3RoZXJ3aXNlIHRoZXJlIGNvdWxkIGJlIGUuZy4gYWN0aW9uIGludm9rZWQgaW4gcGFyYWxsZWwgd2l0aCB0aGUgUEFUQ0ggcmVxdWVzdC5cblx0XHQvLyBUaGlzIGlzIGRvbmUgd2l0aCBhIDAtdGltZW91dCwgdG8gYWxsb3cgZm9yIHRoZSAncGF0Y2hTZW50JyBldmVudCB0byBiZSBzZW50IGJ5IHRoZSBiaW5kaW5nICh0aGVuIHRoZSBpbnRlcm5hbCBlZGl0IGZsb3cgc3luY2hyb25pemF0aW9uIGtpY2tzIGluIHdpdGggRWRpdEZsb3cuaGFuZGxlUGF0Y2hTZW50KS5cblx0XHRjb25zdCB2YWx1ZVJlc29sdmVkQW5kUGF0Y2hTZW50ID0gdmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge30pO1xuXHRcdGZlQ29udHJvbGxlcj8uZWRpdEZsb3cuc3luY1Rhc2sodmFsdWVSZXNvbHZlZEFuZFBhdGNoU2VudCk7XG5cblx0XHQvLyBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQsIGl0IG1lYW5zIHRoZSByZXF1ZXN0IHdvdWxkIGZhaWwgYW55d2F5IGFzIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3QgaW4gcmVhbGl0eVxuXHRcdC8vIFNob3VsZCB0aGUgcmVxdWVzdCBiZSBtYWRlIGluIGZ1dHVyZSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQ/XG5cdFx0aWYgKGlzVHJhbnNpZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZmVDb250cm9sbGVyPy5fc2lkZUVmZmVjdHMucHJlcGFyZURlZmVycmVkU2lkZUVmZmVjdHNGb3JGaWVsZChjaGFuZ2VFdmVudCwgISFmaWVsZFZhbGlkaXR5LCB2YWx1ZVJlc29sdmVkKTtcblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBjb250cm9sbGVyPy5jb2xsYWJvcmF0aXZlRHJhZnQuaXNDb25uZWN0ZWQoKTtcblxuXHRcdGlmIChiQ29sbGFib3JhdGlvbkVuYWJsZWQgJiYgZmllbGRWYWxpZGl0eSkge1xuXHRcdFx0Y29uc3QgYmluZGluZyA9IHRoaXMuZ2V0Q29sbGFib3JhdGlvbkJpbmRpbmcoc291cmNlKTtcblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtcblx0XHRcdFx0Li4uKChzb3VyY2UuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKSB8fCBzb3VyY2UuZ2V0QmluZGluZ0luZm8oXCJzZWxlY3RlZFwiKSk/LnBhcnRzIHx8IFtdKSxcblx0XHRcdFx0Li4uKHNvdXJjZS5nZXRCaW5kaW5nSW5mbyhcImFkZGl0aW9uYWxWYWx1ZVwiKT8ucGFydHMgfHwgW10pXG5cdFx0XHRdXG5cdFx0XHRcdC5maWx0ZXIoKHBhcnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcGFydD8ucGF0aCAhPT0gdW5kZWZpbmVkICYmIHBhcnQucGF0aC5pbmRleE9mKFwiQEBcIikgPCAwOyAvLyBSZW1vdmUgYmluZGluZyBwYXJ0cyB3aXRoIEBAIHRoYXQgbWFrZSBubyBzZW5zZSBmb3IgY29sbGFib3JhdGlvbiBtZXNzYWdlc1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQubWFwKGZ1bmN0aW9uIChwYXJ0OiB7IHBhdGg6IHN0cmluZyB9KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGAke3NvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7cGFydC5wYXRofWA7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHQvLyBGcm9tIHRoaXMgcG9pbnQsIHdlIHdpbGwgYWx3YXlzIHNlbmQgYSBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UgKFVOTE9DSyBvciBDSEFOR0UpLCBzbyB3ZSByZXRhaW5cblx0XHRcdC8vIGEgcG90ZW50aWFsIFVOTE9DSyB0aGF0IHdvdWxkIGJlIHNlbnQgaW4gaGFuZGxlRm9jdXNPdXQsIHRvIG1ha2Ugc3VyZSBpdCdzIHNlbnQgYWZ0ZXIgdGhlIENIQU5HRSBtZXNzYWdlXG5cdFx0XHRjb250cm9sbGVyPy5jb2xsYWJvcmF0aXZlRHJhZnQucmV0YWluQXN5bmNNZXNzYWdlcyhkYXRhKTtcblxuXHRcdFx0Y29uc3QgdXBkYXRlQ29sbGFib3JhdGlvbiA9ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0XHRcdC8vIFRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSB1c2VyIC0tPiB3YWl0IHVudGlsIGl0J3Mgc2VudCB0byB0aGUgc2VydmVyIGJlZm9yZSBzZW5kaW5nIGEgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzXG5cdFx0XHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRjb250cm9sbGVyPy5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0XHRcdFx0Y29udHJvbGxlcj8uY29sbGFib3JhdGl2ZURyYWZ0LnJlbGVhc2VBc3luY01lc3NhZ2VzKGRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRyb2xsZXI/LmNvbGxhYm9yYXRpdmVEcmFmdC5yZWxlYXNlQXN5bmNNZXNzYWdlcyhkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChzb3VyY2UuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSB8fCAoc291cmNlIGFzIENvbnRyb2wpLmlzQShcInNhcC51aS5tZGMuTXVsdGlWYWx1ZUZpZWxkXCIpKSB7XG5cdFx0XHRcdHZhbHVlUmVzb2x2ZWRcblx0XHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRcdFx0dXBkYXRlQ29sbGFib3JhdGlvbigpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dXBkYXRlQ29sbGFib3JhdGlvbigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRoYW5kbGVMaXZlQ2hhbmdlKF9ldmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYWxpZGF0ZUZpZWxkR3JvdXAoX2V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3Qgc291cmNlRmllbGQgPSBfZXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyhzb3VyY2VGaWVsZCksXG5cdFx0XHRjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCk7XG5cblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWVIZWxwZXIuZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKTtcblx0XHRmZUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UoX2V2ZW50KTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByb3BzPzogUHJvcGVydGllc09mPEZpZWxkQVBJLCBcImNoYW5nZVwiIHwgXCJsaXZlQ2hhbmdlXCIgfCBcImZvY3VzaW5cIj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxGaWVsZEFQST4pIHtcblx0XHRsZXQgY29tYmluZWRQcm9wcztcblxuXHRcdGlmIChwcm9wcykge1xuXHRcdFx0aWYgKHR5cGVvZiBwcm9wcyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRjb21iaW5lZFByb3BzID0geyAuLi5vdGhlcnMsIGlkOiBwcm9wcyB9IGFzIFByb3BlcnRpZXNPZjxGaWVsZEFQST47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb21iaW5lZFByb3BzID0geyAuLi5wcm9wcywgLi4ub3RoZXJzIH0gYXMgUHJvcGVydGllc09mPEZpZWxkQVBJPjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgeyBfZmxleElkLCB2aElkUHJlZml4LCBpZFByZWZpeCwgaWQsIF9hcGlJZCB9ID0gY29tYmluZWRQcm9wcztcblxuXHRcdFx0aWYgKF9mbGV4SWQgJiYgIV9mbGV4SWQuaW5jbHVkZXMoXCItY29udGVudFwiKSkge1xuXHRcdFx0XHRjb21iaW5lZFByb3BzLl9hcGlJZCA9IF9mbGV4SWQ7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuX2ZsZXhJZCA9IGAke19mbGV4SWR9LWNvbnRlbnRgO1xuXHRcdFx0XHRjb21iaW5lZFByb3BzLl92aEZsZXhJZCA9IGAke19mbGV4SWR9XyR7dmhJZFByZWZpeH1gO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyByZW1vdmUgZnJvbSBGaWVsZFN0cnVjdHVyZUhlbHBlci50c3g/IC0+IHRoZW4gd2UgbmVlZCB0byBhZGQgaXQgdG8gaW50ZXJuYWxGaWVsZC5ibG9jay50c3hcblx0XHRcdGlmICghdmhJZFByZWZpeCkge1xuXHRcdFx0XHQvL25vIHZoSWRQcmVmaXggbWVhbnMgXCJwdWJsaWMgdXNlIGNhc2VcIlxuXHRcdFx0XHRjb21iaW5lZFByb3BzLnZoSWRQcmVmaXggPSBcIkZpZWxkVmFsdWVIZWxwXCI7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuX2ZsZXhJZCA9IGlkO1xuXHRcdFx0XHRjb21iaW5lZFByb3BzLmlkUHJlZml4ID0gaWRQcmVmaXggfHwgaWQ7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuX3Nob3dWYWx1ZUhlbHBUZW1wbGF0ZSA9IHRydWU7IC8vZm9yIHB1YmxpYyB1c2UgY2FzZSwgd2UgYWx3YXlzIHNob3cgdGhlIHZhbHVlIGhlbHAgdGVtcGxhdGVcblx0XHRcdH1cblx0XHRcdGlmICghaWQpIHtcblx0XHRcdFx0aWYgKF9hcGlJZCkge1xuXHRcdFx0XHRcdGNvbWJpbmVkUHJvcHMuaWQgPSBfYXBpSWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaWRQcmVmaXgpIHtcblx0XHRcdFx0XHRjb21iaW5lZFByb3BzLmlkID0gZ2VuZXJhdGUoW2lkUHJlZml4LCBcIkZpZWxkXCJdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRzdXBlcihjb21iaW5lZFByb3BzKTtcblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IGlzQXJpYWxMYWJlbGxlZEJ5Q29tcGxpYW50ID0gZnVuY3Rpb24gKFxuXHRcdFx0Y29udHJvbDogQ29udHJvbFxuXHRcdCk6IGNvbnRyb2wgaXMgQ29udHJvbCAmIHsgYWRkQXJpYUxhYmVsbGVkQnk6IEZ1bmN0aW9uOyBnZXRBcmlhTGFiZWxsZWRCeTogRnVuY3Rpb24gfSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbC5pc0E8QnV0dG9uIHwgRmllbGRXcmFwcGVyIHwgTURDRmllbGQgfCBGaWxlV3JhcHBlcj4oW1xuXHRcdFx0XHRcInNhcC5tLkJ1dHRvblwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIsXG5cdFx0XHRcdFwic2FwLnVpLm1kYy5GaWVsZFwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsZVdyYXBwZXJcIlxuXHRcdFx0XSk7XG5cdFx0fTtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRpZiAob0NvbnRlbnQgJiYgaXNBcmlhbExhYmVsbGVkQnlDb21wbGlhbnQob0NvbnRlbnQpICYmIG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnkgPSAodGhpcyBhcyB1bmtub3duIGFzIEVuaGFuY2VXaXRoVUk1PEZpZWxkQVBJPikuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBvQ29udGVudC5nZXRBcmlhTGFiZWxsZWRCeSgpIHx8IFtdO1xuXHRcdFx0XHRpZiAoYUFyaWFMYWJlbGxlZEJ5cy5pbmRleE9mKHNJZCkgPT09IC0xKSB7XG5cdFx0XHRcdFx0b0NvbnRlbnQuYWRkQXJpYUxhYmVsbGVkQnkoc0lkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgJiYgIXRoaXMuZm9jdXNIYW5kbGVyc0F0dGFjaGVkKSB7XG5cdFx0XHQvLyBUaGUgZXZlbnQgZGVsZWdhdGUgZG9lc24ndCB3b3JrIG9uIHRoZSBGaWVsZEFQSSwgd2UgbmVlZCB0byBwdXQgaXQgb24gaXRzIGNvbnRlbnQgKEZpZWxkV3JhcHBlcilcblx0XHRcdHRoaXMuY29udGVudD8uYWRkRXZlbnREZWxlZ2F0ZShcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG9uZm9jdXNpbjogKGV2dDogRm9jdXNFdmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNJbih0aGlzLCBldnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5mb2N1c0hhbmRsZXJzQXR0YWNoZWQgPSB0cnVlOyAvLyBUbyBhdm9pZCBhdHRhY2hpbmcgZXZlbnRzIHR3aWNlXG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZpcnN0IHZpc2libGUgY29udHJvbCBpbiB0aGUgRmllbGRXcmFwcGVyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBGaWVsZFdyYXBwZXJcblx0ICogQHJldHVybnMgVGhlIGZpcnN0IHZpc2libGUgY29udHJvbFxuXHQgKi9cblx0c3RhdGljIGdldENvbnRyb2xJbkZpZWxkV3JhcHBlcihjb250cm9sOiBDb250cm9sKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWVsZFdyYXBwZXJcIikgJiYgIWNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWxlV3JhcHBlclwiKSkge1xuXHRcdFx0Y29uc3QgZmllbGRXcmFwcGVyID0gY29udHJvbCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZFdyYXBwZXI+O1xuXHRcdFx0Y29uc3QgY29udHJvbHMgPSBmaWVsZFdyYXBwZXIuZ2V0RWRpdE1vZGUoKSA9PT0gXCJEaXNwbGF5XCIgPyBbZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCldIDogZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KCk7XG5cdFx0XHRpZiAoY29udHJvbHMubGVuZ3RoID49IDEpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2xzWzBdO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmllbGRcblx0ICovXG5cdGdldFZhbHVlKCk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQ29udHJvbCA9IEZpZWxkQVBJLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcih0aGlzLmNvbnRlbnQpO1xuXHRcdGlmICghb0NvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkICYmIG9Db250cm9sPy5pc0EoXCJzYXAubS5IQm94XCIpKSB7XG5cdFx0XHRvQ29udHJvbCA9IChvQ29udHJvbCBhcyBIQm94KS5nZXRJdGVtcygpWzBdO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIENoZWNrQm94KS5nZXRTZWxlY3RlZCgpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLklucHV0QmFzZVwiKSkge1xuXHRcdFx0cmV0dXJuIChvQ29udHJvbCBhcyBJbnB1dEJhc2UpLmdldFZhbHVlKCk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBKFwic2FwLm0uTGlua1wiKSkge1xuXHRcdFx0cmV0dXJuIChvQ29udHJvbCBhcyBMaW5rKS5nZXRUZXh0KCk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBKFwic2FwLm0uTGFiZWxcIikpIHtcblx0XHRcdHJldHVybiAob0NvbnRyb2wgYXMgTGFiZWwpLmdldFRleHQoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5UZXh0XCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIFRleHQpLmdldFRleHQoZmFsc2UpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIChvQ29udHJvbCBhcyBPYmplY3RTdGF0dXMpLmdldFRleHQoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIE9iamVjdElkZW50aWZpZXIpLmdldFRpdGxlKCk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBPEZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdHJldHVybiBvQ29udHJvbC5nZXRWYWx1ZSgpOyAvLyBGaWVsZFdyYXBwZXJcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0b0NvbnRyb2w/LmlzQTxEYXRhUG9pbnQ+KFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5EYXRhUG9pbnRcIikgfHxcblx0XHRcdG9Db250cm9sPy5pc0E8RW1haWw+KFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkVtYWlsXCIpIHx8XG5cdFx0XHRvQ29udHJvbD8uaXNBPENvbnRhY3Q+KFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkNvbnRhY3RcIilcblx0XHQpIHtcblx0XHRcdC8vIHRoaXMgaXMgYSBCQnY0IHVuZGVybmVhdGgsIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgQkJWNFxuXHRcdFx0cmV0dXJuIG9Db250cm9sLmdldFZhbHVlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcImdldHRpbmcgdmFsdWUgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlXCIpO1xuXHRcdH1cblx0fVxuXG5cdGdldE1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLm1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgZmllbGQgcmVmZXJlbmNlXG5cdCAqL1xuXHRzZXRWYWx1ZSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyk6IENvbnRyb2wge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0bGV0IGNvbnRyb2wgPSBGaWVsZEFQSS5nZXRDb250cm9sSW5GaWVsZFdyYXBwZXIodGhpcy5jb250ZW50KTtcblx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBjb250cm9sPy5pc0EoXCJzYXAubS5IQm94XCIpKSB7XG5cdFx0XHQvLyBmb3IgY2hhaW5pbmcgcmVhc29ucywgbGV0wrRzIGtlZXAgaXQgbGlrZSB0aGF0XG5cdFx0XHRjb250cm9sID0gKGNvbnRyb2wgYXMgSEJveCkuZ2V0SXRlbXMoKVswXTtcblx0XHR9XG5cdFx0aWYgKGNvbnRyb2w/LmlzQTxDaGVja0JveD4oXCJzYXAubS5DaGVja0JveFwiKSkge1xuXHRcdFx0Y29udHJvbC5zZXRTZWxlY3RlZCh2YWx1ZSBhcyBib29sZWFuKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxJbnB1dEJhc2U+KFwic2FwLm0uSW5wdXRCYXNlXCIpKSB7XG5cdFx0XHRjb250cm9sLnNldFZhbHVlKHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8VGV4dD4oXCJzYXAubS5UZXh0XCIpKSB7XG5cdFx0XHRjb250cm9sLnNldFRleHQodmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxNRENGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgXCJzZXR0aW5nIHZhbHVlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZmllbGQgdHlwZVwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjdXJyZW50IGVuYWJsZW1lbnQgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgd2l0aCB0aGUgZW5hYmxlbWVudCBzdGF0ZVxuXHQgKi9cblx0Z2V0RW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRsZXQgY29udHJvbCA9IEZpZWxkQVBJLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcih0aGlzLmNvbnRlbnQpO1xuXHRcdGlmIChjb250cm9sICE9PSBudWxsICYmIGNvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiAhY29udHJvbD8uaXNBKFwic2FwLm0uVGV4dFwiKSkge1xuXHRcdFx0Ly9jaGVjayBuZWVkZWQgZm9yIGZpbGUgd3JhcHBlciB3aGljaCBkb2VzIG5vdCBoYXZlIGEgY29udGVudFxuXHRcdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgJiYgY29udHJvbC5pc0E8SEJveD4oXCJzYXAubS5IQm94XCIpKSB7XG5cdFx0XHRcdC8vIGZvciBjaGFpbmluZyByZWFzb25zLCBsZXTCtHMga2VlcCBpdCBsaWtlIHRoYXRcblx0XHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0SXRlbXMoKVswXTtcblx0XHRcdH1cblx0XHRcdGlmIChjb250cm9sLmlzQTxWQm94PihcInNhcC5tLlZCb3hcIikpIHtcblx0XHRcdFx0Ly8gZm9yIGNoYWluaW5nIHJlYXNvbnMsIGxldMK0cyBrZWVwIGl0IGxpa2UgdGhhdFxuXHRcdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRJdGVtcygpWzBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyB3ZSBuZWVkIHRvIGNhbGwgdGhlIGdldFByb3BlcnR5IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXNcblx0XHRcdC8vIG90aGVyd2lzZSB3ZSBlbmQgdXAgaW4gYSBtYXggY2FsbCBzdGFjayBzaXplXG5cdFx0XHRpZiAoY29udHJvbC5pc0E8Q2hlY2tCb3g+KFwic2FwLm0uQ2hlY2tCb3hcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0UHJvcGVydHkoXCJlbmFibGVkXCIpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxJbnB1dEJhc2U+KFwic2FwLm0uSW5wdXRCYXNlXCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldFByb3BlcnR5KFwiZW5hYmxlZFwiKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8TGluaz4oXCJzYXAubS5MaW5rXCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldFByb3BlcnR5KFwiZW5hYmxlZFwiKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8QnV0dG9uPihcInNhcC5tLkJ1dHRvblwiKSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbC5nZXRQcm9wZXJ0eShcImVuYWJsZWRcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPE9iamVjdFN0YXR1cz4oXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0UHJvcGVydHkoXCJhY3RpdmVcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPE9iamVjdElkZW50aWZpZXI+KFwic2FwLm0uT2JqZWN0SWRlbnRpZmllclwiKSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbC5nZXRQcm9wZXJ0eShcInRpdGxlQWN0aXZlXCIpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxGb3JtRWxlbWVudFdyYXBwZXI+KFwic2FwLmZlLmNvcmUuY29udHJvbHMuRm9ybUVsZW1lbnRXcmFwcGVyXCIpKSB7XG5cdFx0XHRcdC8vIEl0IGlzIGZvciBhIERyYWZ0IEluZGljYXRvclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8RGF0YVBvaW50PihcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50XCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldEVuYWJsZWQoKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8RW1haWw+KFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkVtYWlsXCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldFByb3BlcnR5KFwibGlua0VuYWJsZWRcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPENvbnRhY3Q+KFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkNvbnRhY3RcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0RW5hYmxlZCgpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxFeHBhbmRhYmxlVGV4dD4oXCJzYXAubS5FeHBhbmRhYmxlVGV4dFwiKSkge1xuXHRcdFx0XHQvLyBvdGhlcndpc2Ugc2hvdyBtb3JlIHdvdWxkIGJlIGluYWN0aXZlXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxNRENGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRcdGNvbnN0IGVkaXRNb2RlID0gY29udHJvbC5nZXRFZGl0TW9kZSgpO1xuXHRcdFx0XHQvLyBUaGUgbWRjIGZpZWxkIGRvZXMgbm90IGhhdmUgYSBkaXJlY3QgcHJvcGVydHkgXCJlbmFibGVkXCIsIHRoZXJlZm9yZSB3ZSBtYXBcblx0XHRcdFx0Ly8gdGhlIGludGVybmFsIGRpc2FibGVkIHNldHRpbmcgb2YgdGhlIGVkaXQgbW9kZSBpbiB0aGlzIGdyYWNlZnVsIHBhdHRlcm5cblx0XHRcdFx0cmV0dXJuIGVkaXRNb2RlICE9PSBGaWVsZEVkaXRNb2RlLkRpc2FibGVkO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxGaWxlV3JhcHBlcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbGVXcmFwcGVyXCIpKSB7XG5cdFx0XHRcdC8vIFRoZSBmaWxlIHdyYXBwZXIgY291bGQgY29udGFpbiBhIGxpbmsgb3IgYW4gYXZhdGFyIHdpdGggYSBkZWxldGUgYnV0dG9uLFxuXHRcdFx0XHQvLyB3ZSBtdXN0IGVuc3VyZSB0aGUgZW5hYmxlbWVudCBpbiBib3RoIGNhc2VzXG5cdFx0XHRcdHJldHVybiBjb250cm9sLmxpbmsgPyBjb250cm9sLmxpbmsuZ2V0UHJvcGVydHkoXCJlbmFibGVkXCIpIDogdHJ1ZTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIikgfHxcblx0XHRcdFx0KGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBPFRleHRMaW5rPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuVGV4dExpbmtcIilcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IGVuYWJsZW1lbnQgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKiBAcGFyYW0gZW5hYmxlZFxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGZpZWxkIHJlZmVyZW5jZVxuXHQgKi9cblx0c2V0RW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogQ29udHJvbCB7XG5cdFx0bGV0IGNvbnRyb2wgPSBGaWVsZEFQSS5nZXRDb250cm9sSW5GaWVsZFdyYXBwZXIodGhpcy5jb250ZW50KTtcblx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBjb250cm9sPy5pc0E8SEJveD4oXCJzYXAubS5IQm94XCIpKSB7XG5cdFx0XHQvLyBmb3IgY2hhaW5pbmcgcmVhc29ucywgbGV0wrRzIGtlZXAgaXQgbGlrZSB0aGF0XG5cdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRJdGVtcygpWzBdO1xuXHRcdH1cblxuXHRcdC8vIHdlIG5lZWQgdG8gY2FsbCB0aGUgc2V0UHJvcGVydHkgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlc1xuXHRcdC8vIG90aGVyd2lzZSB3ZSBlbmQgdXAgaW4gYSBtYXggY2FsbCBzdGFjayBzaXplXG5cdFx0aWYgKGNvbnRyb2w/LmlzQTxDaGVja0JveD4oXCJzYXAubS5DaGVja0JveFwiKSkge1xuXHRcdFx0cmV0dXJuIGNvbnRyb2wuc2V0UHJvcGVydHkoXCJlbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPElucHV0QmFzZT4oXCJzYXAubS5JbnB1dEJhc2VcIikpIHtcblx0XHRcdHJldHVybiBjb250cm9sLnNldFByb3BlcnR5KFwiZW5hYmxlZFwiLCBlbmFibGVkKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxMaW5rPihcInNhcC5tLkxpbmtcIikpIHtcblx0XHRcdHJldHVybiBjb250cm9sLnNldFByb3BlcnR5KFwiZW5hYmxlZFwiLCBlbmFibGVkKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxCdXR0b24+KFwic2FwLm0uQnV0dG9uXCIpKSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbC5zZXRQcm9wZXJ0eShcImVuYWJsZWRcIiwgZW5hYmxlZCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIGNvbnRyb2wuc2V0UHJvcGVydHkoXCJhY3RpdmVcIiwgZW5hYmxlZCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8T2JqZWN0SWRlbnRpZmllcj4oXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbC5zZXRQcm9wZXJ0eShcInRpdGxlQWN0aXZlXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPE1EQ0ZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdC8vIFRoZSBtZGMgZmllbGQgZG9lcyBub3QgaGF2ZSBhIGRpcmVjdCBwcm9wZXJ0eSBcImVuYWJsZWRcIiwgdGhlcmVmb3JlIHdlIG1hcFxuXHRcdFx0Ly8gdGhlIGVuYWJsZWQgcHJvcGVydHkgdG8gdGhlIHJlc3BlY3RpdmUgZGlzYWJsZWQgc2V0dGluZyBvZiB0aGUgZWRpdCBtb2RlXG5cdFx0XHQvLyB3aXRoIHRoaXMgZ3JhY2VmdWwgcGF0dGVyblxuXHRcdFx0bGV0IGVkaXRNb2RlVHlwZTtcblx0XHRcdGlmIChlbmFibGVkKSB7XG5cdFx0XHRcdGVkaXRNb2RlVHlwZSA9IEZpZWxkRWRpdE1vZGUuRWRpdGFibGU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlZGl0TW9kZVR5cGUgPSBGaWVsZEVkaXRNb2RlLkRpc2FibGVkO1xuXHRcdFx0fVxuXHRcdFx0Y29udHJvbC5zZXRFZGl0TW9kZShlZGl0TW9kZVR5cGUpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPEVtYWlsPihcInNhcC5mZS5tYWNyb3MuY29udGFjdC5FbWFpbFwiKSkge1xuXHRcdFx0Y29udHJvbC5zZXRMaW5rRW5hYmxlZChlbmFibGVkKTtcblx0XHRcdHJldHVybiBjb250cm9sO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPERhdGFQb2ludD4oXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkRhdGFQb2ludFwiKSkge1xuXHRcdFx0Y29udHJvbC5zZXRFbmFibGVkKGVuYWJsZWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBcInNldEVuYWJsZWQgaXNuJ3QgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZmllbGQgdHlwZVwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgbWVzc2FnZSB0byB0aGUgZmllbGQuXG5cdCAqIEBwYXJhbSBbcGFyYW1ldGVyc10gVGhlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIG1lc3NhZ2Vcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMudHlwZSBUeXBlIG9mIHRoZSBtZXNzYWdlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm1lc3NhZ2UgTWVzc2FnZSB0ZXh0XG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uIE1lc3NhZ2UgZGVzY3JpcHRpb25cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMucGVyc2lzdGVudCBUcnVlIGlmIHRoZSBtZXNzYWdlIGlzIHBlcnNpc3RlbnRcblx0ICogQHJldHVybnMgVGhlIGlkIG9mIHRoZSBtZXNzYWdlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFkZE1lc3NhZ2UocGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcblx0XHRjb25zdCBtc2dNYW5hZ2VyID0gdGhpcy5nZXRNZXNzYWdlTWFuYWdlcigpO1xuXHRcdGNvbnN0IG9Db250cm9sID0gRmllbGRBUEkuZ2V0Q29udHJvbEluRmllbGRXcmFwcGVyKHRoaXMuY29udGVudCk7XG5cblx0XHRsZXQgcGF0aDsgLy90YXJnZXQgZm9yIG9NZXNzYWdlXG5cdFx0aWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5DaGVja0JveFwiKSkge1xuXHRcdFx0cGF0aCA9IChvQ29udHJvbCBhcyBDaGVja0JveCkuZ2V0QmluZGluZyhcInNlbGVjdGVkXCIpPy5nZXRSZXNvbHZlZFBhdGgoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5JbnB1dEJhc2VcIikpIHtcblx0XHRcdHBhdGggPSAob0NvbnRyb2wgYXMgSW5wdXRCYXNlKS5nZXRCaW5kaW5nKFwidmFsdWVcIik/LmdldFJlc29sdmVkUGF0aCgpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQTxGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRwYXRoID0gb0NvbnRyb2wuZ2V0QmluZGluZyhcInZhbHVlXCIpIS5nZXRSZXNvbHZlZFBhdGgoKTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWVzc2FnZSA9IG5ldyBNZXNzYWdlKHtcblx0XHRcdHRhcmdldDogcGF0aCxcblx0XHRcdHR5cGU6IHBhcmFtZXRlcnMudHlwZSxcblx0XHRcdG1lc3NhZ2U6IHBhcmFtZXRlcnMubWVzc2FnZSxcblx0XHRcdHByb2Nlc3Nvcjogb0NvbnRyb2w/LmdldE1vZGVsKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogcGFyYW1ldGVycy5kZXNjcmlwdGlvbixcblx0XHRcdHBlcnNpc3RlbnQ6IHBhcmFtZXRlcnMucGVyc2lzdGVudFxuXHRcdH0pO1xuXG5cdFx0bXNnTWFuYWdlci5hZGRNZXNzYWdlcyhvTWVzc2FnZSk7XG5cdFx0cmV0dXJuIG9NZXNzYWdlLmdldElkKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgZmllbGQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZShpZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbXNnTWFuYWdlciA9IHRoaXMuZ2V0TWVzc2FnZU1hbmFnZXIoKTtcblx0XHRjb25zdCBhcnIgPSBtc2dNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCByZXN1bHQgPSBhcnIuZmluZCgoZTogTWVzc2FnZSkgPT4gZT8uZ2V0SWQ/LigpID09PSBpZCk7XG5cdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0bXNnTWFuYWdlci5yZW1vdmVNZXNzYWdlcyhyZXN1bHQpO1xuXHRcdH1cblx0fVxuXG5cdGdldE1lc3NhZ2VNYW5hZ2VyKCk6IE1lc3NhZ2luZyB7XG5cdFx0cmV0dXJuIE1lc3NhZ2luZztcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IHByZXBhcmVkUHJvcGVydGllcyA9IHRoaXMucHJlcGFyZVByb3BlcnRpZXMoKTtcblx0XHRcdGlmIChwcmVwYXJlZFByb3BlcnRpZXMpIHtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KHByZXBhcmVkUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFByZXBhcmVzIHRoZSBwcm9wZXJ0aWVzIHJlcXVpcmVkIGZvciB0aGUgRmllbGQgYmxvY2suXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIG1ldGEgcGF0aCBhbmQgY29udGV4dCBwYXRoLCBzZXRzIHVwIHRoZSBpbnB1dCBmaWVsZCBwcm9wZXJ0aWVzLFxuXHQgKiBhbmQgY2FsbHMgdGhlIHNldFVwRmllbGQgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgcHJvcGVydGllcyBmb3IgdGhlIEZpZWxkIGJsb2NrLlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IHNldHMgdGhlIG1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aCBhbmQgY29sbGFib3JhdGlvbkVuYWJsZWQgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgVGhlIHByZXBhcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBGaWVsZCBibG9jaywgb3IgdW5kZWZpbmVkIGlmIHRoZSBwcmVwcm9jZXNzb3IgY29udGV4dCBpcyBub3QgYXZhaWxhYmxlLlxuXHQgKi9cblx0cHJlcGFyZVByb3BlcnRpZXMoKTogRmllbGRCbG9ja1Byb3BlcnRpZXMgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0UGF0aCA9IHRoaXMuZ2V0TWV0YVBhdGhPYmplY3QodGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cblx0XHRpZiAoIW1ldGFDb250ZXh0UGF0aCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3QgaW5wdXRGaWVsZFByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnR5QmFnKCkgYXMgSW5wdXRGaWVsZEJsb2NrUHJvcGVydGllcztcblx0XHRpbnB1dEZpZWxkUHJvcGVydGllcy5vbkxpdmVDaGFuZ2UgPSB0aGlzLmhhc0xpc3RlbmVycyhcImxpdmVDaGFuZ2VcIikgPyBcIlNvbWV0aGluZ1wiIDogdW5kZWZpbmVkO1xuXG5cdFx0dGhpcy5wcmVwcm9jZXNzb3JDb250ZXh0ID0gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ7XG5cdFx0dGhpcy5vZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0XHR0aGlzLmNvbXB1dGVkQ29udGV4dFBhdGggPSB0aGlzLm9kYXRhTWV0YU1vZGVsPy5nZXRNZXRhQ29udGV4dCh0aGlzLmNvbnRleHRQYXRoID8/ICh0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSBhcyBzdHJpbmcpKTtcblxuXHRcdHRoaXMuY29tcHV0ZWRNZXRhUGF0aCA9IHRoaXMub2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQ7XG5cblx0XHQvLyBTb21lIGNvZGUgcmVseSBvbiB1cyBjaGVja2luZyBpZiB2aXNpYmxlIGlzIGRlZmluZWQgb3Igbm90LCB0aGUgb25seSB3YXkgdG8gZG8gaXQgaXMgdGhyb3VnaCB0aGUgaXNQcm9wZXJ0eUluaXRpYWwgbWV0aG9kXG5cdFx0aWYgKHRoaXMuaXNQcm9wZXJ0eUluaXRpYWwoXCJ2aXNpYmxlXCIpKSB7XG5cdFx0XHRpbnB1dEZpZWxkUHJvcGVydGllcy52aXNpYmxlID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnByZXByb2Nlc3NvckNvbnRleHQpIHtcblx0XHRcdC8vIElmIHRoZSBJRCBpcyBub3Qgc2V0IGJ5IHRoZSBjb25zdW1lciwgdXNlIHRoZSBJRCBwcm92aWRlZCBieSBVSTUuXG5cdFx0XHQvLyAoVGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSB2YWx1ZSBoZWxwIHJlbGllcyBvbiBhbHdheXMgaGF2aW5nIGFuIElELilcblx0XHRcdGlucHV0RmllbGRQcm9wZXJ0aWVzLmlkID0gaW5wdXRGaWVsZFByb3BlcnRpZXMuaWQgPz8gdGhpcy5nZXRJZCgpO1xuXG5cdFx0XHRjb25zdCBwcmVwYXJlZFByb3BlcnRpZXMgPSBzZXRVcEZpZWxkKFxuXHRcdFx0XHRpbnB1dEZpZWxkUHJvcGVydGllcyxcblx0XHRcdFx0e30gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRcdFx0dGhpcy5wcmVwcm9jZXNzb3JDb250ZXh0LFxuXHRcdFx0XHR0aGlzLmNvbXB1dGVkTWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29tcHV0ZWRDb250ZXh0UGF0aFxuXHRcdFx0KTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5pc0R5bmFtaWNJbnN0YW50aWF0aW9uID0gdHJ1ZTtcblx0XHRcdGlmIChwcmVwYXJlZFByb3BlcnRpZXMubWFpblByb3BlcnR5UmVsYXRpdmVQYXRoKSB0aGlzLm1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aCA9IHByZXBhcmVkUHJvcGVydGllcy5tYWluUHJvcGVydHlSZWxhdGl2ZVBhdGg7XG5cdFx0XHRpZiAocHJlcGFyZWRQcm9wZXJ0aWVzLmNvbGxhYm9yYXRpb25FbmFibGVkKSB0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID0gcHJlcGFyZWRQcm9wZXJ0aWVzLmNvbGxhYm9yYXRpb25FbmFibGVkO1xuXHRcdFx0cmV0dXJuIHByZXBhcmVkUHJvcGVydGllcztcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIEZpZWxkIGJsb2NrLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHByZXBhcmVkIHByb3BlcnRpZXMgdG8gY3JlYXRlIGFuZCByZXR1cm4gdGhlIGNvbnRlbnQgY29udHJvbCBmb3IgdGhlIEZpZWxkIGJsb2NrLlxuXHQgKiBAcGFyYW0gcHJlcGFyZWRQcm9wZXJ0aWVzIFRoZSBwcmVwYXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgRmllbGQgYmxvY2suXG5cdCAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGNvbnRlbnQgY29udHJvbC5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQocHJlcGFyZWRQcm9wZXJ0aWVzOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IENvbnRyb2wge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdFx0Ly8gV2UgaGF2ZSB0byBzZXQgKG9yIGJpbmQpIHNvbWUgcHJvcGVydGllcyB0byB0aGUgRmllbGRBUEkgc28gdGhleSBjYW4gYmUgYWNjZXNzZWQgYnkgY29uc3VtZXJzL1VJNVxuXHRcdFx0dGhpcy5zZXRPckJpbmRQcm9wZXJ0eShcInJlcXVpcmVkXCIsIHByZXBhcmVkUHJvcGVydGllcy5yZXF1aXJlZEV4cHJlc3Npb24pO1xuXHRcdFx0dGhpcy5zZXRPckJpbmRQcm9wZXJ0eShcInZpc2libGVcIiwgcHJlcGFyZWRQcm9wZXJ0aWVzLnZpc2libGUpO1xuXG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5jaGFuZ2UgPSB0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMpIGFzIHVua25vd24gYXMgRXZlbnRIYW5kbGVyO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMubGl2ZUNoYW5nZSA9IHRoaXMuaGFuZGxlTGl2ZUNoYW5nZS5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwID0gdGhpcy5vblZhbGlkYXRlRmllbGRHcm91cC5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMuaGFuZGxlVHlwZU1pc3NtYXRjaCA9IHRoaXMub25IYW5kbGVUeXBlTWlzc21hdGNoLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5oYW5kbGVGaWxlU2l6ZUV4Y2VlZCA9IHRoaXMub25IYW5kbGVGaWxlU2l6ZUV4Y2VlZC5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMuaGFuZGxlVXBsb2FkQ29tcGxldGUgPSAoZXYpOiB2b2lkID0+IHtcblx0XHRcdFx0RmllbGRSdW50aW1lSGVscGVyLmhhbmRsZVVwbG9hZENvbXBsZXRlKFxuXHRcdFx0XHRcdGV2LFxuXHRcdFx0XHRcdHsgcGF0aDogcHJlcGFyZWRQcm9wZXJ0aWVzLmZpbGVGaWxlbmFtZUV4cHJlc3Npb24gfSxcblx0XHRcdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZmlsZVJlbGF0aXZlUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdGNvbnRyb2xsZXJcblx0XHRcdFx0KTtcblx0XHRcdH07XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy51cGxvYWRTdHJlYW0gPSB0aGlzLm9uVXBsb2FkU3RyZWFtLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5yZW1vdmVTdHJlYW0gPSAoZXYpOiB2b2lkID0+IHtcblx0XHRcdFx0RmllbGRSdW50aW1lSGVscGVyLnJlbW92ZVN0cmVhbShcblx0XHRcdFx0XHRldiBhcyBGaWVsZCRDaGFuZ2VFdmVudCAmIFVJNUV2ZW50PHsgaXNWYWxpZDogYm9vbGVhbiB9Pixcblx0XHRcdFx0XHR7IHBhdGg6IHByZXBhcmVkUHJvcGVydGllcy5maWxlRmlsZW5hbWVFeHByZXNzaW9uIH0sXG5cdFx0XHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmZpbGVSZWxhdGl2ZVByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRjb250cm9sbGVyXG5cdFx0XHRcdCk7XG5cdFx0XHR9O1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMuaGFuZGxlT3BlblVwbG9hZGVyID0gdGhpcy5vbkhhbmRsZU9wZW5VcGxvYWRlci5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMuaGFuZGxlQ2xvc2VVcGxvYWRlciA9IHRoaXMub25IYW5kbGVDbG9zZVVwbG9hZGVyLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5vcGVuRXh0ZXJuYWxMaW5rID0gdGhpcy5vbk9wZW5FeHRlcm5hbExpbmsuYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLm9uRm9jdXNPdXQgPSB0aGlzLm9uRm9jdXNPdXQuYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLmxpbmtQcmVzc2VkID0gdGhpcy5vbkxpbmtQcmVzc2VkLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5kaXNwbGF5QWdncmVnYXRpb25EZXRhaWxzID0gKGV2KTogdm9pZCA9PiB7XG5cdFx0XHRcdEZpZWxkUnVudGltZS5kaXNwbGF5QWdncmVnYXRlRGV0YWlscyhldiwgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChwcmVwYXJlZFByb3BlcnRpZXMuZGF0YU1vZGVsUGF0aCkpO1xuXHRcdFx0fTtcblx0XHRcdHRoaXMuY29udGVudCA9IEZpZWxkU3RydWN0dXJlLmdldEZpZWxkU3RydWN0dXJlVGVtcGxhdGUocHJlcGFyZWRQcm9wZXJ0aWVzKSBhcyB1bmtub3duIGFzIENvbnRyb2w7XG5cdFx0XHR0aGlzLmFkZERlcGVuZGVudChGaWVsZFN0cnVjdHVyZS5nZXRQb3NzaWJsZVZhbHVlSGVscFRlbXBsYXRlKHByZXBhcmVkUHJvcGVydGllcykgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KGUubWVzc2FnZSArIFwiIGluIGNyZWF0ZUNvbnRlbnQgb2YgRmllbGRBUElcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWRcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHRvbkhhbmRsZVR5cGVNaXNzbWF0Y2goZXY6IEZpbGVVcGxvYWRlciRUeXBlTWlzc21hdGNoRXZlbnQpOiB2b2lkIHtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuaGFuZGxlVHlwZU1pc3NtYXRjaChldik7XG5cdH1cblxuXHRvbkhhbmRsZUZpbGVTaXplRXhjZWVkKGV2OiBGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCk6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci5oYW5kbGVGaWxlU2l6ZUV4Y2VlZChldik7XG5cdH1cblxuXHRvbkhhbmRsZU9wZW5VcGxvYWRlcihldjogVUk1RXZlbnQ8e30sIEZpbGVVcGxvYWRlcj4pOiB2b2lkIHtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuaGFuZGxlT3BlblVwbG9hZGVyKGV2KTtcblx0fVxuXG5cdG9uVXBsb2FkU3RyZWFtKGV2OiBGaWxlVXBsb2FkZXIkQ2hhbmdlRXZlbnQpOiB2b2lkIHtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIudXBsb2FkU3RyZWFtKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSwgZXYpO1xuXHR9XG5cblx0b25IYW5kbGVDbG9zZVVwbG9hZGVyKGV2OiBVSTVFdmVudDx7fSwgRmlsZVVwbG9hZGVyPik6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci5oYW5kbGVDbG9zZVVwbG9hZGVyKGV2KTtcblx0fVxuXG5cdG9uT3BlbkV4dGVybmFsTGluayhldjogVUk1RXZlbnQ8e30sIExpbms+KTogdm9pZCB7XG5cdFx0RmllbGRSdW50aW1lSGVscGVyLm9wZW5FeHRlcm5hbExpbmsoZXYpO1xuXHR9XG5cblx0b25MaW5rUHJlc3NlZChldjogQnV0dG9uJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIucHJlc3NMaW5rKGV2KTtcblx0fVxuXG5cdG9uRm9jdXNPdXQoZXY6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LmhhbmRsZUNvbnRlbnRGb2N1c091dChldik7XG5cdH1cblxuXHRnZXRQcm9wZXJ0eUJhZygpOiBQcm9wZXJ0aWVzT2Y8dGhpcz4ge1xuXHRcdGNvbnN0IHNldHRpbmdzOiBQcm9wZXJ0aWVzT2Y8dGhpcz4gPSB7fSBhcyBQcm9wZXJ0aWVzT2Y8dGhpcz47XG5cdFx0Y29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgYWdncmVnYXRpb25zID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbEFnZ3JlZ2F0aW9ucygpO1xuXHRcdGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIHByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRQcm9wZXJ0eVZhbHVlID0gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xuXHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBjdXJyZW50UHJvcGVydHlWYWx1ZTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0Z2V0SW5saW5lRWRpdFByb3BlcnR5TmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXM+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdGNvbnN0IHRhcmdldFByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlKFxuXHRcdFx0ZGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXM+XG5cdFx0KT8udGFyZ2V0T2JqZWN0O1xuXHRcdHJldHVybiB0YXJnZXRQcm9wZXJ0eT8uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkQVBJO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWRBLElBcUJNQSxRQUFRLElBQUFDLElBQUEsR0FOYkMsY0FBYyxDQUFDLDhCQUE4QixFQUFFO0lBQy9DQyxXQUFXLEVBQUUsQ0FDWix5Q0FBeUMsQ0FBQztFQUU1QyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUNEQyxL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
1015
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZEFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIklubGluZUVkaXQiLCJfZGVjMyIsInByb3BlcnR5IiwidHlwZSIsIl9kZWM0IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWM1IiwiX2RlYzYiLCJleHBlY3RlZEFubm90YXRpb25zIiwiZXhwZWN0ZWRUeXBlcyIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsImV2ZW50IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiYXNzb2NpYXRpb24iLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJhZ2dyZWdhdGlvbiIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsImJpbmRhYmxlIiwicmVxdWlyZWQiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJfZGVjMjciLCJfZGVjMjgiLCJfZGVjMjkiLCJfZGVjMzAiLCJfZGVjMzEiLCJfZGVjMzIiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjMzMiLCJfZGVjMzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX01hY3JvQVBJIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNvbWJpbmVkUHJvcHMiLCJpZCIsIl9mbGV4SWQiLCJ2aElkUHJlZml4IiwiaWRQcmVmaXgiLCJfYXBpSWQiLCJpbmNsdWRlcyIsIl92aEZsZXhJZCIsIl9zaG93VmFsdWVIZWxwVGVtcGxhdGUiLCJnZW5lcmF0ZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsImZvY3VzSGFuZGxlcnNBdHRhY2hlZCIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldENvbGxhYm9yYXRpb25CaW5kaW5nIiwiZmllbGQiLCJiaW5kaW5nIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nIiwiaXNBIiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJleHRyYWN0Q2hhbmdlRXZlbnREZXRhaWxzIiwiY2hhbmdlRXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJjb250cm9sbGVyIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJiaW5kaW5nQ29udGV4dCIsImlzVHJhbnNpZW50IiwidmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWQiLCJmaWVsZFZhbGlkaXR5IiwiRmllbGRSdW50aW1lSGVscGVyIiwiZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlIiwic3RhdGUiLCJjdXN0b21WYWx1ZUJpbmRpbmciLCJoYW5kbGVDaGFuZ2UiLCJuZXdWYWx1ZSIsInZhbHVlTW9kZWwiLCJnZXRNb2RlbCIsIm1vZGVsIiwic2V0UHJvcGVydHkiLCJwYXRoIiwidXBkYXRlQmluZGluZ3MiLCJmZUNvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25Db250cm9sbGVyIiwidW5kZWZpbmVkIiwidGhlbiIsIm9Tb3VyY2UiLCJtUGFyYW1ldGVycyIsImZpcmVFdmVudCIsInZhbHVlIiwiZ2V0VmFsdWUiLCJpc1ZhbGlkIiwiX3NpZGVFZmZlY3RzIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsImNhdGNoIiwiTG9nIiwiZGVidWciLCJ2YWx1ZVJlc29sdmVkQW5kUGF0Y2hTZW50Iiwic2V0VGltZW91dCIsImVkaXRGbG93Iiwic3luY1Rhc2siLCJwcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkIiwiYkNvbGxhYm9yYXRpb25FbmFibGVkIiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJpbmRleE9mIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiX2V2ZW50Iiwib25WYWxpZGF0ZUZpZWxkR3JvdXAiLCJzb3VyY2VGaWVsZCIsInZpZXciLCJnZXRDb250cm9sbGVyIiwiaGFuZGxlRmllbGRHcm91cENoYW5nZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaXNBcmlhbExhYmVsbGVkQnlDb21wbGlhbnQiLCJjb250cm9sIiwib0NvbnRlbnQiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImFBcmlhTGFiZWxsZWRCeSIsImdldEFyaWFMYWJlbGxlZEJ5Iiwic0lkIiwiYUFyaWFMYWJlbGxlZEJ5cyIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmZvY3VzaW4iLCJldnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsImdldENvbnRyb2xJbkZpZWxkV3JhcHBlciIsImZpZWxkV3JhcHBlciIsImNvbnRyb2xzIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RGlzcGxheSIsImdldENvbnRlbnRFZGl0IiwibGVuZ3RoIiwib0NvbnRyb2wiLCJnZXRJdGVtcyIsImdldFNlbGVjdGVkIiwiZ2V0VGV4dCIsImdldFRpdGxlIiwiRXJyb3IiLCJnZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJtYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJzZXRWYWx1ZSIsInNldFNlbGVjdGVkIiwic2V0VGV4dCIsImdldEVuYWJsZWQiLCJnZXRQcm9wZXJ0eSIsImVkaXRNb2RlIiwiRmllbGRFZGl0TW9kZSIsIkRpc2FibGVkIiwibGluayIsInNldEVuYWJsZWQiLCJlbmFibGVkIiwiZWRpdE1vZGVUeXBlIiwiRWRpdGFibGUiLCJzZXRFZGl0TW9kZSIsInNldExpbmtFbmFibGVkIiwiYWRkTWVzc2FnZSIsInBhcmFtZXRlcnMiLCJtc2dNYW5hZ2VyIiwiZ2V0TWVzc2FnZU1hbmFnZXIiLCJnZXRSZXNvbHZlZFBhdGgiLCJvTWVzc2FnZSIsIk1lc3NhZ2UiLCJ0YXJnZXQiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwiZGVzY3JpcHRpb24iLCJwZXJzaXN0ZW50IiwiYWRkTWVzc2FnZXMiLCJnZXRJZCIsInJlbW92ZU1lc3NhZ2UiLCJhcnIiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVzdWx0IiwiZmluZCIsImUiLCJyZW1vdmVNZXNzYWdlcyIsIk1lc3NhZ2luZyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJwcmVwYXJlZFByb3BlcnRpZXMiLCJwcmVwYXJlUHJvcGVydGllcyIsImNyZWF0ZUNvbnRlbnQiLCJtZXRhQ29udGV4dFBhdGgiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImlucHV0RmllbGRQcm9wZXJ0aWVzIiwiZ2V0UHJvcGVydHlCYWciLCJvbkxpdmVDaGFuZ2UiLCJoYXNMaXN0ZW5lcnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0Iiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJjb21wdXRlZENvbnRleHRQYXRoIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiY29tcHV0ZWRNZXRhUGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiaXNQcm9wZXJ0eUluaXRpYWwiLCJ2aXNpYmxlIiwic2V0VXBGaWVsZCIsImlzRHluYW1pY0luc3RhbnRpYXRpb24iLCJzZXRPckJpbmRQcm9wZXJ0eSIsInJlcXVpcmVkRXhwcmVzc2lvbiIsImV2ZW50SGFuZGxlcnMiLCJjaGFuZ2UiLCJiaW5kIiwibGl2ZUNoYW5nZSIsInZhbGlkYXRlRmllbGRHcm91cCIsImhhbmRsZVR5cGVNaXNzbWF0Y2giLCJvbkhhbmRsZVR5cGVNaXNzbWF0Y2giLCJoYW5kbGVGaWxlU2l6ZUV4Y2VlZCIsIm9uSGFuZGxlRmlsZVNpemVFeGNlZWQiLCJoYW5kbGVVcGxvYWRDb21wbGV0ZSIsImV2IiwiZmlsZUZpbGVuYW1lRXhwcmVzc2lvbiIsImZpbGVSZWxhdGl2ZVByb3BlcnR5UGF0aCIsInVwbG9hZFN0cmVhbSIsIm9uVXBsb2FkU3RyZWFtIiwicmVtb3ZlU3RyZWFtIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwib25IYW5kbGVPcGVuVXBsb2FkZXIiLCJoYW5kbGVDbG9zZVVwbG9hZGVyIiwib25IYW5kbGVDbG9zZVVwbG9hZGVyIiwib3BlbkV4dGVybmFsTGluayIsIm9uT3BlbkV4dGVybmFsTGluayIsIm9uRm9jdXNPdXQiLCJsaW5rUHJlc3NlZCIsIm9uTGlua1ByZXNzZWQiLCJkaXNwbGF5QWdncmVnYXRpb25EZXRhaWxzIiwiRmllbGRSdW50aW1lIiwiZGlzcGxheUFnZ3JlZ2F0ZURldGFpbHMiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZGF0YU1vZGVsUGF0aCIsIkZpZWxkU3RydWN0dXJlIiwiZ2V0RmllbGRTdHJ1Y3R1cmVUZW1wbGF0ZSIsImFkZERlcGVuZGVudCIsImdldFBvc3NpYmxlVmFsdWVIZWxwVGVtcGxhdGUiLCJNZXNzYWdlVG9hc3QiLCJzaG93IiwicHJlc3NMaW5rIiwiaGFuZGxlQ29udGVudEZvY3VzT3V0Iiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwiY3VycmVudFByb3BlcnR5VmFsdWUiLCJhZ2dyZWdhdGlvbk5hbWUiLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuQXJyYXkiLCJtYW5hZ2VkT2JqZWN0IiwicHVzaCIsImdldElubGluZUVkaXRQcm9wZXJ0eU5hbWUiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsInRhcmdldFByb3BlcnR5IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlIiwidGFyZ2V0T2JqZWN0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YVBvaW50VHlwZVR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1LCBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgbWl4aW4sIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgWE1MUHJlcHJvY2Vzc29yQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB0eXBlIEZvcm1FbGVtZW50V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRm9ybUVsZW1lbnRXcmFwcGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250YWN0IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRhY3QvQ29udGFjdFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0J1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiO1xuaW1wb3J0IHR5cGUgRmllbGRXcmFwcGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgVGV4dExpbmsgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvVGV4dExpbmtcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgeyBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIERhdGFQb2ludCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9EYXRhUG9pbnRcIjtcbmltcG9ydCAqIGFzIEZpZWxkU3RydWN0dXJlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL2ZpZWxkL0ZpZWxkU3RydWN0dXJlXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCBJbnB1dEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCB7IHNldFVwRmllbGQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9maWVsZC9GaWVsZFN0cnVjdHVyZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBDaGVja0JveCBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCB0eXBlIHsgQ2hlY2tCb3gkU2VsZWN0RXZlbnQgfSBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCB0eXBlIEV4cGFuZGFibGVUZXh0IGZyb20gXCJzYXAvbS9FeHBhbmRhYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IHR5cGUgSW5wdXRCYXNlIGZyb20gXCJzYXAvbS9JbnB1dEJhc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5wdXRCYXNlJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL0lucHV0QmFzZVwiO1xuaW1wb3J0IHR5cGUgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCB0eXBlIE9iamVjdElkZW50aWZpZXIgZnJvbSBcInNhcC9tL09iamVjdElkZW50aWZpZXJcIjtcbmltcG9ydCB0eXBlIE9iamVjdFN0YXR1cyBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgdHlwZSBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEZpZWxkLCBGaWVsZCRDaGFuZ2VFdmVudCwgZGVmYXVsdCBhcyBNRENGaWVsZCB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIFY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhQ29udGV4dEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsZVVwbG9hZGVyJENoYW5nZUV2ZW50LFxuXHRGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCxcblx0RmlsZVVwbG9hZGVyJFR5cGVNaXNzbWF0Y2hFdmVudFxufSBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi4vTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEVtYWlsIGZyb20gXCIuLi9jb250YWN0L0VtYWlsXCI7XG5pbXBvcnQgdHlwZSBGaWxlV3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCBJbmxpbmVFZGl0IGZyb20gXCIuLi9pbmxpbmVFZGl0L0lubGluZUVkaXRcIjtcbmltcG9ydCB0eXBlIEZpZWxkRm9ybWF0T3B0aW9ucyBmcm9tIFwiLi9GaWVsZEZvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgZmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBEYXRhRmllbGQgb3IgRGF0YVBvaW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgZmllbGQgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGEgcHJvcGVydHkgZnJvbSB0aGUgZW50aXR5IHR5cGUuXG4gKiBXaGVuIGNyZWF0aW5nIGEgRmllbGQgYnVpbGRpbmcgYmxvY2ssIHlvdSBtdXN0IHByb3ZpZGUgYW4gSUQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MgY29ycmVjdGx5LlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RmllbGQgaWQ9XCJNeUZpZWxkXCIgbWV0YVBhdGg9XCJNeVByb3BlcnR5XCIgLyZndDtcbiAqIDwvcHJlPlxuICogPGEgaHJlZj1cIi9zYXB1aTUtc2RrLWludGVybmFsL3Rlc3QtcmVzb3VyY2VzL3NhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL2J1aWxkaW5nQmxvY2tPdmVydmlld1wiIHRhcmdldD1cIl9ibGFua1wiID5PdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja3M8L2E+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5GaWVsZFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmZpZWxkLkZpZWxkQVBJXCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcblx0XHRcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkZvcm1FbGVtZW50V3JhcHBlclwiIC8qLCBub3Qgc3VyZSBpIHdhbnQgdG8gYWRkIHRob3NlIHlldCBcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRBUElcIiwgXCJzYXAubS5IQm94XCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIiwgXCJzYXAubS5CdXR0b25cIiovXG5cdF1cbn0pXG5AbWl4aW4oSW5saW5lRWRpdClcbmNsYXNzIEZpZWxkQVBJIGV4dGVuZHMgTWFjcm9BUEkge1xuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgZWRpdGFibGUgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgaWYgdGhlIHBhZ2UgaXMgY3VycmVudGx5IGVkaXRhYmxlLlxuXHQgKiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBjYW5ub3Qgc2V0IGEgZmllbGQgdG8gZWRpdGFibGUgaWYgaXQgaGFzIGJlZW4gZGVmaW5lZCBpbiB0aGUgYW5ub3RhdGlvbiBhcyBub3QgZWRpdGFibGUuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBkZXByZWNhdGVkXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZWRpdGFibGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSByZWFkLW9ubHkgc3RhdGUgb2YgdGhlIGZpZWxkLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYW55XCIsIGlzQmluZGluZ0luZm86IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IHJlYWRPbmx5ITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIEZpZWxkIGNvbnRyb2wuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCIsIFwiUHJvcGVydHlcIl1cblx0fSlcblx0cHVibGljIHJlYWRvbmx5IG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBXcmFwIGZpZWxkXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHB1YmxpYyByZWFkb25seSB3cmFwPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdHB1YmxpYyByZWFkb25seSBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgY29udGFpbmluZyBkZXRhaWxzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgaXMgY2hhbmdlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0Y2hhbmdlITogRXZlbnRIYW5kbGVyO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBjb250YWluaW5nIGRldGFpbHMgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGZpZWxkIGdldCB0aGUgZm9jdXMuXG5cdCAqXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRmb2N1c2luITogRXZlbnRIYW5kbGVyO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBjb250YWluaW5nIGRldGFpbHMgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBpcyBsaXZlIGNoYW5nZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2UhOiBFdmVudEhhbmRsZXI7XG5cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIHZoSWRQcmVmaXghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGFjdGlvbiB3aWxsIG5hdmlnYXRlIGFmdGVyIGV4ZWN1dGlvblxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgbmF2aWdhdGVBZnRlckFjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIEEgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpZWxkLkZpZWxkRm9ybWF0T3B0aW9uc1wiIH0pXG5cdHB1YmxpYyByZWFkb25seSBmb3JtYXRPcHRpb25zPzogRmllbGRGb3JtYXRPcHRpb25zO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXHRwdWJsaWMgX2ZsZXhJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1kYy5lbnVtcy5GaWVsZEVkaXRNb2RlXCJcblx0fSlcblx0cHVibGljIHJlYWRvbmx5IGVkaXRNb2RlPzogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBPcHRpb24gdG8gYWRkIHNlbWFudGljIG9iamVjdHMgZm9yIGEgZmllbGQuXG5cdCAqIFRoaXMgcGFyYW1ldGVyIG92ZXJ3cml0ZXMgdGhlIHNlbWFudGljIG9iamVjdHMgZGVmaW5lZCB0aHJvdWdoIGFubm90YXRpb25zLlxuXHQgKiBWYWxpZCBvcHRpb25zIGFyZSBlaXRoZXIgYSBzaW5nbGUgc2VtYW50aWMgb2JqZWN0LCBhIHN0cmluZ2lmaWVkIGFycmF5IG9mIHNlbWFudGljIG9iamVjdHMsXG5cdCAqIGEgZm9ybWF0dGVyIG9yIGEgc2luZ2xlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXR1cm5pbmcgZWl0aGVyIGEgc2luZ2xlIHNlbWFudGljIG9iamVjdCBvciBhbiBhcnJheSBvZiBzZW1hbnRpYyBvYmplY3RzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyByZWFkb25seSBzZW1hbnRpY09iamVjdCE6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhpcyBpcyB1c2VkIHRvIG9wdGlvbmFsbHkgcHJvdmlkZSBhbiBleHRlcm5hbCB2YWx1ZSB0aGF0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgbW9kZWwgdGhhbiB0aGUgb0RhdGEgbW9kZWwuXG5cdCAqIEl0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBhIGZpZWxkIHdpdGggdmFsdWUgaGVscCwgYW5kIHdpdGhvdXQgc3VwcG9ydCBmb3IgY29tcGxleCB2YWx1ZSBoZWxwIChjdXJyZW5jeSAvIHVuaXQpLlxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRiaW5kYWJsZTogdHJ1ZSxcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiBmYWxzZVxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBvcHRpb25hbGx5IHByb3ZpZGUgYW4gZXh0ZXJuYWwgZGVzY3JpcHRpb24gdGhhdCBjb21lcyBmcm9tIGEgZGlmZmVyZW50IG1vZGVsIHRoYW4gdGhlIG9EYXRhIG1vZGVsLlxuXHQgKiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHZhbHVlIHByb3BlcnR5LlxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRiaW5kYWJsZTogdHJ1ZSxcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiBmYWxzZVxuXHR9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInNhcC51aS5jb3JlLlRleHRBbGlnblwiXG5cdH0pXG5cdHB1YmxpYyByZWFkb25seSB0ZXh0QWxpZ24/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cHVibGljIHJlYWRvbmx5IHNob3dFcnJvck9iamVjdFN0YXR1cz86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwdWJsaWMgY29sbGFib3JhdGlvbkVuYWJsZWQ/OiBib29sZWFuOyAvLyBOZWVkIHRvIGJlIGNvbXB1dGVkIG9uIGRlbWFuZFxuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIG1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aD86IHN0cmluZzsgLy8gTmVlZCB0byBiZSBjb21wdXRlZCBvbiBkZW1hbmRcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFueVwiLCBpc0JpbmRpbmdJbmZvOiB0cnVlIH0pXG5cdGN1c3RvbVZhbHVlQmluZGluZz86IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIgfCBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlubGluZUVkaXRFbmFibGVkPyA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGhhc0lubGluZUVkaXQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgZm9jdXNIYW5kbGVyc0F0dGFjaGVkID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBjb21wdXRlZE1ldGFQYXRoPzogQ29udGV4dDtcblxuXHRwcml2YXRlIGNvbXB1dGVkQ29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdHByaXZhdGUgb2RhdGFNZXRhTW9kZWwhOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdF92aEZsZXhJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdF9hcGlJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRfc2hvd1ZhbHVlSGVscFRlbXBsYXRlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBwcmVwcm9jZXNzb3JDb250ZXh0ITogWE1MUHJlcHJvY2Vzc29yQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogR2V0cyB0aGUgYmluZGluZyB1c2VkIGZvciBjb2xsYWJvcmF0aW9uIG5vdGlmaWNhdGlvbnMuXG5cdCAqIEBwYXJhbSBmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZ1xuXHQgKi9cblx0Z2V0Q29sbGFib3JhdGlvbkJpbmRpbmcoZmllbGQ6IENvbnRyb2wpOiBPRGF0YUxpc3RCaW5kaW5nIHwgT0RhdGFDb250ZXh0QmluZGluZyB7XG5cdFx0bGV0IGJpbmRpbmcgPSAoZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBWNENvbnRleHQpLmdldEJpbmRpbmcoKTtcblxuXHRcdGlmICghYmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpZWxkKTtcblx0XHRcdGJpbmRpbmcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLmdldEJpbmRpbmcoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYmluZGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHRyYWN0cyBkYXRhIGZyb20gYSBjaGFuZ2UgZXZlbnQgZm9yIHVzYWdlIGluIHRoZSBoYW5kbGVDaGFuZ2UgbWV0aG9kLlxuXHQgKiBAcGFyYW0gY2hhbmdlRXZlbnQgVGhlIGNoYW5nZSBldmVudCBvYmplY3QuXG5cdCAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgZGV0YWlsc1xuXHQgKi9cblx0cHJpdmF0ZSBleHRyYWN0Q2hhbmdlRXZlbnREZXRhaWxzKGNoYW5nZUV2ZW50OiBGaWVsZCRDaGFuZ2VFdmVudCAmIFVJNUV2ZW50PHsgaXNWYWxpZDogYm9vbGVhbiB9Pik6IHtcblx0XHRzb3VyY2U6IEZpZWxkO1xuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyO1xuXHRcdGlzVHJhbnNpZW50OiBib29sZWFuO1xuXHRcdHZhbHVlUmVzb2x2ZWQ6IFByb21pc2U8dm9pZD47XG5cdFx0dmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdFx0ZmllbGRWYWxpZGl0eTogYm9vbGVhbjtcblx0XHRjdXN0b21WYWx1ZUJpbmRpbmc6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIgfCBQcm9wZXJ0eUJpbmRpbmdJbmZvIHwgdW5kZWZpbmVkO1xuXHR9IHtcblx0XHRjb25zdCBzb3VyY2UgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdC8vIElmIHRoZSBmaWVsZCBpcyBib3VuZCB0byBhIEpTT04gbW9kZWwsIHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIHJldHVybnMgdW5kZWZpbmVkLlxuXHRcdC8vIEluIHN1Y2ggY2FzZXMsIHdlIGNhbm5vdCBjYWxsIGlzVHJhbnNpZW50IG9uIGl0LiBEZWZhdWx0aW5nIHRvIGZhbHNlLlxuXHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gc291cmNlICYmIHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGlzVHJhbnNpZW50ID0gYmluZGluZ0NvbnRleHQgPyAoYmluZGluZ0NvbnRleHQgYXMgdW5rbm93biBhcyB7IGlzVHJhbnNpZW50OiBGdW5jdGlvbiB9KS5pc1RyYW5zaWVudCgpIDogZmFsc2U7XG5cdFx0Y29uc3QgdmFsdWVSZXNvbHZlZCA9IGNoYW5nZUV2ZW50LmdldFBhcmFtZXRlcihcInByb21pc2VcIikgfHwgUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0Y29uc3QgdmFsaWQgPSBjaGFuZ2VFdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKTtcblx0XHRjb25zdCBmaWVsZFZhbGlkaXR5ID0gRmllbGRSdW50aW1lSGVscGVyLmdldEZpZWxkU3RhdGVPbkNoYW5nZShjaGFuZ2VFdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXTtcblx0XHRjb25zdCBjdXN0b21WYWx1ZUJpbmRpbmcgPSB0aGlzPy5jdXN0b21WYWx1ZUJpbmRpbmc7XG5cblx0XHRyZXR1cm4geyBzb3VyY2UsIGNvbnRyb2xsZXIsIGlzVHJhbnNpZW50LCB2YWx1ZVJlc29sdmVkLCB2YWxpZCwgZmllbGRWYWxpZGl0eSwgY3VzdG9tVmFsdWVCaW5kaW5nIH07XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0aGFuZGxlQ2hhbmdlKGNoYW5nZUV2ZW50OiBGaWVsZCRDaGFuZ2VFdmVudCAmIFVJNUV2ZW50PHsgaXNWYWxpZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IHsgc291cmNlLCBjb250cm9sbGVyLCBpc1RyYW5zaWVudCwgdmFsdWVSZXNvbHZlZCwgdmFsaWQsIGZpZWxkVmFsaWRpdHksIGN1c3RvbVZhbHVlQmluZGluZyB9ID1cblx0XHRcdHRoaXMuZXh0cmFjdENoYW5nZUV2ZW50RGV0YWlscyhjaGFuZ2VFdmVudCk7XG5cblx0XHRpZiAoY3VzdG9tVmFsdWVCaW5kaW5nKSB7XG5cdFx0XHRsZXQgbmV3VmFsdWU7XG5cdFx0XHRjb25zdCB2YWx1ZU1vZGVsID0gc291cmNlPy5nZXRNb2RlbChjdXN0b21WYWx1ZUJpbmRpbmcubW9kZWwpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChzb3VyY2UuaXNBKFwic2FwLm0uQ2hlY2tCb3hcIikpIHtcblx0XHRcdFx0bmV3VmFsdWUgPSAoY2hhbmdlRXZlbnQgYXMgQ2hlY2tCb3gkU2VsZWN0RXZlbnQpLmdldFBhcmFtZXRlcihcInNlbGVjdGVkXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3VmFsdWUgPSAoY2hhbmdlRXZlbnQgYXMgSW5wdXRCYXNlJENoYW5nZUV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKTtcblx0XHRcdH1cblx0XHRcdHZhbHVlTW9kZWw/LnNldFByb3BlcnR5KGN1c3RvbVZhbHVlQmluZGluZy5wYXRoLCBuZXdWYWx1ZSk7XG5cdFx0XHR2YWx1ZU1vZGVsPy51cGRhdGVCaW5kaW5ncyh0cnVlKTtcblx0XHR9XG5cblx0XHQvLyBVc2UgdGhlIEZFIENvbnRyb2xsZXIgaW5zdGVhZCBvZiB0aGUgZXh0ZW5zaW9uQVBJIHRvIGFjY2VzcyBpbnRlcm5hbCBGRSBjb250cm9sbGVyc1xuXHRcdGNvbnN0IGZlQ29udHJvbGxlciA9IGNvbnRyb2xsZXIgPyBGaWVsZFJ1bnRpbWVIZWxwZXIuZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIEN1cnJlbnRseSB3ZSBoYXZlIHVuZGVmaW5lZCBhbmQgdHJ1ZS4uLiBhbmQgb3VyIGNyZWF0aW9uIHJvdyBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhpcy5cblx0XHQvLyBJIHdvdWxkIG1vdmUgdGhpcyBsb2dpYyB0byB0aGlzIHBsYWNlIGFzIGl0J3MgaGFyZCB0byB1bmRlcnN0YW5kIGZvciBmaWVsZCBjb25zdW1lclxuXHRcdHZhbHVlUmVzb2x2ZWRcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0Ly8gVGhlIGV2ZW50IGlzIGdvbmUuIEZvciBub3cgd2UnbGwganVzdCByZWNyZWF0ZSBpdCBhZ2FpblxuXHRcdFx0XHQoY2hhbmdlRXZlbnQgYXMgeyBvU291cmNlPzogRmllbGQgfSkub1NvdXJjZSA9IHNvdXJjZTtcblx0XHRcdFx0KGNoYW5nZUV2ZW50IGFzIHsgbVBhcmFtZXRlcnM/OiB7IHZhbGlkPzogYm9vbGVhbiB9IH0pLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiB2YWxpZCA/PyB0cnVlXG5cdFx0XHRcdH07XG5cdFx0XHRcdHRoaXM/LmZpcmVFdmVudChcImNoYW5nZVwiLCB7IHZhbHVlOiB0aGlzLmdldFZhbHVlKCksIGlzVmFsaWQ6IHZhbGlkID8/IHRydWUgfSk7XG5cdFx0XHRcdGlmICghaXNUcmFuc2llbnQpIHtcblx0XHRcdFx0XHQvLyB0cmlnZ2VyIHNpZGUgZWZmZWN0cyB3aXRob3V0IHJlZ2lzdGVyaW5nIGRlZmVycmVkIHNpZGUgZWZmZWN0c1xuXHRcdFx0XHRcdC8vIGRlZmVycmVkIHNpZGUgZWZmZWN0cyBhcmUgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IHByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQgYmVmb3JlIHZhbHVlUmVzb2x2ZWQgaXMgcmVzb2x2ZWQuXG5cdFx0XHRcdFx0ZmVDb250cm9sbGVyPy5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2UoY2hhbmdlRXZlbnQsICEhZmllbGRWYWxpZGl0eSwgdmFsdWVSZXNvbHZlZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVjb21tZW5kYXRpb25zXG5cdFx0XHRcdGlmIChjb250cm9sbGVyKSB7XG5cdFx0XHRcdFx0RmllbGRSdW50aW1lSGVscGVyLmZldGNoUmVjb21tZW5kYXRpb25zKHNvdXJjZSwgY29udHJvbGxlcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KGNoYW5nZUV2ZW50IGFzIHsgb1NvdXJjZT86IEZpZWxkIH0pLm9Tb3VyY2UgPSBzb3VyY2U7XG5cdFx0XHRcdChjaGFuZ2VFdmVudCBhcyB7IG1QYXJhbWV0ZXJzPzogeyB2YWxpZD86IGJvb2xlYW4gfSB9KS5tUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHR2YWxpZDogZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdFx0TG9nLmRlYnVnKFwiUHJlcmVxdWlzaXRlcyBvbiBGaWVsZCBmb3IgdGhlIFNpZGVFZmZlY3RzIGFuZCBSZWNvbW1lbmRhdGlvbnMgaGF2ZSBiZWVuIHJlamVjdGVkXCIpO1xuXHRcdFx0XHQvLyBhcyB0aGUgVUkgbWlnaHQgbmVlZCB0byByZWFjdCBvbi4gV2UgY291bGQgcHJvdmlkZSBhIHBhcmFtZXRlciB0byBpbmZvcm0gaWYgdmFsaWRhdGlvblxuXHRcdFx0XHQvLyB3YXMgc3VjY2Vzc2Z1bD9cblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJjaGFuZ2VcIiwgeyB2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBpc1ZhbGlkOiB2YWxpZCA/PyBmYWxzZSB9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gRm9yIHRoZSBFZGl0RmxvdyBzeW5jaHJvbml6YXRpb24sIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdCB0byBiZSBzZW50LCBvdGhlcndpc2UgdGhlcmUgY291bGQgYmUgZS5nLiBhY3Rpb24gaW52b2tlZCBpbiBwYXJhbGxlbCB3aXRoIHRoZSBQQVRDSCByZXF1ZXN0LlxuXHRcdC8vIFRoaXMgaXMgZG9uZSB3aXRoIGEgMC10aW1lb3V0LCB0byBhbGxvdyBmb3IgdGhlICdwYXRjaFNlbnQnIGV2ZW50IHRvIGJlIHNlbnQgYnkgdGhlIGJpbmRpbmcgKHRoZW4gdGhlIGludGVybmFsIGVkaXQgZmxvdyBzeW5jaHJvbml6YXRpb24ga2lja3MgaW4gd2l0aCBFZGl0Rmxvdy5oYW5kbGVQYXRjaFNlbnQpLlxuXHRcdGNvbnN0IHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQgPSB2YWx1ZVJlc29sdmVkXG5cdFx0XHQudGhlbihhc3luYyAoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRcdHNldFRpbWVvdXQocmVzb2x2ZSwgMCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7fSk7XG5cdFx0ZmVDb250cm9sbGVyPy5lZGl0Rmxvdy5zeW5jVGFzayh2YWx1ZVJlc29sdmVkQW5kUGF0Y2hTZW50KTtcblxuXHRcdC8vIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zaWVudCwgaXQgbWVhbnMgdGhlIHJlcXVlc3Qgd291bGQgZmFpbCBhbnl3YXkgYXMgdGhlIHJlY29yZCBkb2VzIG5vdCBleGlzdCBpbiByZWFsaXR5XG5cdFx0Ly8gU2hvdWxkIHRoZSByZXF1ZXN0IGJlIG1hZGUgaW4gZnV0dXJlIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zaWVudD9cblx0XHRpZiAoaXNUcmFuc2llbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRmZUNvbnRyb2xsZXI/Ll9zaWRlRWZmZWN0cy5wcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkKGNoYW5nZUV2ZW50LCAhIWZpZWxkVmFsaWRpdHksIHZhbHVlUmVzb2x2ZWQpO1xuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGNvbnRyb2xsZXI/LmNvbGxhYm9yYXRpdmVEcmFmdC5pc0Nvbm5lY3RlZCgpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBmaWVsZFZhbGlkaXR5KSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nID0gdGhpcy5nZXRDb2xsYWJvcmF0aW9uQmluZGluZyhzb3VyY2UpO1xuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4oKHNvdXJjZS5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpIHx8IHNvdXJjZS5nZXRCaW5kaW5nSW5mbyhcInNlbGVjdGVkXCIpKT8ucGFydHMgfHwgW10pLFxuXHRcdFx0XHQuLi4oc291cmNlLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF1cblx0XHRcdFx0LmZpbHRlcigocGFydCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJ0Py5wYXRoICE9PSB1bmRlZmluZWQgJiYgcGFydC5wYXRoLmluZGV4T2YoXCJAQFwiKSA8IDA7IC8vIFJlbW92ZSBiaW5kaW5nIHBhcnRzIHdpdGggQEAgdGhhdCBtYWtlIG5vIHNlbnNlIGZvciBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5tYXAoZnVuY3Rpb24gKHBhcnQ6IHsgcGF0aDogc3RyaW5nIH0pIHtcblx0XHRcdFx0XHRyZXR1cm4gYCR7c291cmNlLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtwYXJ0LnBhdGh9YDtcblx0XHRcdFx0fSk7XG5cblx0XHRcdC8vIEZyb20gdGhpcyBwb2ludCwgd2Ugd2lsbCBhbHdheXMgc2VuZCBhIGNvbGxhYm9yYXRpb24gbWVzc2FnZSAoVU5MT0NLIG9yIENIQU5HRSksIHNvIHdlIHJldGFpblxuXHRcdFx0Ly8gYSBwb3RlbnRpYWwgVU5MT0NLIHRoYXQgd291bGQgYmUgc2VudCBpbiBoYW5kbGVGb2N1c091dCwgdG8gbWFrZSBzdXJlIGl0J3Mgc2VudCBhZnRlciB0aGUgQ0hBTkdFIG1lc3NhZ2Vcblx0XHRcdGNvbnRyb2xsZXI/LmNvbGxhYm9yYXRpdmVEcmFmdC5yZXRhaW5Bc3luY01lc3NhZ2VzKGRhdGEpO1xuXG5cdFx0XHRjb25zdCB1cGRhdGVDb2xsYWJvcmF0aW9uID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoYmluZGluZy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG5cdFx0XHRcdFx0Ly8gVGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhlIHVzZXIgLS0+IHdhaXQgdW50aWwgaXQncyBzZW50IHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIHNlbmRpbmcgYSBub3RpZmljYXRpb24gdG8gb3RoZXIgdXNlcnNcblx0XHRcdFx0XHRiaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xsZXI/LmNvbGxhYm9yYXRpdmVEcmFmdC5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5DaGFuZ2UsIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHRcdFx0XHRjb250cm9sbGVyPy5jb2xsYWJvcmF0aXZlRHJhZnQucmVsZWFzZUFzeW5jTWVzc2FnZXMoZGF0YSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udHJvbGxlcj8uY29sbGFib3JhdGl2ZURyYWZ0LnJlbGVhc2VBc3luY01lc3NhZ2VzKGRhdGEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0aWYgKHNvdXJjZS5pc0EoXCJzYXAudWkubWRjLkZpZWxkXCIpIHx8IChzb3VyY2UgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5NdWx0aVZhbHVlRmllbGRcIikpIHtcblx0XHRcdFx0dmFsdWVSZXNvbHZlZFxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGhhbmRsZUxpdmVDaGFuZ2UoX2V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhbGlkYXRlRmllbGRHcm91cChfZXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBzb3VyY2VGaWVsZCA9IF9ldmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHNvdXJjZUZpZWxkKSxcblx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKTtcblxuXHRcdGNvbnN0IGZlQ29udHJvbGxlciA9IEZpZWxkUnVudGltZUhlbHBlci5nZXRFeHRlbnNpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpO1xuXHRcdGZlQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRHcm91cENoYW5nZShfZXZlbnQpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IocHJvcHM/OiBQcm9wZXJ0aWVzT2Y8RmllbGRBUEksIFwiY2hhbmdlXCIgfCBcImxpdmVDaGFuZ2VcIiB8IFwiZm9jdXNpblwiPiwgb3RoZXJzPzogUHJvcGVydGllc09mPEZpZWxkQVBJPikge1xuXHRcdGxldCBjb21iaW5lZFByb3BzO1xuXG5cdFx0aWYgKHByb3BzKSB7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMgPSB7IC4uLm90aGVycywgaWQ6IHByb3BzIH0gYXMgUHJvcGVydGllc09mPEZpZWxkQVBJPjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMgPSB7IC4uLnByb3BzLCAuLi5vdGhlcnMgfSBhcyBQcm9wZXJ0aWVzT2Y8RmllbGRBUEk+O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB7IF9mbGV4SWQsIHZoSWRQcmVmaXgsIGlkUHJlZml4LCBpZCwgX2FwaUlkIH0gPSBjb21iaW5lZFByb3BzO1xuXG5cdFx0XHRpZiAoX2ZsZXhJZCAmJiAhX2ZsZXhJZC5pbmNsdWRlcyhcIi1jb250ZW50XCIpKSB7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuX2FwaUlkID0gX2ZsZXhJZDtcblx0XHRcdFx0Y29tYmluZWRQcm9wcy5fZmxleElkID0gYCR7X2ZsZXhJZH0tY29udGVudGA7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuX3ZoRmxleElkID0gYCR7X2ZsZXhJZH1fJHt2aElkUHJlZml4fWA7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHJlbW92ZSBmcm9tIEZpZWxkU3RydWN0dXJlSGVscGVyLnRzeD8gLT4gdGhlbiB3ZSBuZWVkIHRvIGFkZCBpdCB0byBpbnRlcm5hbEZpZWxkLmJsb2NrLnRzeFxuXHRcdFx0aWYgKCF2aElkUHJlZml4KSB7XG5cdFx0XHRcdC8vbm8gdmhJZFByZWZpeCBtZWFucyBcInB1YmxpYyB1c2UgY2FzZVwiXG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMudmhJZFByZWZpeCA9IFwiRmllbGRWYWx1ZUhlbHBcIjtcblx0XHRcdFx0Y29tYmluZWRQcm9wcy5fZmxleElkID0gaWQ7XG5cdFx0XHRcdGNvbWJpbmVkUHJvcHMuaWRQcmVmaXggPSBpZFByZWZpeCB8fCBpZDtcblx0XHRcdFx0Y29tYmluZWRQcm9wcy5fc2hvd1ZhbHVlSGVscFRlbXBsYXRlID0gdHJ1ZTsgLy9mb3IgcHVibGljIHVzZSBjYXNlLCB3ZSBhbHdheXMgc2hvdyB0aGUgdmFsdWUgaGVscCB0ZW1wbGF0ZVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFpZCkge1xuXHRcdFx0XHRpZiAoX2FwaUlkKSB7XG5cdFx0XHRcdFx0Y29tYmluZWRQcm9wcy5pZCA9IF9hcGlJZDtcblx0XHRcdFx0fSBlbHNlIGlmIChpZFByZWZpeCkge1xuXHRcdFx0XHRcdGNvbWJpbmVkUHJvcHMuaWQgPSBnZW5lcmF0ZShbaWRQcmVmaXgsIFwiRmllbGRcIl0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHN1cGVyKGNvbWJpbmVkUHJvcHMpO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgaXNBcmlhbExhYmVsbGVkQnlDb21wbGlhbnQgPSBmdW5jdGlvbiAoXG5cdFx0XHRjb250cm9sOiBDb250cm9sXG5cdFx0KTogY29udHJvbCBpcyBDb250cm9sICYgeyBhZGRBcmlhTGFiZWxsZWRCeTogRnVuY3Rpb247IGdldEFyaWFMYWJlbGxlZEJ5OiBGdW5jdGlvbiB9IHtcblx0XHRcdHJldHVybiBjb250cm9sLmlzQTxCdXR0b24gfCBGaWVsZFdyYXBwZXIgfCBNRENGaWVsZCB8IEZpbGVXcmFwcGVyPihbXG5cdFx0XHRcdFwic2FwLm0uQnV0dG9uXCIsXG5cdFx0XHRcdFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWVsZFdyYXBwZXJcIixcblx0XHRcdFx0XCJzYXAudWkubWRjLkZpZWxkXCIsXG5cdFx0XHRcdFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWxlV3JhcHBlclwiXG5cdFx0XHRdKTtcblx0XHR9O1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGlmIChvQ29udGVudCAmJiBpc0FyaWFsTGFiZWxsZWRCeUNvbXBsaWFudChvQ29udGVudCkgJiYgb0NvbnRlbnQuYWRkQXJpYUxhYmVsbGVkQnkpIHtcblx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeSA9ICh0aGlzIGFzIHVua25vd24gYXMgRW5oYW5jZVdpdGhVSTU8RmllbGRBUEk+KS5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IHNJZCBvZiBhQXJpYUxhYmVsbGVkQnkpIHtcblx0XHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5cyA9IG9Db250ZW50LmdldEFyaWFMYWJlbGxlZEJ5KCkgfHwgW107XG5cdFx0XHRcdGlmIChhQXJpYUxhYmVsbGVkQnlzLmluZGV4T2Yoc0lkKSA9PT0gLTEpIHtcblx0XHRcdFx0XHRvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeShzSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiAhdGhpcy5mb2N1c0hhbmRsZXJzQXR0YWNoZWQpIHtcblx0XHRcdC8vIFRoZSBldmVudCBkZWxlZ2F0ZSBkb2Vzbid0IHdvcmsgb24gdGhlIEZpZWxkQVBJLCB3ZSBuZWVkIHRvIHB1dCBpdCBvbiBpdHMgY29udGVudCAoRmllbGRXcmFwcGVyKVxuXHRcdFx0dGhpcy5jb250ZW50Py5hZGRFdmVudERlbGVnYXRlKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0b25mb2N1c2luOiAoZXZ0OiBGb2N1c0V2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuY29sbGFib3JhdGl2ZURyYWZ0LmhhbmRsZUNvbnRlbnRGb2N1c0luKHRoaXMsIGV2dCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmZvY3VzSGFuZGxlcnNBdHRhY2hlZCA9IHRydWU7IC8vIFRvIGF2b2lkIGF0dGFjaGluZyBldmVudHMgdHdpY2Vcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZmlyc3QgdmlzaWJsZSBjb250cm9sIGluIHRoZSBGaWVsZFdyYXBwZXIuXG5cdCAqIEBwYXJhbSBjb250cm9sIEZpZWxkV3JhcHBlclxuXHQgKiBAcmV0dXJucyBUaGUgZmlyc3QgdmlzaWJsZSBjb250cm9sXG5cdCAqL1xuXHRzdGF0aWMgZ2V0Q29udHJvbEluRmllbGRXcmFwcGVyKGNvbnRyb2w6IENvbnRyb2wpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpZWxkV3JhcHBlclwiKSAmJiAhY29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbGVXcmFwcGVyXCIpKSB7XG5cdFx0XHRjb25zdCBmaWVsZFdyYXBwZXIgPSBjb250cm9sIGFzIEVuaGFuY2VXaXRoVUk1PEZpZWxkV3JhcHBlcj47XG5cdFx0XHRjb25zdCBjb250cm9scyA9IGZpZWxkV3JhcHBlci5nZXRFZGl0TW9kZSgpID09PSBcIkRpc3BsYXlcIiA/IFtmaWVsZFdyYXBwZXIuZ2V0Q29udGVudERpc3BsYXkoKV0gOiBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudEVkaXQoKTtcblx0XHRcdGlmIChjb250cm9scy5sZW5ndGggPj0gMSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbHNbMF07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjb250cm9sO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZpZWxkLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZFxuXHQgKi9cblx0Z2V0VmFsdWUoKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9Db250cm9sID0gRmllbGRBUEkuZ2V0Q29udHJvbEluRmllbGRXcmFwcGVyKHRoaXMuY29udGVudCk7XG5cdFx0aWYgKCFvQ29udHJvbCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgJiYgb0NvbnRyb2w/LmlzQShcInNhcC5tLkhCb3hcIikpIHtcblx0XHRcdG9Db250cm9sID0gKG9Db250cm9sIGFzIEhCb3gpLmdldEl0ZW1zKClbMF07XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbD8uaXNBKFwic2FwLm0uQ2hlY2tCb3hcIikpIHtcblx0XHRcdHJldHVybiAob0NvbnRyb2wgYXMgQ2hlY2tCb3gpLmdldFNlbGVjdGVkKCk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBKFwic2FwLm0uSW5wdXRCYXNlXCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIElucHV0QmFzZSkuZ2V0VmFsdWUoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5MaW5rXCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIExpbmspLmdldFRleHQoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0EoXCJzYXAubS5MYWJlbFwiKSkge1xuXHRcdFx0cmV0dXJuIChvQ29udHJvbCBhcyBMYWJlbCkuZ2V0VGV4dCgpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLlRleHRcIikpIHtcblx0XHRcdHJldHVybiAob0NvbnRyb2wgYXMgVGV4dCkuZ2V0VGV4dChmYWxzZSk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBKFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRyZXR1cm4gKG9Db250cm9sIGFzIE9iamVjdFN0YXR1cykuZ2V0VGV4dCgpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIikpIHtcblx0XHRcdHJldHVybiAob0NvbnRyb2wgYXMgT2JqZWN0SWRlbnRpZmllcikuZ2V0VGl0bGUoKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sPy5pc0E8RmllbGQ+KFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0cmV0dXJuIG9Db250cm9sLmdldFZhbHVlKCk7IC8vIEZpZWxkV3JhcHBlclxuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRvQ29udHJvbD8uaXNBPERhdGFQb2ludD4oXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkRhdGFQb2ludFwiKSB8fFxuXHRcdFx0b0NvbnRyb2w/LmlzQTxFbWFpbD4oXCJzYXAuZmUubWFjcm9zLmNvbnRhY3QuRW1haWxcIikgfHxcblx0XHRcdG9Db250cm9sPy5pc0E8Q29udGFjdD4oXCJzYXAuZmUubWFjcm9zLmNvbnRhY3QuQ29udGFjdFwiKVxuXHRcdCkge1xuXHRcdFx0Ly8gdGhpcyBpcyBhIEJCdjQgdW5kZXJuZWF0aCwgY2FsbCB0aGUgbWV0aG9kIG9uIHRoZSBCQlY0XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2wuZ2V0VmFsdWUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiZ2V0dGluZyB2YWx1ZSBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGlzIGZpZWxkIHR5cGVcIik7XG5cdFx0fVxuXHR9XG5cblx0Z2V0TWFpblByb3BlcnR5UmVsYXRpdmVQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMubWFpblByb3BlcnR5UmVsYXRpdmVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZpZWxkLlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBmaWVsZCByZWZlcmVuY2Vcblx0ICovXG5cdHNldFZhbHVlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKTogQ29udHJvbCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRsZXQgY29udHJvbCA9IEZpZWxkQVBJLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcih0aGlzLmNvbnRlbnQpO1xuXHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkICYmIGNvbnRyb2w/LmlzQShcInNhcC5tLkhCb3hcIikpIHtcblx0XHRcdC8vIGZvciBjaGFpbmluZyByZWFzb25zLCBsZXTCtHMga2VlcCBpdCBsaWtlIHRoYXRcblx0XHRcdGNvbnRyb2wgPSAoY29udHJvbCBhcyBIQm94KS5nZXRJdGVtcygpWzBdO1xuXHRcdH1cblx0XHRpZiAoY29udHJvbD8uaXNBPENoZWNrQm94PihcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRjb250cm9sLnNldFNlbGVjdGVkKHZhbHVlIGFzIGJvb2xlYW4pO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPElucHV0QmFzZT4oXCJzYXAubS5JbnB1dEJhc2VcIikpIHtcblx0XHRcdGNvbnRyb2wuc2V0VmFsdWUodmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxUZXh0PihcInNhcC5tLlRleHRcIikpIHtcblx0XHRcdGNvbnRyb2wuc2V0VGV4dCh2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPE1EQ0ZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBcInNldHRpbmcgdmFsdWUgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGN1cnJlbnQgZW5hYmxlbWVudCBzdGF0ZSBvZiB0aGUgZmllbGQuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSB3aXRoIHRoZSBlbmFibGVtZW50IHN0YXRlXG5cdCAqL1xuXHRnZXRFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGxldCBjb250cm9sID0gRmllbGRBUEkuZ2V0Q29udHJvbEluRmllbGRXcmFwcGVyKHRoaXMuY29udGVudCk7XG5cdFx0aWYgKGNvbnRyb2wgIT09IG51bGwgJiYgY29udHJvbCAhPT0gdW5kZWZpbmVkICYmICFjb250cm9sPy5pc0EoXCJzYXAubS5UZXh0XCIpKSB7XG5cdFx0XHQvL2NoZWNrIG5lZWRlZCBmb3IgZmlsZSB3cmFwcGVyIHdoaWNoIGRvZXMgbm90IGhhdmUgYSBjb250ZW50XG5cdFx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBjb250cm9sLmlzQTxIQm94PihcInNhcC5tLkhCb3hcIikpIHtcblx0XHRcdFx0Ly8gZm9yIGNoYWluaW5nIHJlYXNvbnMsIGxldMK0cyBrZWVwIGl0IGxpa2UgdGhhdFxuXHRcdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRJdGVtcygpWzBdO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNvbnRyb2wuaXNBPFZCb3g+KFwic2FwLm0uVkJveFwiKSkge1xuXHRcdFx0XHQvLyBmb3IgY2hhaW5pbmcgcmVhc29ucywgbGV0wrRzIGtlZXAgaXQgbGlrZSB0aGF0XG5cdFx0XHRcdGNvbnRyb2wgPSBjb250cm9sLmdldEl0ZW1zKClbMF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIHdlIG5lZWQgdG8gY2FsbCB0aGUgZ2V0UHJvcGVydHkgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlc1xuXHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIGVuZCB1cCBpbiBhIG1heCBjYWxsIHN0YWNrIHNpemVcblx0XHRcdGlmIChjb250cm9sLmlzQTxDaGVja0JveD4oXCJzYXAubS5DaGVja0JveFwiKSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbC5nZXRQcm9wZXJ0eShcImVuYWJsZWRcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPElucHV0QmFzZT4oXCJzYXAubS5JbnB1dEJhc2VcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0UHJvcGVydHkoXCJlbmFibGVkXCIpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxMaW5rPihcInNhcC5tLkxpbmtcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0UHJvcGVydHkoXCJlbmFibGVkXCIpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxCdXR0b24+KFwic2FwLm0uQnV0dG9uXCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldFByb3BlcnR5KFwiZW5hYmxlZFwiKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbC5nZXRQcm9wZXJ0eShcImFjdGl2ZVwiKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8T2JqZWN0SWRlbnRpZmllcj4oXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRcdHJldHVybiBjb250cm9sLmdldFByb3BlcnR5KFwidGl0bGVBY3RpdmVcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPEZvcm1FbGVtZW50V3JhcHBlcj4oXCJzYXAuZmUuY29yZS5jb250cm9scy5Gb3JtRWxlbWVudFdyYXBwZXJcIikpIHtcblx0XHRcdFx0Ly8gSXQgaXMgZm9yIGEgRHJhZnQgSW5kaWNhdG9yXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxEYXRhUG9pbnQ+KFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5EYXRhUG9pbnRcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0RW5hYmxlZCgpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxFbWFpbD4oXCJzYXAuZmUubWFjcm9zLmNvbnRhY3QuRW1haWxcIikpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wuZ2V0UHJvcGVydHkoXCJsaW5rRW5hYmxlZFwiKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0E8Q29udGFjdD4oXCJzYXAuZmUubWFjcm9zLmNvbnRhY3QuQ29udGFjdFwiKSkge1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbC5nZXRFbmFibGVkKCk7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPEV4cGFuZGFibGVUZXh0PihcInNhcC5tLkV4cGFuZGFibGVUZXh0XCIpKSB7XG5cdFx0XHRcdC8vIG90aGVyd2lzZSBzaG93IG1vcmUgd291bGQgYmUgaW5hY3RpdmVcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPE1EQ0ZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdFx0Y29uc3QgZWRpdE1vZGUgPSBjb250cm9sLmdldEVkaXRNb2RlKCk7XG5cdFx0XHRcdC8vIFRoZSBtZGMgZmllbGQgZG9lcyBub3QgaGF2ZSBhIGRpcmVjdCBwcm9wZXJ0eSBcImVuYWJsZWRcIiwgdGhlcmVmb3JlIHdlIG1hcFxuXHRcdFx0XHQvLyB0aGUgaW50ZXJuYWwgZGlzYWJsZWQgc2V0dGluZyBvZiB0aGUgZWRpdCBtb2RlIGluIHRoaXMgZ3JhY2VmdWwgcGF0dGVyblxuXHRcdFx0XHRyZXR1cm4gZWRpdE1vZGUgIT09IEZpZWxkRWRpdE1vZGUuRGlzYWJsZWQ7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wuaXNBPEZpbGVXcmFwcGVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsZVdyYXBwZXJcIikpIHtcblx0XHRcdFx0Ly8gVGhlIGZpbGUgd3JhcHBlciBjb3VsZCBjb250YWluIGEgbGluayBvciBhbiBhdmF0YXIgd2l0aCBhIGRlbGV0ZSBidXR0b24sXG5cdFx0XHRcdC8vIHdlIG11c3QgZW5zdXJlIHRoZSBlbmFibGVtZW50IGluIGJvdGggY2FzZXNcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2wubGluayA/IGNvbnRyb2wubGluay5nZXRQcm9wZXJ0eShcImVuYWJsZWRcIikgOiB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0Y29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkNvbmRpdGlvbmFsV3JhcHBlclwiKSB8fFxuXHRcdFx0XHQoY29udHJvbCBhcyBDb250cm9sKS5pc0E8VGV4dExpbms+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5UZXh0TGlua1wiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGN1cnJlbnQgZW5hYmxlbWVudCBzdGF0ZSBvZiB0aGUgZmllbGQuXG5cdCAqIEBwYXJhbSBlbmFibGVkXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgZmllbGQgcmVmZXJlbmNlXG5cdCAqL1xuXHRzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBDb250cm9sIHtcblx0XHRsZXQgY29udHJvbCA9IEZpZWxkQVBJLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcih0aGlzLmNvbnRlbnQpO1xuXHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkICYmIGNvbnRyb2w/LmlzQTxIQm94PihcInNhcC5tLkhCb3hcIikpIHtcblx0XHRcdC8vIGZvciBjaGFpbmluZyByZWFzb25zLCBsZXTCtHMga2VlcCBpdCBsaWtlIHRoYXRcblx0XHRcdGNvbnRyb2wgPSBjb250cm9sLmdldEl0ZW1zKClbMF07XG5cdFx0fVxuXG5cdFx0Ly8gd2UgbmVlZCB0byBjYWxsIHRoZSBzZXRQcm9wZXJ0eSBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGVzXG5cdFx0Ly8gb3RoZXJ3aXNlIHdlIGVuZCB1cCBpbiBhIG1heCBjYWxsIHN0YWNrIHNpemVcblx0XHRpZiAoY29udHJvbD8uaXNBPENoZWNrQm94PihcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbC5zZXRQcm9wZXJ0eShcImVuYWJsZWRcIiwgZW5hYmxlZCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8SW5wdXRCYXNlPihcInNhcC5tLklucHV0QmFzZVwiKSkge1xuXHRcdFx0cmV0dXJuIGNvbnRyb2wuc2V0UHJvcGVydHkoXCJlbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPExpbms+KFwic2FwLm0uTGlua1wiKSkge1xuXHRcdFx0cmV0dXJuIGNvbnRyb2wuc2V0UHJvcGVydHkoXCJlbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbD8uaXNBPEJ1dHRvbj4oXCJzYXAubS5CdXR0b25cIikpIHtcblx0XHRcdHJldHVybiBjb250cm9sLnNldFByb3BlcnR5KFwiZW5hYmxlZFwiLCBlbmFibGVkKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxPYmplY3RTdGF0dXM+KFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRyZXR1cm4gY29udHJvbC5zZXRQcm9wZXJ0eShcImFjdGl2ZVwiLCBlbmFibGVkKTtcblx0XHR9IGVsc2UgaWYgKGNvbnRyb2w/LmlzQTxPYmplY3RJZGVudGlmaWVyPihcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIikpIHtcblx0XHRcdHJldHVybiBjb250cm9sLnNldFByb3BlcnR5KFwidGl0bGVBY3RpdmVcIiwgZW5hYmxlZCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8TURDRmllbGQ+KFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0Ly8gVGhlIG1kYyBmaWVsZCBkb2VzIG5vdCBoYXZlIGEgZGlyZWN0IHByb3BlcnR5IFwiZW5hYmxlZFwiLCB0aGVyZWZvcmUgd2UgbWFwXG5cdFx0XHQvLyB0aGUgZW5hYmxlZCBwcm9wZXJ0eSB0byB0aGUgcmVzcGVjdGl2ZSBkaXNhYmxlZCBzZXR0aW5nIG9mIHRoZSBlZGl0IG1vZGVcblx0XHRcdC8vIHdpdGggdGhpcyBncmFjZWZ1bCBwYXR0ZXJuXG5cdFx0XHRsZXQgZWRpdE1vZGVUeXBlO1xuXHRcdFx0aWYgKGVuYWJsZWQpIHtcblx0XHRcdFx0ZWRpdE1vZGVUeXBlID0gRmllbGRFZGl0TW9kZS5FZGl0YWJsZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVkaXRNb2RlVHlwZSA9IEZpZWxkRWRpdE1vZGUuRGlzYWJsZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sLnNldEVkaXRNb2RlKGVkaXRNb2RlVHlwZSk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8RW1haWw+KFwic2FwLmZlLm1hY3Jvcy5jb250YWN0LkVtYWlsXCIpKSB7XG5cdFx0XHRjb250cm9sLnNldExpbmtFbmFibGVkKGVuYWJsZWQpO1xuXHRcdFx0cmV0dXJuIGNvbnRyb2w7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sPy5pc0E8RGF0YVBvaW50PihcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50XCIpKSB7XG5cdFx0XHRjb250cm9sLnNldEVuYWJsZWQoZW5hYmxlZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IFwic2V0RW5hYmxlZCBpc24ndCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBmaWVsZCB0eXBlXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBtZXNzYWdlIHRvIHRoZSBmaWVsZC5cblx0ICogQHBhcmFtIFtwYXJhbWV0ZXJzXSBUaGUgcGFyYW1ldGVycyB0byBjcmVhdGUgbWVzc2FnZVxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy50eXBlIFR5cGUgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubWVzc2FnZSBNZXNzYWdlIHRleHRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuZGVzY3JpcHRpb24gTWVzc2FnZSBkZXNjcmlwdGlvblxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5wZXJzaXN0ZW50IFRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgcGVyc2lzdGVudFxuXHQgKiBAcmV0dXJucyBUaGUgaWQgb2YgdGhlIG1lc3NhZ2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkTWVzc2FnZShwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1zZ01hbmFnZXIgPSB0aGlzLmdldE1lc3NhZ2VNYW5hZ2VyKCk7XG5cdFx0Y29uc3Qgb0NvbnRyb2wgPSBGaWVsZEFQSS5nZXRDb250cm9sSW5GaWVsZFdyYXBwZXIodGhpcy5jb250ZW50KTtcblxuXHRcdGxldCBwYXRoOyAvL3RhcmdldCBmb3Igb01lc3NhZ2Vcblx0XHRpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRwYXRoID0gKG9Db250cm9sIGFzIENoZWNrQm94KS5nZXRCaW5kaW5nKFwic2VsZWN0ZWRcIik/LmdldFJlc29sdmVkUGF0aCgpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2w/LmlzQShcInNhcC5tLklucHV0QmFzZVwiKSkge1xuXHRcdFx0cGF0aCA9IChvQ29udHJvbCBhcyBJbnB1dEJhc2UpLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKT8uZ2V0UmVzb2x2ZWRQYXRoKCk7XG5cdFx0fSBlbHNlIGlmIChvQ29udHJvbD8uaXNBPEZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdHBhdGggPSBvQ29udHJvbC5nZXRCaW5kaW5nKFwidmFsdWVcIikhLmdldFJlc29sdmVkUGF0aCgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9NZXNzYWdlID0gbmV3IE1lc3NhZ2Uoe1xuXHRcdFx0dGFyZ2V0OiBwYXRoLFxuXHRcdFx0dHlwZTogcGFyYW1ldGVycy50eXBlLFxuXHRcdFx0bWVzc2FnZTogcGFyYW1ldGVycy5tZXNzYWdlLFxuXHRcdFx0cHJvY2Vzc29yOiBvQ29udHJvbD8uZ2V0TW9kZWwoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0cGVyc2lzdGVudDogcGFyYW1ldGVycy5wZXJzaXN0ZW50XG5cdFx0fSk7XG5cblx0XHRtc2dNYW5hZ2VyLmFkZE1lc3NhZ2VzKG9NZXNzYWdlKTtcblx0XHRyZXR1cm4gb01lc3NhZ2UuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgbWVzc2FnZSBmcm9tIHRoZSBmaWVsZC5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbWVzc2FnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVNZXNzYWdlKGlkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBtc2dNYW5hZ2VyID0gdGhpcy5nZXRNZXNzYWdlTWFuYWdlcigpO1xuXHRcdGNvbnN0IGFyciA9IG1zZ01hbmFnZXIuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGFyci5maW5kKChlOiBNZXNzYWdlKSA9PiBlPy5nZXRJZD8uKCkgPT09IGlkKTtcblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRtc2dNYW5hZ2VyLnJlbW92ZU1lc3NhZ2VzKHJlc3VsdCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0TWVzc2FnZU1hbmFnZXIoKTogTWVzc2FnaW5nIHtcblx0XHRyZXR1cm4gTWVzc2FnaW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3QgcHJlcGFyZWRQcm9wZXJ0aWVzID0gdGhpcy5wcmVwYXJlUHJvcGVydGllcygpO1xuXHRcdFx0aWYgKHByZXBhcmVkUHJvcGVydGllcykge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQocHJlcGFyZWRQcm9wZXJ0aWVzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUHJlcGFyZXMgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgZm9yIHRoZSBGaWVsZCBibG9jay5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgbWV0YSBwYXRoIGFuZCBjb250ZXh0IHBhdGgsIHNldHMgdXAgdGhlIGlucHV0IGZpZWxkIHByb3BlcnRpZXMsXG5cdCAqIGFuZCBjYWxscyB0aGUgc2V0VXBGaWVsZCBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgRmllbGQgYmxvY2suXG5cdCAqIEFkZGl0aW9uYWxseSwgaXQgc2V0cyB0aGUgbWFpblByb3BlcnR5UmVsYXRpdmVQYXRoIGFuZCBjb2xsYWJvcmF0aW9uRW5hYmxlZCBwcm9wZXJ0aWVzLlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlcGFyZWQgcHJvcGVydGllcyBmb3IgdGhlIEZpZWxkIGJsb2NrLCBvciB1bmRlZmluZWQgaWYgdGhlIHByZXByb2Nlc3NvciBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUuXG5cdCAqL1xuXHRwcmVwYXJlUHJvcGVydGllcygpOiBGaWVsZEJsb2NrUHJvcGVydGllcyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblxuXHRcdGlmICghbWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBpbnB1dEZpZWxkUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydHlCYWcoKSBhcyBJbnB1dEZpZWxkQmxvY2tQcm9wZXJ0aWVzO1xuXHRcdGlucHV0RmllbGRQcm9wZXJ0aWVzLm9uTGl2ZUNoYW5nZSA9IHRoaXMuaGFzTGlzdGVuZXJzKFwibGl2ZUNoYW5nZVwiKSA/IFwiU29tZXRoaW5nXCIgOiB1bmRlZmluZWQ7XG5cblx0XHR0aGlzLnByZXByb2Nlc3NvckNvbnRleHQgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dDtcblx0XHR0aGlzLm9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdHRoaXMuY29tcHV0ZWRDb250ZXh0UGF0aCA9IHRoaXMub2RhdGFNZXRhTW9kZWw/LmdldE1ldGFDb250ZXh0KHRoaXMuY29udGV4dFBhdGggPz8gKHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpIGFzIHN0cmluZykpO1xuXG5cdFx0dGhpcy5jb21wdXRlZE1ldGFQYXRoID0gdGhpcy5vZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSkgYXMgQ29udGV4dDtcblxuXHRcdC8vIFNvbWUgY29kZSByZWx5IG9uIHVzIGNoZWNraW5nIGlmIHZpc2libGUgaXMgZGVmaW5lZCBvciBub3QsIHRoZSBvbmx5IHdheSB0byBkbyBpdCBpcyB0aHJvdWdoIHRoZSBpc1Byb3BlcnR5SW5pdGlhbCBtZXRob2Rcblx0XHRpZiAodGhpcy5pc1Byb3BlcnR5SW5pdGlhbChcInZpc2libGVcIikpIHtcblx0XHRcdGlucHV0RmllbGRQcm9wZXJ0aWVzLnZpc2libGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucHJlcHJvY2Vzc29yQ29udGV4dCkge1xuXHRcdFx0Ly8gSWYgdGhlIElEIGlzIG5vdCBzZXQgYnkgdGhlIGNvbnN1bWVyLCB1c2UgdGhlIElEIHByb3ZpZGVkIGJ5IFVJNS5cblx0XHRcdC8vIChUaGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIHZhbHVlIGhlbHAgcmVsaWVzIG9uIGFsd2F5cyBoYXZpbmcgYW4gSUQuKVxuXHRcdFx0aW5wdXRGaWVsZFByb3BlcnRpZXMuaWQgPSBpbnB1dEZpZWxkUHJvcGVydGllcy5pZCA/PyB0aGlzLmdldElkKCk7XG5cblx0XHRcdGNvbnN0IHByZXBhcmVkUHJvcGVydGllcyA9IHNldFVwRmllbGQoXG5cdFx0XHRcdGlucHV0RmllbGRQcm9wZXJ0aWVzLFxuXHRcdFx0XHR7fSBhcyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0XHR0aGlzLnByZXByb2Nlc3NvckNvbnRleHQsXG5cdFx0XHRcdHRoaXMuY29tcHV0ZWRNZXRhUGF0aCxcblx0XHRcdFx0dGhpcy5jb21wdXRlZENvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmlzRHluYW1pY0luc3RhbnRpYXRpb24gPSB0cnVlO1xuXHRcdFx0aWYgKHByZXBhcmVkUHJvcGVydGllcy5tYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgpIHRoaXMubWFpblByb3BlcnR5UmVsYXRpdmVQYXRoID0gcHJlcGFyZWRQcm9wZXJ0aWVzLm1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aDtcblx0XHRcdGlmIChwcmVwYXJlZFByb3BlcnRpZXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSBwcmVwYXJlZFByb3BlcnRpZXMuY29sbGFib3JhdGlvbkVuYWJsZWQ7XG5cdFx0XHRyZXR1cm4gcHJlcGFyZWRQcm9wZXJ0aWVzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjb250ZW50IGZvciB0aGUgRmllbGQgYmxvY2suXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgcHJlcGFyZWQgcHJvcGVydGllcyB0byBjcmVhdGUgYW5kIHJldHVybiB0aGUgY29udGVudCBjb250cm9sIGZvciB0aGUgRmllbGQgYmxvY2suXG5cdCAqIEBwYXJhbSBwcmVwYXJlZFByb3BlcnRpZXMgVGhlIHByZXBhcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBGaWVsZCBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29udGVudCBjb250cm9sLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudChwcmVwYXJlZFByb3BlcnRpZXM6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogQ29udHJvbCB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHQvLyBXZSBoYXZlIHRvIHNldCAob3IgYmluZCkgc29tZSBwcm9wZXJ0aWVzIHRvIHRoZSBGaWVsZEFQSSBzbyB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBieSBjb25zdW1lcnMvVUk1XG5cdFx0XHR0aGlzLnNldE9yQmluZFByb3BlcnR5KFwicmVxdWlyZWRcIiwgcHJlcGFyZWRQcm9wZXJ0aWVzLnJlcXVpcmVkRXhwcmVzc2lvbik7XG5cdFx0XHR0aGlzLnNldE9yQmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCBwcmVwYXJlZFByb3BlcnRpZXMudmlzaWJsZSk7XG5cblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLmNoYW5nZSA9IHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcykgYXMgdW5rbm93biBhcyBFdmVudEhhbmRsZXI7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlID0gdGhpcy5oYW5kbGVMaXZlQ2hhbmdlLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgPSB0aGlzLm9uVmFsaWRhdGVGaWVsZEdyb3VwLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5oYW5kbGVUeXBlTWlzc21hdGNoID0gdGhpcy5vbkhhbmRsZVR5cGVNaXNzbWF0Y2guYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLmhhbmRsZUZpbGVTaXplRXhjZWVkID0gdGhpcy5vbkhhbmRsZUZpbGVTaXplRXhjZWVkLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5oYW5kbGVVcGxvYWRDb21wbGV0ZSA9IChldik6IHZvaWQgPT4ge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuaGFuZGxlVXBsb2FkQ29tcGxldGUoXG5cdFx0XHRcdFx0ZXYsXG5cdFx0XHRcdFx0eyBwYXRoOiBwcmVwYXJlZFByb3BlcnRpZXMuZmlsZUZpbGVuYW1lRXhwcmVzc2lvbiB9LFxuXHRcdFx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5maWxlUmVsYXRpdmVQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0Y29udHJvbGxlclxuXHRcdFx0XHQpO1xuXHRcdFx0fTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLnVwbG9hZFN0cmVhbSA9IHRoaXMub25VcGxvYWRTdHJlYW0uYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLnJlbW92ZVN0cmVhbSA9IChldik6IHZvaWQgPT4ge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIucmVtb3ZlU3RyZWFtKFxuXHRcdFx0XHRcdGV2IGFzIEZpZWxkJENoYW5nZUV2ZW50ICYgVUk1RXZlbnQ8eyBpc1ZhbGlkOiBib29sZWFuIH0+LFxuXHRcdFx0XHRcdHsgcGF0aDogcHJlcGFyZWRQcm9wZXJ0aWVzLmZpbGVGaWxlbmFtZUV4cHJlc3Npb24gfSxcblx0XHRcdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZmlsZVJlbGF0aXZlUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdGNvbnRyb2xsZXJcblx0XHRcdFx0KTtcblx0XHRcdH07XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5oYW5kbGVPcGVuVXBsb2FkZXIgPSB0aGlzLm9uSGFuZGxlT3BlblVwbG9hZGVyLmJpbmQodGhpcyk7XG5cdFx0XHRwcmVwYXJlZFByb3BlcnRpZXMuZXZlbnRIYW5kbGVycy5oYW5kbGVDbG9zZVVwbG9hZGVyID0gdGhpcy5vbkhhbmRsZUNsb3NlVXBsb2FkZXIuYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLm9wZW5FeHRlcm5hbExpbmsgPSB0aGlzLm9uT3BlbkV4dGVybmFsTGluay5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMub25Gb2N1c091dCA9IHRoaXMub25Gb2N1c091dC5iaW5kKHRoaXMpO1xuXHRcdFx0cHJlcGFyZWRQcm9wZXJ0aWVzLmV2ZW50SGFuZGxlcnMubGlua1ByZXNzZWQgPSB0aGlzLm9uTGlua1ByZXNzZWQuYmluZCh0aGlzKTtcblx0XHRcdHByZXBhcmVkUHJvcGVydGllcy5ldmVudEhhbmRsZXJzLmRpc3BsYXlBZ2dyZWdhdGlvbkRldGFpbHMgPSAoZXYpOiB2b2lkID0+IHtcblx0XHRcdFx0RmllbGRSdW50aW1lLmRpc3BsYXlBZ2dyZWdhdGVEZXRhaWxzKGV2LCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHByZXBhcmVkUHJvcGVydGllcy5kYXRhTW9kZWxQYXRoKSk7XG5cdFx0XHR9O1xuXHRcdFx0dGhpcy5jb250ZW50ID0gRmllbGRTdHJ1Y3R1cmUuZ2V0RmllbGRTdHJ1Y3R1cmVUZW1wbGF0ZShwcmVwYXJlZFByb3BlcnRpZXMpIGFzIHVua25vd24gYXMgQ29udHJvbDtcblx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KEZpZWxkU3RydWN0dXJlLmdldFBvc3NpYmxlVmFsdWVIZWxwVGVtcGxhdGUocHJlcGFyZWRQcm9wZXJ0aWVzKSBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coZS5tZXNzYWdlICsgXCIgaW4gY3JlYXRlQ29udGVudCBvZiBGaWVsZEFQSVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KFwiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZFwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudDtcblx0fVxuXG5cdG9uSGFuZGxlVHlwZU1pc3NtYXRjaChldjogRmlsZVVwbG9hZGVyJFR5cGVNaXNzbWF0Y2hFdmVudCk6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci5oYW5kbGVUeXBlTWlzc21hdGNoKGV2KTtcblx0fVxuXG5cdG9uSGFuZGxlRmlsZVNpemVFeGNlZWQoZXY6IEZpbGVVcGxvYWRlciRGaWxlU2l6ZUV4Y2VlZEV2ZW50KTogdm9pZCB7XG5cdFx0RmllbGRSdW50aW1lSGVscGVyLmhhbmRsZUZpbGVTaXplRXhjZWVkKGV2KTtcblx0fVxuXG5cdG9uSGFuZGxlT3BlblVwbG9hZGVyKGV2OiBVSTVFdmVudDx7fSwgRmlsZVVwbG9hZGVyPik6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci5oYW5kbGVPcGVuVXBsb2FkZXIoZXYpO1xuXHR9XG5cblx0b25VcGxvYWRTdHJlYW0oZXY6IEZpbGVVcGxvYWRlciRDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci51cGxvYWRTdHJlYW0odGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLCBldik7XG5cdH1cblxuXHRvbkhhbmRsZUNsb3NlVXBsb2FkZXIoZXY6IFVJNUV2ZW50PHt9LCBGaWxlVXBsb2FkZXI+KTogdm9pZCB7XG5cdFx0RmllbGRSdW50aW1lSGVscGVyLmhhbmRsZUNsb3NlVXBsb2FkZXIoZXYpO1xuXHR9XG5cblx0b25PcGVuRXh0ZXJuYWxMaW5rKGV2OiBVSTVFdmVudDx7fSwgTGluaz4pOiB2b2lkIHtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIub3BlbkV4dGVybmFsTGluayhldik7XG5cdH1cblxuXHRvbkxpbmtQcmVzc2VkKGV2OiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdEZpZWxkUnVudGltZUhlbHBlci5wcmVzc0xpbmsoZXYpO1xuXHR9XG5cblx0b25Gb2N1c091dChldjogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzT3V0KGV2KTtcblx0fVxuXG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgY3VycmVudFByb3BlcnR5VmFsdWUgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGN1cnJlbnRQcm9wZXJ0eVZhbHVlO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGFnZ3JlZ2F0aW9uTmFtZSBpbiBhZ2dyZWdhdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IHRoaXMuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25OYW1lKTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFnZ3JlZ2F0aW9uQ29udGVudCkpIHtcblx0XHRcdFx0Y29uc3QgY2hpbGRyZW5BcnJheSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IG1hbmFnZWRPYmplY3Qgb2YgYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdFx0aWYgKG1hbmFnZWRPYmplY3QuaXNBPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKSkge1xuXHRcdFx0XHRcdFx0Y2hpbGRyZW5BcnJheS5wdXNoKG1hbmFnZWRPYmplY3QuZ2V0UHJvcGVydHlCYWcoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gY2hpbGRyZW5BcnJheTtcblx0XHRcdH0gZWxzZSBpZiAoYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQuaXNBPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKSkge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldFByb3BlcnR5QmFnKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2V0dGluZ3NbYWdncmVnYXRpb25OYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBhZ2dyZWdhdGlvbkNvbnRlbnQuZ2V0SWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2V0dGluZ3M7XG5cdH1cblxuXHRnZXRJbmxpbmVFZGl0UHJvcGVydHlOYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcz4oXG5cdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdCk7XG5cdFx0Y29uc3QgdGFyZ2V0UHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUoXG5cdFx0XHRkYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcz5cblx0XHQpPy50YXJnZXRPYmplY3Q7XG5cdFx0cmV0dXJuIHRhcmdldFByb3BlcnR5Py5mdWxseVF1YWxpZmllZE5hbWU7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmllbGRBUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBZEEsSUFxQk1BLFFBQVEsSUFBQUMsSUFBQSxHQU5iQyxjQUFjLENBQUMsOEJBQThCLEVBQUU7SUFDL0NDLFdBQVcsRUFBRSxDQUNaLHlDQUF5QyxDQUFDO0VBRTVDLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ0RDLEtBQUssQ0FBQ0MsVUFB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
@@ -104,7 +104,7 @@ class FieldAPI extends MacroAPI {
104
104
  * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.
105
105
  * @public
106
106
  */
107
- @property({ type: "boolean", isBindingInfo: true })
107
+ @property({ type: "any", isBindingInfo: true })
108
108
  public readonly readOnly!: boolean;
109
109
 
110
110
  /**
@@ -224,7 +224,7 @@ class FieldAPI extends MacroAPI {
224
224
  * @public
225
225
  */
226
226
  @property({
227
- type: "string",
227
+ type: "any",
228
228
  bindable: true,
229
229
  isBindingInfo: true,
230
230
  required: false
@@ -238,7 +238,7 @@ class FieldAPI extends MacroAPI {
238
238
  * @public
239
239
  */
240
240
  @property({
241
- type: "string",
241
+ type: "any",
242
242
  bindable: true,
243
243
  isBindingInfo: true,
244
244
  required: false
@@ -259,7 +259,7 @@ class FieldAPI extends MacroAPI {
259
259
  @property({ type: "string" })
260
260
  public mainPropertyRelativePath?: string; // Need to be computed on demand
261
261
 
262
- @property({ type: "object", isBindingInfo: true })
262
+ @property({ type: "any", isBindingInfo: true })
263
263
  customValueBinding?: boolean | string | number | PropertyBindingInfo;
264
264
 
265
265
  @property({ type: "boolean" })
@@ -24,7 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/f/library", "sap/fe/controls/library", "sap/
24
24
  controls: [],
25
25
  elements: [],
26
26
  // eslint-disable-next-line no-template-curly-in-string
27
- version: "1.133.2",
27
+ version: "1.133.4",
28
28
  noLibraryCSS: true,
29
29
  extensions: {
30
30
  flChangeHandlers: {