@sapui5/sap.fe.macros 1.120.2 → 1.120.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 +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/chart/ChartAPI.js +2 -2
- package/src/sap/fe/macros/chart/ChartAPI.ts +1 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +2 -2
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +1 -1
- package/src/sap/fe/macros/form/Form.block.js +3 -4
- package/src/sap/fe/macros/form/Form.block.ts +3 -2
- package/src/sap/fe/macros/ina/MultiDimensionalGrid.block.js +2 -2
- package/src/sap/fe/macros/ina/MultiDimensionalGrid.block.tsx +2 -2
- package/src/sap/fe/macros/insights/CommonInsightsHelper.js +5 -2
- package/src/sap/fe/macros/insights/CommonInsightsHelper.ts +9 -1
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +0 -117
- package/src/sap/fe/macros/table/TableAPI.js +2 -2
- package/src/sap/fe/macros/table/TableAPI.ts +1 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +5 -7
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +1 -2
package/package.json
CHANGED
|
@@ -146,7 +146,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
146
146
|
};
|
|
147
147
|
_proto.collectAvailableCards = function collectAvailableCards(cards) {
|
|
148
148
|
const actionToolbarItems = this.content.getActions();
|
|
149
|
-
if (hasInsightActionEnabled(actionToolbarItems)) {
|
|
149
|
+
if (hasInsightActionEnabled(actionToolbarItems, this.content.getFilter(), undefined)) {
|
|
150
150
|
cards.push((async () => {
|
|
151
151
|
const card = await this.getCardManifestChart();
|
|
152
152
|
return {
|
|
@@ -352,4 +352,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
352
352
|
}), _applyDecoratedDescriptor(_class2.prototype, "handleSelectionChange", [_dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "handleSelectionChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec17], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "collectAvailableCards", [_dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "collectAvailableCards"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec19], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype)), _class2)) || _class);
|
|
353
353
|
return ChartAPI;
|
|
354
354
|
}, false);
|
|
355
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydEFQSSIsImRlZmluZVVJNUNsYXNzIiwicmV0dXJuVHlwZXMiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiZGVmYXVsdFZhbHVlIiwiYWxsb3dlZFZhbHVlcyIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJldmVudCIsInhtbEV2ZW50SGFuZGxlciIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImNvbnRlbnQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5Iiwib25BZnRlclJlbmRlcmluZyIsInZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiY2hhcnQiLCJnZXRDb250ZW50Iiwic2hvd01lc3NhZ2VTdHJpcCIsInNDaGFydEVudGl0eVBhdGgiLCJkYXRhIiwic0NhY2hlS2V5Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0T2JqZWN0Iiwic2V0UHJvcGVydHkiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm9GaWx0ZXJDb250cm9sIiwib0NoYXJ0IiwiRmlsdGVyVXRpbHMiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsIm9FdmVudCIsImFEYXRhIiwiZ2V0UGFyYW1ldGVyIiwiYlNlbGVjdGVkIiwiQ2hhcnRSdW50aW1lIiwiZm5VcGRhdGVDaGFydCIsImZpcmVTZWxlY3Rpb25DaGFuZ2UiLCJtZXJnZSIsInNlbGVjdGVkIiwib25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQiLCJmaXJlRXZlbnQiLCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHMiLCJjYXJkcyIsImFjdGlvblRvb2xiYXJJdGVtcyIsImdldEFjdGlvbnMiLCJoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCIsInB1c2giLCJjYXJkIiwiZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQiLCJ0aXRsZSIsImdldENoYXJ0Q29udHJvbCIsImdldEhlYWRlciIsImNhbGxiYWNrIiwib25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrIiwiYmluZCIsImhhc1NlbGVjdGlvbnMiLCJtZGNDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJhRGltZW5zaW9ucyIsIkNoYXJ0VXRpbHMiLCJnZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2siLCJiSXNEcmlsbERvd24iLCJsZW5ndGgiLCJwcmV2RHJpbGxTdGFjayIsImJJc0RyaWxsVXAiLCJiTm9DaGFuZ2UiLCJ0b1N0cmluZyIsImFGaWx0ZXJzIiwiZ2V0Q2hhcnRTZWxlY3Rpb25zIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsImluc2lnaHRzUGFyYW1zIiwiY3JlYXRlQ2hhcnRDYXJkUGFyYW1zIiwic2hvd0luc2lnaHRzQ2FyZFByZXZpZXciLCJlIiwic2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UiLCJnZXRDYXJkTWFuaWZlc3QiLCJzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyIsImNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZ2V0U2VydmljZSIsImdldEZpbHRlciIsImNoYXJ0RmlsdGVySW5mbyIsImdldEFsbEZpbHRlckluZm8iLCJmaWx0ZXJzIiwiQ29tbW9uVXRpbHMiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJ1bmRlZmluZWQiLCJnZXREaW1lbnNpb25EYXRhTW9kZWwiLCJkaW1lbnNpb25OYW1lIiwibWV0YVBhdGgiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImRpbWVuc2lvbkNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIk1hY3JvQVBJIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydEFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC9jaGFydC9DaGFydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHksIHhtbEV2ZW50SGFuZGxlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBXcmFwcGVkQ2FyZCB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCBDaGFydFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRSdW50aW1lXCI7XG5pbXBvcnQgQ2hhcnRVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9DaGFydFV0aWxzXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBNRENDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnREZWxlZ2F0ZSBmcm9tIFwic2FwL3VpL21kYy9DaGFydERlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDaGFydENhcmRQYXJhbXMgfSBmcm9tIFwiLi4vaW5zaWdodHMvQW5hbHl0aWNhbEluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCwgc2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCB7IGdldENhcmRNYW5pZmVzdCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcsIHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IH0gZnJvbSBcIi4uL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuLyoqXG4gKiBEZWZpbml0aW9uIG9mIGEgY3VzdG9tIGFjdGlvbiB0byBiZSB1c2VkIGluIHRoZSBjaGFydCB0b29sYmFyXG4gKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuY2hhcnQuQWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcblx0LyoqXG5cdCAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0a2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGlzIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR0ZXh0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIGtleSBvZiBhbm90aGVyIGFjdGlvbiBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdG9vbGJhciB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXJlIHRoaXMgYWN0aW9uIHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIGRlZmluZWQgYW5jaG9yXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmVmb3JlYCBhbmQgYEFmdGVyYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwbGFjZW1lbnQ/OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiO1xuXHQvKipcblx0ICogRGVmaW5lcyBpZiB0aGUgYWN0aW9uIHJlcXVpcmVzIGEgc2VsZWN0aW9uLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZXF1aXJlc1NlbGVjdGlvbj86IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgdGhlIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwcmVzczogc3RyaW5nO1xuXHQvKipcblx0ICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYWN0aW9uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGVuYWJsZWQ/OiBib29sZWFuO1xufTtcbi8qKlxuICogRGVmaW5pdGlvbiBvZiBhIGN1c3RvbSBhY3Rpb24gZ3JvdXAgdG8gYmUgdXNlZCBpbnNpZGUgdGhlIGNoYXJ0IHRvb2xiYXJcbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBBY3Rpb25Hcm91cCA9IHtcblx0LyoqXG5cdCAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0a2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIG5lc3RlZCBhY3Rpb25zXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFjdGlvbnM6IEFjdGlvbltdO1xuXHQvKipcblx0ICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhpcyBhY3Rpb24gZ3JvdXBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dGV4dDogc3RyaW5nO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGVyZSB0aGlzIGFjdGlvbiBncm91cCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSBkZWZpbmVkIGFuY2hvclxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEJlZm9yZWAgYW5kIGBBZnRlcmBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cGxhY2VtZW50PzogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIjtcblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUga2V5IG9mIGFub3RoZXIgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdG9vbGJhciB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgY2hhcnQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOkNoYXJ0IGlkPVwiTXljaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCIsIHsgcmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIl0gfSlcbmNsYXNzIENoYXJ0QVBJIGV4dGVuZHMgTWFjcm9BUEkge1xuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIl1cblx0fSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0c2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogIC0gU29ydDxici8+XG5cdCAqICAtIFR5cGU8YnIvPlxuXHQgKiAgLSBJdGVtPGJyLz5cblx0ICogIC0gRmlsdGVyPGJyLz5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuIHwgc3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24hOiBib29sZWFuIHwgc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdHByZXZEcmlsbFN0YWNrITogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBhY3Rpb25zIG9mIHRoZSBjaGFydC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkFjdGlvblwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRhY3Rpb25zITogQWN0aW9uW107XG5cblx0LyoqXG5cdCAqIEdldHMgY29udGV4dHMgZnJvbSB0aGUgY2hhcnQgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG5cdCAqXG5cdCAqIEByZXR1cm5zIENvbnRleHRzIG9mIHRoZSByb3dzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIikgfHwgW107XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQgc2VsZWN0aW9ucyBhcmUgY2hhbmdlZC4gVGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIHNlbGVjdGVkL2Rlc2VsZWN0ZWQgYW5kIHRoZSBCb29sZWFuIGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBkYXRhIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgY2hhcnQgc3RhdGUgY2hhbmdlcy5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBzdG9yZSB0aGUgY2hhcnQgc3RhdGUgaW4gdGhlIGlBcHBzdGF0ZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHN0YXRlQ2hhbmdlITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBjaGFydCByZXF1ZXN0cyBkYXRhLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0aW50ZXJuYWxEYXRhUmVxdWVzdGVkITogRnVuY3Rpb247XG5cblx0b25BZnRlclJlbmRlcmluZygpIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRDb250cm9sbGVyKCkuZ2V0VmlldygpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0OiBhbnkgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgY2hhcnQgPSAodGhpcyBhcyBhbnkpLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBzaG93TWVzc2FnZVN0cmlwOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdHNob3dNZXNzYWdlU3RyaXBbc0NhY2hlS2V5XSA9XG5cdFx0XHRjaGFydC5kYXRhKFwiZHJhZnRTdXBwb3J0ZWRcIikgPT09IFwidHJ1ZVwiICYmICEhb0JpbmRpbmdDb250ZXh0ICYmICFvQmluZGluZ0NvbnRleHQuZ2V0T2JqZWN0KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb250cm9scy9zaG93TWVzc2FnZVN0cmlwXCIsIHNob3dNZXNzYWdlU3RyaXApO1xuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBhbnlbXSB7XG5cdFx0Y29uc3Qgb0NoYXJ0ID0gKHRoaXMgYXMgYW55KS5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sLCBvQ2hhcnQpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGhhbmRsZVNlbGVjdGlvbkNoYW5nZShvRXZlbnQ6IFVJNUV2ZW50PHsgZGF0YTogdW5rbm93bltdOyBuYW1lOiBzdHJpbmcgfT4pOiB2b2lkIHtcblx0XHRjb25zdCBhRGF0YSA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJkYXRhXCIpO1xuXHRcdGNvbnN0IGJTZWxlY3RlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJuYW1lXCIpID09PSBcInNlbGVjdERhdGFcIjtcblx0XHRDaGFydFJ1bnRpbWUuZm5VcGRhdGVDaGFydChvRXZlbnQpO1xuXHRcdCh0aGlzIGFzIGFueSkuZmlyZVNlbGVjdGlvbkNoYW5nZShtZXJnZSh7fSwgeyBkYXRhOiBhRGF0YSwgc2VsZWN0ZWQ6IGJTZWxlY3RlZCB9KSk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQoKSB7XG5cdFx0KHRoaXMgYXMgYW55KS5maXJlRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIik7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRjb2xsZWN0QXZhaWxhYmxlQ2FyZHMoY2FyZHM6IFByb21pc2U8V3JhcHBlZENhcmQ+W10pOiB2b2lkIHtcblx0XHRjb25zdCBhY3Rpb25Ub29sYmFySXRlbXMgPSB0aGlzLmNvbnRlbnQuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRpZiAoaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQoYWN0aW9uVG9vbGJhckl0ZW1zKSkge1xuXHRcdFx0Y2FyZHMucHVzaChcblx0XHRcdFx0KGFzeW5jICgpOiBQcm9taXNlPFdyYXBwZWRDYXJkPiA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2FyZCA9IGF3YWl0IHRoaXMuZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0Y2FyZDogY2FyZCxcblx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLmdldENoYXJ0Q29udHJvbCgpLmdldEhlYWRlcigpLFxuXHRcdFx0XHRcdFx0Y2FsbGJhY2s6IHRoaXMub25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrLmJpbmQodGhpcylcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KSgpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGhhc1NlbGVjdGlvbnMoKSB7XG5cdFx0Ly8gY29uc2lkZXIgY2hhcnQgc2VsZWN0aW9ucyBpbiB0aGUgY3VycmVudCBkcmlsbCBzdGFjayBvciBvbiBhbnkgZnVydGhlciBkcmlsbCBkb3duc1xuXHRcdGNvbnN0IG1kY0NoYXJ0ID0gdGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQ7XG5cdFx0aWYgKG1kY0NoYXJ0KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBjaGFydCA9IChtZGNDaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKSBhcyB1bmtub3duIGFzIENoYXJ0RGVsZWdhdGUpPy5nZXRJbm5lckNoYXJ0KG1kY0NoYXJ0KSBhcyBDaGFydDtcblx0XHRcdFx0aWYgKGNoYXJ0KSB7XG5cdFx0XHRcdFx0Y29uc3QgYURpbWVuc2lvbnMgPSBDaGFydFV0aWxzLmdldERpbWVuc2lvbnNGcm9tRHJpbGxTdGFjayhjaGFydCk7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxEb3duID0gYURpbWVuc2lvbnMubGVuZ3RoID4gdGhpcy5wcmV2RHJpbGxTdGFjay5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxVcCA9IGFEaW1lbnNpb25zLmxlbmd0aCA8IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJOb0NoYW5nZSA9IGFEaW1lbnNpb25zLnRvU3RyaW5nKCkgPT09IHRoaXMucHJldkRyaWxsU3RhY2sudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRsZXQgYUZpbHRlcnM6IEZpbHRlcltdO1xuXHRcdFx0XHRcdGlmIChiSXNEcmlsbFVwICYmIGFEaW1lbnNpb25zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0Ly8gZHJpbGxpbmcgdXAgdG8gbGV2ZWwwIHdvdWxkIGNsZWFyIGFsbCBzZWxlY3Rpb25zXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0LCB0cnVlKSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gYXBwbHkgZmlsdGVycyBvZiBzZWxlY3Rpb25zIG9mIHByZXZpb3VzIGRyaWxsc3RhY2sgd2hlbiBkcmlsbGluZyB1cC9kb3duXG5cdFx0XHRcdFx0XHQvLyB0byB0aGUgY2hhcnQgYW5kIHRhYmxlXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0KSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGJJc0RyaWxsRG93biB8fCBiSXNEcmlsbFVwKSB7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUgdGhlIGRyaWxsc3RhY2sgb24gYSBkcmlsbCB1cC8gZHJpbGwgZG93blxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2RHJpbGxTdGFjayA9IGFEaW1lbnNpb25zO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFGaWx0ZXJzLmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChiTm9DaGFuZ2UpIHtcblx0XHRcdFx0XHRcdC8vIGJOb0NoYW5nZSBpcyB0cnVlIHdoZW4gY2hhcnQgaXMgc2VsZWN0ZWRcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgY2hlY2tpbmcgZm9yIHNlbGVjdGlvbnMgaW4gQ2hhcnQ6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgY2hhcnRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRcdGlmIChpbnNpZ2h0c1BhcmFtcykge1xuXHRcdFx0XHRzaG93SW5zaWdodHNDYXJkUHJldmlldyhpbnNpZ2h0c1BhcmFtcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2FyZCBtYW5pZmVzdCBvcHRpbWl6ZWQgZm9yIHRoZSBjaGFydCBjYXNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIG9mIENhcmRNYW5pZmVzdFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBnZXRDYXJkTWFuaWZlc3RDaGFydCgpOiBQcm9taXNlPENhcmRNYW5pZmVzdD4ge1xuXHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdHJldHVybiBnZXRDYXJkTWFuaWZlc3QoaW5zaWdodHNQYXJhbXMgYXMgSW5zaWdodHNQYXJhbXM8Q2hhcnRDb250ZW50Pik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgdGFibGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBjYXJkIFRoZSBjYXJkIG1hbmlmZXN0IHRvIGJlIHVzZWQgZm9yIHRoZSBjYWxsYmFja1xuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrKGNhcmQ6IENhcmRNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2FyZCkge1xuXHRcdFx0XHRhd2FpdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyhjYXJkLCB0aGlzLmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aW9uTWFuYWdlci5nZXRTZXJ2aWNlKCkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlcnMgcmVsYXRlZCB0byB0aGUgY2hhcnQuXG5cdCAqXG5cdCAqIEByZXR1cm5zICBUaGUgZmlsdGVyIGNvbmZpZ3VyZWQgb24gdGhlIGNoYXJ0IG9yIHVuZGVmaW5lZCBpZiBub25lXG5cdCAqL1xuXHRnZXRGaWx0ZXIoKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8odGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQpO1xuXHRcdGlmIChjaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpIHtcblx0XHRcdGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzID0gQ29tbW9uVXRpbHMuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzKTtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHsgZmlsdGVyczogY2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMsIGFuZDogdHJ1ZSB9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjaGFydCBjb250cm9sIGZyb20gdGhlIENoYXJ0IEFQSS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIENoYXJ0IGNvbnRyb2wgaW5zaWRlIHRoZSBDaGFydCBBUElcblx0ICovXG5cdGdldENoYXJ0Q29udHJvbCgpOiBNRENDaGFydCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBkaW1lbnNpb25OYW1lICBOYW1lIG9mIHRoZSBkaW1lbnNpb25cblx0ICogQHJldHVybnMgVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvblxuXHQgKi9cblxuXHRnZXREaW1lbnNpb25EYXRhTW9kZWwoZGltZW5zaW9uTmFtZTogc3RyaW5nKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gdGhpcy5jb250ZW50LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gKHRoaXMuY29udGVudC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bWV0YVBhdGh9LyR7ZGltZW5zaW9uTmFtZX1gKSBhcyBDb250ZXh0O1xuXHRcdHJldHVybiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoZGltZW5zaW9uQ29udGV4dCk7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IENoYXJ0QVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWJBLElBZU1BLFFBQVEsV0FEYkMsY0FBYyxDQUFDLDhCQUE4QixFQUFFO0lBQUVDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QjtFQUFFLENBQUMsQ0FBQyxVQU8xRkMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQVE1QkQsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0lBQzdFQyxtQkFBbUIsRUFBRSxDQUFDLGtDQUFrQztFQUN6RCxDQUFDLENBQUMsVUFRREosUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0lBQzdFQyxtQkFBbUIsRUFBRTtFQUN0QixDQUFDLENBQUMsVUFRREosUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQVE1QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVJLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxVQVVqREwsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVJLFlBQVksRUFBRSxVQUFVO0lBQUVDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVTtFQUFFLENBQUMsQ0FBQyxVQVFyR04sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQVk1QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVLLGFBQWEsRUFBRSxDQUFDLFNBQVM7RUFBRSxDQUFDLENBQUMsV0FrQnhETixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLGtCQUFrQjtJQUFFSSxZQUFZLEVBQUU7RUFBSyxDQUFDLENBQUMsV0FRMURMLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsVUFBVTtJQUFFSSxZQUFZLEVBQUU7RUFBRyxDQUFDLENBQUMsV0FRaERFLFdBQVcsQ0FBQztJQUFFTixJQUFJLEVBQUUsNEJBQTRCO0lBQUVPLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxXQWtCbkVDLEtBQUssRUFBRSxXQVVQQSxLQUFLLEVBQUUsV0FRUEEsS0FBSyxFQUFFLFdBcUJQQyxlQUFlLEVBQUUsV0FRakJBLGVBQWUsRUFBRSxXQUtqQkMsMEJBQTBCLENBQUMsc0JBQXNCLEVBQUUsdUJBQXVCLENBQUMsV0EwRDNFRCxlQUFlLEVBQUU7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtJQUFBO0lBQUE7SUE3SGxCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUxDLE9BTUFFLG1CQUFtQixHQUFuQiwrQkFBaUM7TUFBQTtNQUNoQyxPQUFPLHNCQUFJLENBQUNDLE9BQU8sMkVBQVosY0FBY0MsaUJBQWlCLENBQUMsVUFBVSxDQUFDLDBEQUEzQyxzQkFBNkNDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFJLEVBQUU7SUFDMUY7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEsT0EwQkFDLGdCQUFnQixHQUFoQiw0QkFBbUI7TUFDbEIsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ0MsYUFBYSxFQUFFLENBQUNDLE9BQU8sRUFBRTtNQUMzQyxNQUFNQyxvQkFBeUIsR0FBR0gsSUFBSSxDQUFDSCxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7TUFDcEUsTUFBTU8sS0FBSyxHQUFJLElBQUksQ0FBU0MsVUFBVSxFQUFFO01BQ3hDLE1BQU1DLGdCQUFxQixHQUFHLENBQUMsQ0FBQztNQUNoQyxNQUFNQyxnQkFBZ0IsR0FBR0gsS0FBSyxDQUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQy9DQyxTQUFTLEdBQUksR0FBRUYsZ0JBQWlCLE9BQU07UUFDdENHLGVBQWUsR0FBR1YsSUFBSSxDQUFDSCxpQkFBaUIsRUFBRTtNQUMzQ1MsZ0JBQWdCLENBQUNHLFNBQVMsQ0FBQyxHQUMxQkwsS0FBSyxDQUFDSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDRSxlQUFlLElBQUksQ0FBQ0EsZUFBZSxDQUFDQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7TUFDN0dSLG9CQUFvQixDQUFDUyxXQUFXLENBQUMsMkJBQTJCLEVBQUVOLGdCQUFnQixDQUFDO0lBQ2hGLENBQUM7SUFBQSxPQUVETywwQkFBMEIsR0FBMUIsb0NBQTJCQyxjQUF1QixFQUFTO01BQzFELE1BQU1DLE1BQU0sR0FBSSxJQUFJLENBQVNWLFVBQVUsRUFBRTtNQUN6QyxPQUFPVyxXQUFXLENBQUNDLHVCQUF1QixDQUFDSCxjQUFjLEVBQUVDLE1BQU0sQ0FBQztJQUNuRSxDQUFDO0lBQUEsT0FHREcscUJBQXFCLEdBRHJCLCtCQUNzQkMsTUFBbUQsRUFBUTtNQUNoRixNQUFNQyxLQUFLLEdBQUdELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDLE1BQU0sQ0FBQztNQUN6QyxNQUFNQyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0UsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFlBQVk7TUFDOURFLFlBQVksQ0FBQ0MsYUFBYSxDQUFDTCxNQUFNLENBQUM7TUFDakMsSUFBSSxDQUFTTSxtQkFBbUIsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQUVsQixJQUFJLEVBQUVZLEtBQUs7UUFBRU8sUUFBUSxFQUFFTDtNQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFBQSxPQUdETSx1QkFBdUIsR0FEdkIsbUNBQzBCO01BQ3hCLElBQUksQ0FBU0MsU0FBUyxDQUFDLHVCQUF1QixDQUFDO0lBQ2pELENBQUM7SUFBQSxPQUdEQyxxQkFBcUIsR0FEckIsK0JBQ3NCQyxLQUE2QixFQUFRO01BQzFELE1BQU1DLGtCQUFrQixHQUFHLElBQUksQ0FBQ3BDLE9BQU8sQ0FBQ3FDLFVBQVUsRUFBMkI7TUFDN0UsSUFBSUMsdUJBQXVCLENBQUNGLGtCQUFrQixDQUFDLEVBQUU7UUFDaERELEtBQUssQ0FBQ0ksSUFBSSxDQUNULENBQUMsWUFBa0M7VUFDbEMsTUFBTUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxvQkFBb0IsRUFBRTtVQUM5QyxPQUFPO1lBQ05ELElBQUksRUFBRUEsSUFBSTtZQUNWRSxLQUFLLEVBQUUsSUFBSSxDQUFDQyxlQUFlLEVBQUUsQ0FBQ0MsU0FBUyxFQUFFO1lBQ3pDQyxRQUFRLEVBQUUsSUFBSSxDQUFDQyx1Q0FBdUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7VUFDakUsQ0FBQztRQUNGLENBQUMsR0FBRyxDQUNKO01BQ0Y7SUFDRCxDQUFDO0lBQUEsT0FFREMsYUFBYSxHQUFiLHlCQUFnQjtNQUNmO01BQ0EsTUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ2pELE9BQThCO01BQ3BELElBQUlpRCxRQUFRLEVBQUU7UUFDYixJQUFJO1VBQUE7VUFDSCxNQUFNekMsS0FBSyw0QkFBSXlDLFFBQVEsQ0FBQ0Msa0JBQWtCLEVBQUUsMERBQTlCLHNCQUE2REMsYUFBYSxDQUFDRixRQUFRLENBQVU7VUFDM0csSUFBSXpDLEtBQUssRUFBRTtZQUNWLE1BQU00QyxXQUFXLEdBQUdDLFVBQVUsQ0FBQ0MsMkJBQTJCLENBQUM5QyxLQUFLLENBQUM7WUFDakUsTUFBTStDLFlBQVksR0FBR0gsV0FBVyxDQUFDSSxNQUFNLEdBQUcsSUFBSSxDQUFDQyxjQUFjLENBQUNELE1BQU07WUFDcEUsTUFBTUUsVUFBVSxHQUFHTixXQUFXLENBQUNJLE1BQU0sR0FBRyxJQUFJLENBQUNDLGNBQWMsQ0FBQ0QsTUFBTTtZQUNsRSxNQUFNRyxTQUFTLEdBQUdQLFdBQVcsQ0FBQ1EsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDSCxjQUFjLENBQUNHLFFBQVEsRUFBRTtZQUMzRSxJQUFJQyxRQUFrQjtZQUN0QixJQUFJSCxVQUFVLElBQUlOLFdBQVcsQ0FBQ0ksTUFBTSxLQUFLLENBQUMsRUFBRTtjQUMzQztjQUNBSyxRQUFRLEdBQUdSLFVBQVUsQ0FBQ1Msa0JBQWtCLENBQUNiLFFBQVEsRUFBRSxJQUFJLENBQWE7WUFDckUsQ0FBQyxNQUFNO2NBQ047Y0FDQTtjQUNBWSxRQUFRLEdBQUdSLFVBQVUsQ0FBQ1Msa0JBQWtCLENBQUNiLFFBQVEsQ0FBYTtZQUMvRDtZQUNBLElBQUlNLFlBQVksSUFBSUcsVUFBVSxFQUFFO2NBQy9CO2NBQ0EsSUFBSSxDQUFDRCxjQUFjLEdBQUdMLFdBQVc7Y0FDakMsT0FBT1MsUUFBUSxDQUFDTCxNQUFNLEdBQUcsQ0FBQztZQUMzQixDQUFDLE1BQU0sSUFBSUcsU0FBUyxFQUFFO2NBQ3JCO2NBQ0EsT0FBT0UsUUFBUSxDQUFDTCxNQUFNLEdBQUcsQ0FBQztZQUMzQjtVQUNEO1FBQ0QsQ0FBQyxDQUFDLE9BQU9PLEdBQVksRUFBRTtVQUN0QkMsR0FBRyxDQUFDQyxLQUFLLENBQUUsaURBQWdERixHQUFJLEVBQUMsQ0FBQztRQUNsRTtNQUNEO01BQ0EsT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEsT0FNTUcsMEJBQTBCLEdBRGhDLDRDQUNtQztNQUNsQyxJQUFJO1FBQ0gsTUFBTUMsY0FBYyxHQUFHLE1BQU1DLHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJRCxjQUFjLEVBQUU7VUFDbkJFLHVCQUF1QixDQUFDRixjQUFjLENBQUM7VUFDdkM7UUFDRDtNQUNELENBQUMsQ0FBQyxPQUFPRyxDQUFDLEVBQUU7UUFDWEMsdUJBQXVCLENBQUMsSUFBSSxDQUFDdkUsT0FBTyxDQUFDO1FBQ3JDZ0UsR0FBRyxDQUFDQyxLQUFLLENBQUNLLENBQUMsQ0FBVztNQUN2QjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBLE9BS2M3QixvQkFBb0IsR0FBbEMsc0NBQTREO01BQzNELE1BQU0wQixjQUFjLEdBQUcsTUFBTUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO01BQ3hELE9BQU9JLGVBQWUsQ0FBQ0wsY0FBYyxDQUFpQztJQUN2RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBLE9BTU1yQix1Q0FBdUMsR0FBN0MsdURBQThDTixJQUFrQixFQUFpQjtNQUNoRixJQUFJO1FBQ0gsSUFBSUEsSUFBSSxFQUFFO1VBQ1QsTUFBTWlDLG1DQUFtQyxDQUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQ25DLGFBQWEsRUFBRSxDQUFDcUUsb0JBQW9CLENBQUNDLFVBQVUsRUFBRSxDQUFDO1VBQ3ZHO1FBQ0Q7TUFDRCxDQUFDLENBQUMsT0FBT0wsQ0FBQyxFQUFFO1FBQ1hDLHVCQUF1QixDQUFDLElBQUksQ0FBQ3ZFLE9BQU8sQ0FBQztRQUNyQ2dFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDSyxDQUFDLENBQVc7TUFDdkI7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQSxPQUtBTSxTQUFTLEdBQVQscUJBQWdDO01BQy9CLE1BQU1DLGVBQWUsR0FBR3hCLFVBQVUsQ0FBQ3lCLGdCQUFnQixDQUFDLElBQUksQ0FBQzlFLE9BQU8sQ0FBd0I7TUFDeEYsSUFBSTZFLGVBQWUsQ0FBQ0UsT0FBTyxDQUFDdkIsTUFBTSxFQUFFO1FBQ25DcUIsZUFBZSxDQUFDRSxPQUFPLEdBQUdDLFdBQVcsQ0FBQ0MsaUNBQWlDLENBQUNKLGVBQWUsQ0FBQ0UsT0FBTyxDQUFDO1FBQ2hHLE9BQU8sSUFBSUcsTUFBTSxDQUFDO1VBQUVILE9BQU8sRUFBRUYsZUFBZSxDQUFDRSxPQUFPO1VBQUVJLEdBQUcsRUFBRTtRQUFLLENBQUMsQ0FBQztNQUNuRTtNQUNBLE9BQU9DLFNBQVM7SUFDakI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEsT0FLQXpDLGVBQWUsR0FBZiwyQkFBNEI7TUFDM0IsT0FBTyxJQUFJLENBQUMzQyxPQUFPO0lBQ3BCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUEsT0FPQXFGLHFCQUFxQixHQUFyQiwrQkFBc0JDLGFBQXFCLEVBQThCO01BQ3hFLE1BQU1DLFFBQVEsR0FBRyxJQUFJLENBQUN2RixPQUFPLENBQUNZLElBQUksQ0FBQyxzQkFBc0IsQ0FBVztNQUNwRSxNQUFNNEUsU0FBUyxHQUFJLElBQUksQ0FBQ3hGLE9BQU8sQ0FBQ3lGLFFBQVEsRUFBRSxDQUFnQkMsWUFBWSxFQUFFO01BQ3hFLE1BQU1DLGdCQUFnQixHQUFHSCxTQUFTLENBQUNJLG9CQUFvQixDQUFFLEdBQUVMLFFBQVMsSUFBR0QsYUFBYyxFQUFDLENBQVk7TUFDbEcsT0FBT08sMkJBQTJCLENBQUNGLGdCQUFnQixDQUFDO0lBQ3JELENBQUM7SUFBQTtFQUFBLEVBN1RxQkcsUUFBUTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0VBQUEsT0ErVGhCOUcsUUFBUTtBQUFBIn0=
|
|
355
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydEFQSSIsImRlZmluZVVJNUNsYXNzIiwicmV0dXJuVHlwZXMiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiZGVmYXVsdFZhbHVlIiwiYWxsb3dlZFZhbHVlcyIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJldmVudCIsInhtbEV2ZW50SGFuZGxlciIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImNvbnRlbnQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5Iiwib25BZnRlclJlbmRlcmluZyIsInZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiY2hhcnQiLCJnZXRDb250ZW50Iiwic2hvd01lc3NhZ2VTdHJpcCIsInNDaGFydEVudGl0eVBhdGgiLCJkYXRhIiwic0NhY2hlS2V5Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0T2JqZWN0Iiwic2V0UHJvcGVydHkiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm9GaWx0ZXJDb250cm9sIiwib0NoYXJ0IiwiRmlsdGVyVXRpbHMiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsIm9FdmVudCIsImFEYXRhIiwiZ2V0UGFyYW1ldGVyIiwiYlNlbGVjdGVkIiwiQ2hhcnRSdW50aW1lIiwiZm5VcGRhdGVDaGFydCIsImZpcmVTZWxlY3Rpb25DaGFuZ2UiLCJtZXJnZSIsInNlbGVjdGVkIiwib25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQiLCJmaXJlRXZlbnQiLCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHMiLCJjYXJkcyIsImFjdGlvblRvb2xiYXJJdGVtcyIsImdldEFjdGlvbnMiLCJoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCIsImdldEZpbHRlciIsInVuZGVmaW5lZCIsInB1c2giLCJjYXJkIiwiZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQiLCJ0aXRsZSIsImdldENoYXJ0Q29udHJvbCIsImdldEhlYWRlciIsImNhbGxiYWNrIiwib25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrIiwiYmluZCIsImhhc1NlbGVjdGlvbnMiLCJtZGNDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJhRGltZW5zaW9ucyIsIkNoYXJ0VXRpbHMiLCJnZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2siLCJiSXNEcmlsbERvd24iLCJsZW5ndGgiLCJwcmV2RHJpbGxTdGFjayIsImJJc0RyaWxsVXAiLCJiTm9DaGFuZ2UiLCJ0b1N0cmluZyIsImFGaWx0ZXJzIiwiZ2V0Q2hhcnRTZWxlY3Rpb25zIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsImluc2lnaHRzUGFyYW1zIiwiY3JlYXRlQ2hhcnRDYXJkUGFyYW1zIiwic2hvd0luc2lnaHRzQ2FyZFByZXZpZXciLCJlIiwic2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UiLCJnZXRDYXJkTWFuaWZlc3QiLCJzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyIsImNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZ2V0U2VydmljZSIsImNoYXJ0RmlsdGVySW5mbyIsImdldEFsbEZpbHRlckluZm8iLCJmaWx0ZXJzIiwiQ29tbW9uVXRpbHMiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJnZXREaW1lbnNpb25EYXRhTW9kZWwiLCJkaW1lbnNpb25OYW1lIiwibWV0YVBhdGgiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImRpbWVuc2lvbkNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIk1hY3JvQVBJIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydEFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC9jaGFydC9DaGFydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHksIHhtbEV2ZW50SGFuZGxlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBXcmFwcGVkQ2FyZCB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCBDaGFydFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRSdW50aW1lXCI7XG5pbXBvcnQgQ2hhcnRVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9DaGFydFV0aWxzXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBNRENDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnREZWxlZ2F0ZSBmcm9tIFwic2FwL3VpL21kYy9DaGFydERlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDaGFydENhcmRQYXJhbXMgfSBmcm9tIFwiLi4vaW5zaWdodHMvQW5hbHl0aWNhbEluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCwgc2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCB7IGdldENhcmRNYW5pZmVzdCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcsIHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IH0gZnJvbSBcIi4uL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuLyoqXG4gKiBEZWZpbml0aW9uIG9mIGEgY3VzdG9tIGFjdGlvbiB0byBiZSB1c2VkIGluIHRoZSBjaGFydCB0b29sYmFyXG4gKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuY2hhcnQuQWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcblx0LyoqXG5cdCAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0a2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGlzIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR0ZXh0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIGtleSBvZiBhbm90aGVyIGFjdGlvbiBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdG9vbGJhciB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXJlIHRoaXMgYWN0aW9uIHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIGRlZmluZWQgYW5jaG9yXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmVmb3JlYCBhbmQgYEFmdGVyYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwbGFjZW1lbnQ/OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiO1xuXHQvKipcblx0ICogRGVmaW5lcyBpZiB0aGUgYWN0aW9uIHJlcXVpcmVzIGEgc2VsZWN0aW9uLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZXF1aXJlc1NlbGVjdGlvbj86IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgdGhlIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwcmVzczogc3RyaW5nO1xuXHQvKipcblx0ICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYWN0aW9uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGVuYWJsZWQ/OiBib29sZWFuO1xufTtcbi8qKlxuICogRGVmaW5pdGlvbiBvZiBhIGN1c3RvbSBhY3Rpb24gZ3JvdXAgdG8gYmUgdXNlZCBpbnNpZGUgdGhlIGNoYXJ0IHRvb2xiYXJcbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBBY3Rpb25Hcm91cCA9IHtcblx0LyoqXG5cdCAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0a2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIG5lc3RlZCBhY3Rpb25zXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFjdGlvbnM6IEFjdGlvbltdO1xuXHQvKipcblx0ICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhpcyBhY3Rpb24gZ3JvdXBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dGV4dDogc3RyaW5nO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGVyZSB0aGlzIGFjdGlvbiBncm91cCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSBkZWZpbmVkIGFuY2hvclxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEJlZm9yZWAgYW5kIGBBZnRlcmBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cGxhY2VtZW50PzogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIjtcblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUga2V5IG9mIGFub3RoZXIgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdG9vbGJhciB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgY2hhcnQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOkNoYXJ0IGlkPVwiTXljaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCIsIHsgcmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIl0gfSlcbmNsYXNzIENoYXJ0QVBJIGV4dGVuZHMgTWFjcm9BUEkge1xuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIl1cblx0fSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0c2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogIC0gU29ydDxici8+XG5cdCAqICAtIFR5cGU8YnIvPlxuXHQgKiAgLSBJdGVtPGJyLz5cblx0ICogIC0gRmlsdGVyPGJyLz5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuIHwgc3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24hOiBib29sZWFuIHwgc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdbXVwiLCBkZWZhdWx0VmFsdWU6IFtdIH0pXG5cdHByZXZEcmlsbFN0YWNrITogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBhY3Rpb25zIG9mIHRoZSBjaGFydC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkFjdGlvblwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRhY3Rpb25zITogQWN0aW9uW107XG5cblx0LyoqXG5cdCAqIEdldHMgY29udGV4dHMgZnJvbSB0aGUgY2hhcnQgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG5cdCAqXG5cdCAqIEByZXR1cm5zIENvbnRleHRzIG9mIHRoZSByb3dzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIikgfHwgW107XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQgc2VsZWN0aW9ucyBhcmUgY2hhbmdlZC4gVGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIHNlbGVjdGVkL2Rlc2VsZWN0ZWQgYW5kIHRoZSBCb29sZWFuIGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBkYXRhIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgY2hhcnQgc3RhdGUgY2hhbmdlcy5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBzdG9yZSB0aGUgY2hhcnQgc3RhdGUgaW4gdGhlIGlBcHBzdGF0ZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHN0YXRlQ2hhbmdlITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBjaGFydCByZXF1ZXN0cyBkYXRhLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0aW50ZXJuYWxEYXRhUmVxdWVzdGVkITogRnVuY3Rpb247XG5cblx0b25BZnRlclJlbmRlcmluZygpIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRDb250cm9sbGVyKCkuZ2V0VmlldygpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0OiBhbnkgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgY2hhcnQgPSAodGhpcyBhcyBhbnkpLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBzaG93TWVzc2FnZVN0cmlwOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdHNob3dNZXNzYWdlU3RyaXBbc0NhY2hlS2V5XSA9XG5cdFx0XHRjaGFydC5kYXRhKFwiZHJhZnRTdXBwb3J0ZWRcIikgPT09IFwidHJ1ZVwiICYmICEhb0JpbmRpbmdDb250ZXh0ICYmICFvQmluZGluZ0NvbnRleHQuZ2V0T2JqZWN0KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb250cm9scy9zaG93TWVzc2FnZVN0cmlwXCIsIHNob3dNZXNzYWdlU3RyaXApO1xuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBhbnlbXSB7XG5cdFx0Y29uc3Qgb0NoYXJ0ID0gKHRoaXMgYXMgYW55KS5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sLCBvQ2hhcnQpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGhhbmRsZVNlbGVjdGlvbkNoYW5nZShvRXZlbnQ6IFVJNUV2ZW50PHsgZGF0YTogdW5rbm93bltdOyBuYW1lOiBzdHJpbmcgfT4pOiB2b2lkIHtcblx0XHRjb25zdCBhRGF0YSA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJkYXRhXCIpO1xuXHRcdGNvbnN0IGJTZWxlY3RlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJuYW1lXCIpID09PSBcInNlbGVjdERhdGFcIjtcblx0XHRDaGFydFJ1bnRpbWUuZm5VcGRhdGVDaGFydChvRXZlbnQpO1xuXHRcdCh0aGlzIGFzIGFueSkuZmlyZVNlbGVjdGlvbkNoYW5nZShtZXJnZSh7fSwgeyBkYXRhOiBhRGF0YSwgc2VsZWN0ZWQ6IGJTZWxlY3RlZCB9KSk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQoKSB7XG5cdFx0KHRoaXMgYXMgYW55KS5maXJlRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIik7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRjb2xsZWN0QXZhaWxhYmxlQ2FyZHMoY2FyZHM6IFByb21pc2U8V3JhcHBlZENhcmQ+W10pOiB2b2lkIHtcblx0XHRjb25zdCBhY3Rpb25Ub29sYmFySXRlbXMgPSB0aGlzLmNvbnRlbnQuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRpZiAoaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQoYWN0aW9uVG9vbGJhckl0ZW1zLCB0aGlzLmNvbnRlbnQuZ2V0RmlsdGVyKCksIHVuZGVmaW5lZCkpIHtcblx0XHRcdGNhcmRzLnB1c2goXG5cdFx0XHRcdChhc3luYyAoKTogUHJvbWlzZTxXcmFwcGVkQ2FyZD4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNhcmQgPSBhd2FpdCB0aGlzLmdldENhcmRNYW5pZmVzdENoYXJ0KCk7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGNhcmQ6IGNhcmQsXG5cdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5nZXRDaGFydENvbnRyb2woKS5nZXRIZWFkZXIoKSxcblx0XHRcdFx0XHRcdGNhbGxiYWNrOiB0aGlzLm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjay5iaW5kKHRoaXMpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSkoKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRoYXNTZWxlY3Rpb25zKCkge1xuXHRcdC8vIGNvbnNpZGVyIGNoYXJ0IHNlbGVjdGlvbnMgaW4gdGhlIGN1cnJlbnQgZHJpbGwgc3RhY2sgb3Igb24gYW55IGZ1cnRoZXIgZHJpbGwgZG93bnNcblx0XHRjb25zdCBtZGNDaGFydCA9IHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE1EQ0NoYXJ0O1xuXHRcdGlmIChtZGNDaGFydCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY2hhcnQgPSAobWRjQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkgYXMgdW5rbm93biBhcyBDaGFydERlbGVnYXRlKT8uZ2V0SW5uZXJDaGFydChtZGNDaGFydCkgYXMgQ2hhcnQ7XG5cdFx0XHRcdGlmIChjaGFydCkge1xuXHRcdFx0XHRcdGNvbnN0IGFEaW1lbnNpb25zID0gQ2hhcnRVdGlscy5nZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2soY2hhcnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsRG93biA9IGFEaW1lbnNpb25zLmxlbmd0aCA+IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsVXAgPSBhRGltZW5zaW9ucy5sZW5ndGggPCB0aGlzLnByZXZEcmlsbFN0YWNrLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBiTm9DaGFuZ2UgPSBhRGltZW5zaW9ucy50b1N0cmluZygpID09PSB0aGlzLnByZXZEcmlsbFN0YWNrLnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXTtcblx0XHRcdFx0XHRpZiAoYklzRHJpbGxVcCAmJiBhRGltZW5zaW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGRyaWxsaW5nIHVwIHRvIGxldmVsMCB3b3VsZCBjbGVhciBhbGwgc2VsZWN0aW9uc1xuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCwgdHJ1ZSkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGFwcGx5IGZpbHRlcnMgb2Ygc2VsZWN0aW9ucyBvZiBwcmV2aW91cyBkcmlsbHN0YWNrIHdoZW4gZHJpbGxpbmcgdXAvZG93blxuXHRcdFx0XHRcdFx0Ly8gdG8gdGhlIGNoYXJ0IGFuZCB0YWJsZVxuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChiSXNEcmlsbERvd24gfHwgYklzRHJpbGxVcCkge1xuXHRcdFx0XHRcdFx0Ly8gdXBkYXRlIHRoZSBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd25cblx0XHRcdFx0XHRcdHRoaXMucHJldkRyaWxsU3RhY2sgPSBhRGltZW5zaW9ucztcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYk5vQ2hhbmdlKSB7XG5cdFx0XHRcdFx0XHQvLyBiTm9DaGFuZ2UgaXMgdHJ1ZSB3aGVuIGNoYXJ0IGlzIHNlbGVjdGVkXG5cdFx0XHRcdFx0XHRyZXR1cm4gYUZpbHRlcnMubGVuZ3RoID4gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIGNoZWNraW5nIGZvciBzZWxlY3Rpb25zIGluIENoYXJ0OiAke2Vycn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIGNoYXJ0cy5cblx0ICpcblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSBhd2FpdCBjcmVhdGVDaGFydENhcmRQYXJhbXModGhpcyk7XG5cdFx0XHRpZiAoaW5zaWdodHNQYXJhbXMpIHtcblx0XHRcdFx0c2hvd0luc2lnaHRzQ2FyZFByZXZpZXcoaW5zaWdodHNQYXJhbXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNhcmQgbWFuaWZlc3Qgb3B0aW1pemVkIGZvciB0aGUgY2hhcnQgY2FzZS5cblx0ICpcblx0ICogQHJldHVybnMgUHJvbWlzZSBvZiBDYXJkTWFuaWZlc3Rcblx0ICovXG5cdHByaXZhdGUgYXN5bmMgZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTogUHJvbWlzZTxDYXJkTWFuaWZlc3Q+IHtcblx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRyZXR1cm4gZ2V0Q2FyZE1hbmlmZXN0KGluc2lnaHRzUGFyYW1zIGFzIEluc2lnaHRzUGFyYW1zPENoYXJ0Q29udGVudD4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2FyZCBUaGUgY2FyZCBtYW5pZmVzdCB0byBiZSB1c2VkIGZvciB0aGUgY2FsbGJhY2tcblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayhjYXJkOiBDYXJkTWFuaWZlc3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKGNhcmQpIHtcblx0XHRcdFx0YXdhaXQgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcoY2FyZCwgdGhpcy5nZXRDb250cm9sbGVyKCkuY29sbGFib3JhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuY29udGVudCk7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWx0ZXJzIHJlbGF0ZWQgdG8gdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyAgVGhlIGZpbHRlciBjb25maWd1cmVkIG9uIHRoZSBjaGFydCBvciB1bmRlZmluZWQgaWYgbm9uZVxuXHQgKi9cblx0Z2V0RmlsdGVyKCk6IEZpbHRlciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgY2hhcnRGaWx0ZXJJbmZvID0gQ2hhcnRVdGlscy5nZXRBbGxGaWx0ZXJJbmZvKHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE1EQ0NoYXJ0KTtcblx0XHRpZiAoY2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMubGVuZ3RoKSB7XG5cdFx0XHRjaGFydEZpbHRlckluZm8uZmlsdGVycyA9IENvbW1vblV0aWxzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhjaGFydEZpbHRlckluZm8uZmlsdGVycyk7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcih7IGZpbHRlcnM6IGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLCBhbmQ6IHRydWUgfSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2hhcnQgY29udHJvbCBmcm9tIHRoZSBDaGFydCBBUEkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBDaGFydCBjb250cm9sIGluc2lkZSB0aGUgQ2hhcnQgQVBJXG5cdCAqL1xuXHRnZXRDaGFydENvbnRyb2woKTogTURDQ2hhcnQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgZGltZW5zaW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gZGltZW5zaW9uTmFtZSAgTmFtZSBvZiB0aGUgZGltZW5zaW9uXG5cdCAqIEByZXR1cm5zIFRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb25cblx0ICovXG5cblx0Z2V0RGltZW5zaW9uRGF0YU1vZGVsKGRpbWVuc2lvbk5hbWU6IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGggfCBudWxsIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMuY29udGVudC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIikgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9ICh0aGlzLmNvbnRlbnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBkaW1lbnNpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke21ldGFQYXRofS8ke2RpbWVuc2lvbk5hbWV9YCkgYXMgQ29udGV4dDtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKGRpbWVuc2lvbkNvbnRleHQpO1xuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBDaGFydEFQSTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFiQSxJQWVNQSxRQUFRLFdBRGJDLGNBQWMsQ0FBQyw4QkFBOEIsRUFBRTtJQUFFQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0I7RUFBRSxDQUFDLENBQUMsVUFPMUZDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsVUFRNUJELFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQztJQUM3RUMsbUJBQW1CLEVBQUUsQ0FBQyxrQ0FBa0M7RUFDekQsQ0FBQyxDQUFDLFVBUURKLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFF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QUcsQ0FBQ0MsS0FBSyxDQUFDSyxDQUFDLENBQVc7TUFDdkI7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQSxPQUtBakMsU0FBUyxHQUFULHFCQUFnQztNQUMvQixNQUFNdUMsZUFBZSxHQUFHdkIsVUFBVSxDQUFDd0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDL0UsT0FBTyxDQUF3QjtNQUN4RixJQUFJOEUsZUFBZSxDQUFDRSxPQUFPLENBQUN0QixNQUFNLEVBQUU7UUFDbkNvQixlQUFlLENBQUNFLE9BQU8sR0FBR0MsV0FBVyxDQUFDQyxpQ0FBaUMsQ0FBQ0osZUFBZSxDQUFDRSxPQUFPLENBQUM7UUFDaEcsT0FBTyxJQUFJRyxNQUFNLENBQUM7VUFBRUgsT0FBTyxFQUFFRixlQUFlLENBQUNFLE9BQU87VUFBRUksR0FBRyxFQUFFO1FBQUssQ0FBQyxDQUFDO01BQ25FO01BQ0EsT0FBTzVDLFNBQVM7SUFDakI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEsT0FLQUssZUFBZSxHQUFmLDJCQUE0QjtNQUMzQixPQUFPLElBQUksQ0FBQzdDLE9BQU87SUFDcEI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQSxPQU9BcUYscUJBQXFCLEdBQXJCLCtCQUFzQkMsYUFBcUIsRUFBOEI7TUFDeEUsTUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ3ZGLE9BQU8sQ0FBQ1ksSUFBSSxDQUFDLHNCQUFzQixDQUFXO01BQ3BFLE1BQU00RSxTQUFTLEdBQUksSUFBSSxDQUFDeEYsT0FBTyxDQUFDeUYsUUFBUSxFQUFFLENBQWdCQyxZQUFZLEVBQUU7TUFDeEUsTUFBTUMsZ0JBQWdCLEdBQUdILFNBQVMsQ0FBQ0ksb0JBQW9CLENBQUUsR0FBRUwsUUFBUyxJQUFHRCxhQUFjLEVBQUMsQ0FBWTtNQUNsRyxPQUFPTywyQkFBMkIsQ0FBQ0YsZ0JBQWdCLENBQUM7SUFDckQsQ0FBQztJQUFBO0VBQUEsRUE3VHFCRyxRQUFRO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7RUFBQSxPQStUaEI5RyxRQUFRO0FBQUEifQ==
|
|
@@ -317,7 +317,7 @@ class ChartAPI extends MacroAPI {
|
|
|
317
317
|
@controllerExtensionHandler("collaborationManager", "collectAvailableCards")
|
|
318
318
|
collectAvailableCards(cards: Promise<WrappedCard>[]): void {
|
|
319
319
|
const actionToolbarItems = this.content.getActions() as ActionToolbarAction[];
|
|
320
|
-
if (hasInsightActionEnabled(actionToolbarItems)) {
|
|
320
|
+
if (hasInsightActionEnabled(actionToolbarItems, this.content.getFilter(), undefined)) {
|
|
321
321
|
cards.push(
|
|
322
322
|
(async (): Promise<WrappedCard> => {
|
|
323
323
|
const card = await this.getCardManifestChart();
|
|
@@ -129,7 +129,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/mdc/field/Fiel
|
|
|
129
129
|
const sourcePath = (_parameter$LocalDataP4 = parameter.LocalDataProperty) === null || _parameter$LocalDataP4 === void 0 ? void 0 : _parameter$LocalDataP4.$PropertyPath;
|
|
130
130
|
const conditionPayload = valuehelpConditionPayload === null || valuehelpConditionPayload === void 0 ? void 0 : valuehelpConditionPayload[0];
|
|
131
131
|
filterValue = sourcePath && (conditionPayload === null || conditionPayload === void 0 ? void 0 : conditionPayload[sourcePath]);
|
|
132
|
-
} else if (bindingContext
|
|
132
|
+
} else if (bindingContext) {
|
|
133
133
|
var _parameter$LocalDataP5;
|
|
134
134
|
// if the value help is not used try getting the filter value from the binding context
|
|
135
135
|
const sourcePath = (_parameter$LocalDataP5 = parameter.LocalDataProperty) === null || _parameter$LocalDataP5 === void 0 ? void 0 : _parameter$LocalDataP5.$PropertyPath;
|
|
@@ -262,4 +262,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/mdc/field/Fiel
|
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
264
|
}, false);
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJhc3NpZ24iLCJGaWVsZEJhc2VEZWxlZ2F0ZSIsImFwaVZlcnNpb24iLCJpbml0aWFsaXplVHlwZUZyb21CaW5kaW5nIiwiZmllbGQiLCJ0eXBlIiwidmFsdWUiLCJyZXN1bHQiLCJpc0EiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmb3JtYXRWYWx1ZSIsImJUeXBlSW5pdGlhbGl6ZWQiLCJtQ3VzdG9tVW5pdHMiLCJpbml0aWFsaXplSW50ZXJuYWxVbml0VHlwZSIsInR5cGVJbml0aWFsaXphdGlvbiIsImVuaGFuY2VWYWx1ZUZvclVuaXQiLCJ2YWx1ZXMiLCJwdXNoIiwiZ2V0RGVmYXVsdFZhbHVlSGVscERlbGVnYXRlIiwiX2ZpZWxkIiwibmFtZSIsInBheWxvYWQiLCJnZXRUeXBlTWFwIiwiVHlwZU1hcCIsIl9nZXRWYWx1ZUxpc3RQYXJhbWV0ZXIiLCJ2YWx1ZUxpc3RJbmZvIiwicHJvcGVydHlOYW1lIiwiUGFyYW1ldGVycyIsImZpbHRlciIsImVudHJ5IiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiX2dldEZpbHRlciIsInZhbHVlTGlzdCIsInZhbHVlSGVscFByb3BlcnR5Iiwia2V5VmFsdWUiLCJ2YWx1ZWhlbHBQYXlsb2FkIiwidmFsdWVoZWxwQ29uZGl0aW9uUGF5bG9hZCIsImJpbmRpbmdDb250ZXh0IiwiZmlsdGVycyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCIkVHlwZSIsIlZhbHVlTGlzdFByb3BlcnR5IiwiZmlsdGVyVmFsdWUiLCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZyIsImFwZEZpZWxkUGF0aCIsImFwZEZpZWxkIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiYnlJZCIsImdldFZhbHVlIiwic291cmNlUGF0aCIsImNvbmRpdGlvblBheWxvYWQiLCJnZXRPYmplY3QiLCJGaWx0ZXIiLCJwYXRoIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJnZXRJdGVtRm9yVmFsdWUiLCJ2YWx1ZUhlbHAiLCJjb25maWciLCJjaGVja0Rlc2NyaXB0aW9uIiwiZ2V0UGF5bG9hZCIsImRlc2NyaXB0aW9uUGF0aCIsInZhbHVlSGVscERlc2NyaXB0aW9uUGF0aCIsIm1heExlbmd0aCIsInZhbHVlTGVuZ3RoIiwidG9TdHJpbmciLCJnZXREZXNjcmlwdGlvbiIsImtleSIsIl9jb25kaXRpb25JbiIsIl9jb25kaXRpb25PdXQiLCJfQ29uZGl0aW9uTW9kZWwiLCJfY29uZGl0aW9uTW9kZWxOYW1lIiwiY29udHJvbCIsIl90eXBlIiwiZ2V0RGlzcGxheSIsImluY2x1ZGVzIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImlzRmlsdGVyRmllbGQiLCJkYXRhTW9kZWwiLCJnZXRNb2RlbCIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwidmFsdWVIZWxwUXVhbGlmaWVyIiwicHJvcGVydHlQYXRoIiwicHJvcGVydHlEZXNjcmlwdGlvblBhdGgiLCJ0ZXh0UHJvcGVydHkiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsImtleXMiLCJ2YWx1ZUhlbHBQYXJhbWV0ZXJzIiwiRXJyb3IiLCJ2YWx1ZUxpc3RNb2RlbCIsIiRtb2RlbCIsInRleHRBbm5vdGF0aW9uIiwiQ29sbGVjdGlvblBhdGgiLCIkUGF0aCIsImxpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkc2VsZWN0IiwiY29udGV4dHMiLCJyZXF1ZXN0Q29udGV4dHMiLCJsYXN0SW5kZXgiLCJsYXN0SW5kZXhPZiIsInNpZGVFZmZlY3RQYXRoIiwic3Vic3RyaW5nIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiTG9nIiwid2FybmluZyIsImVycm9yIiwic3RhdHVzIiwibWVzc2FnZSIsIlN0cmluZyIsIm1zZyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRCYXNlRGVsZWdhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSxcblx0QW5ub3RhdGlvblZhbHVlTGlzdFR5cGVCeVF1YWxpZmllcixcblx0VmFsdWVIZWxwUGF5bG9hZFxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgVmFsdWVIZWxwIGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBJdGVtRm9yVmFsdWVDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgdHlwZSBDb25kaXRpb25Nb2RlbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uTW9kZWxcIjtcbmltcG9ydCB0eXBlIEZpZWxkQmFzZSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCBGaWVsZEJhc2VEZWxlZ2F0ZSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VEZWxlZ2F0ZVwiO1xuaW1wb3J0IFR5cGVNYXAgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvVHlwZU1hcFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgU2ltcGxlVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL1NpbXBsZVR5cGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25QYXlsb2FkTWFwLCBDb25kaXRpb25QYXlsb2FkVHlwZSB9IGZyb20gXCIuLi92YWx1ZWhlbHAvVmFsdWVIZWxwRGVsZWdhdGVcIjtcbmV4cG9ydCB0eXBlIEZpZWxkUGF5bG9hZCA9IHtcblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdD86IGJvb2xlYW47XG5cdGlzRmlsdGVyRmllbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsdWUgPSBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFR5cGVJbml0aWFsaXphdGlvbiA9IHtcblx0YlR5cGVJbml0aWFsaXplZD86IGJvb2xlYW47XG5cdG1DdXN0b21Vbml0cz86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IHtcblx0dmFsdWU6IFZhbHVlO1xuXHRwYXJzZWRWYWx1ZTogVmFsdWU7XG5cdGJpbmRpbmdDb250ZXh0OiBDb250ZXh0O1xuXHRjaGVja0tleTogYm9vbGVhbjtcblx0Y2hlY2tEZXNjcmlwdGlvbjogYm9vbGVhbjtcblx0Y29uZGl0aW9uTW9kZWw/OiBDb25kaXRpb25Nb2RlbDtcblx0Y29uZGl0aW9uTW9kZWxOYW1lPzogc3RyaW5nO1xuXHRjb250cm9sPzogb2JqZWN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbih7fSwgRmllbGRCYXNlRGVsZWdhdGUsIHtcblx0YXBpVmVyc2lvbjogMixcblxuXHQvKipcblx0ICogSWYgdGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBjb250cm9sIGlzIHVzZWQsIHRoZSB1c2VkIGRhdGEgdHlwZSBtaWdodCBjb21lIGZyb20gdGhlIGJpbmRpbmcuXG5cdCAqIEluIFY0LXVuaXQgb3IgY3VycmVuY3kgY2FzZSBpdCBtaWdodCBuZWVkIHRvIGJlIGZvcm1hdHRlZCBvbmNlLlxuXHQgKiBUbyBpbml0aWFsaXplIHRoZSBpbnRlcm5hbCB0eXBlIGxhdGVyIG9uLCB0aGUgY3VycmVuY2llcyBtdXN0IGJlIHJldHVybmVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBUeXBlIGZyb20gYmluZGluZ1xuXHQgKiBAcGFyYW0gdmFsdWUgR2l2ZW4gdmFsdWVcblx0ICogQHJldHVybnMgSW5mb3JtYXRpb24gbmVlZGVkIHRvIGluaXRpYWxpemUgaW50ZXJuYWwgdHlwZSAobmVlZHMgdG8gc2V0IGJUeXBlSW5pdGlhbGl6ZWQgdG8gdHJ1ZSBpZiBpbml0aWFsaXplZClcblx0ICovXG5cdGluaXRpYWxpemVUeXBlRnJvbUJpbmRpbmc6IGZ1bmN0aW9uIChmaWVsZDogRmllbGQsIHR5cGU6IFNpbXBsZVR5cGUgfCB1bmRlZmluZWQsIHZhbHVlOiBWYWx1ZSB8IFZhbHVlW10pIHtcblx0XHQvLyBWNCBVbml0IGFuZCBDdXJyZW5jeSB0eXBlcyBoYXZlIGEgbWFwIHdpdGggdmFsaWQgdW5pdHMgYW5kIGNyZWF0ZSBhbiBpbnRlcm5hbCBjdXN0b21pemluZyBmb3IgaXQuXG5cdFx0Ly8gVGhlIEZpZWxkIG5lZWRzIHRvIGtlZXAgdGhpcyBjdXN0b21pemluZyBsb2dpYyB3aGVuIGNyZWF0aW5nIHRoZSBpbnRlcm5hbCB0eXBlLlxuXHRcdC8vIChBcyBleHRlcm5hbCBSQVcgYmluZGluZyBpcyB1c2VkIHRoZXJlIGlzIG5vIGZvcm1hdHRpbmcgb24gcGFyc2luZy4pXG5cblx0XHRjb25zdCByZXN1bHQ6IFR5cGVJbml0aWFsaXphdGlvbiA9IHt9O1xuXHRcdGlmIChcblx0XHRcdHR5cGUgJiZcblx0XHRcdHR5cGUuaXNBKFtcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIiwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiXSkgJiZcblx0XHRcdEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG5cdFx0XHR2YWx1ZS5sZW5ndGggPiAyICYmXG5cdFx0XHR2YWx1ZVsyXSAhPT0gdW5kZWZpbmVkXG5cdFx0KSB7XG5cdFx0XHQvLyBmb3JtYXQgb25jZSB0byBzZXQgaW50ZXJuYWwgY3VzdG9taXppbmcuIEFsbG93IG51bGwgYXMgdmFsaWQgdmFsdWVzIGZvciBjdXN0b20gdW5pdHNcblx0XHRcdHR5cGUuZm9ybWF0VmFsdWUodmFsdWUsIFwic3RyaW5nXCIpO1xuXHRcdFx0cmVzdWx0LmJUeXBlSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRcdFx0cmVzdWx0Lm1DdXN0b21Vbml0cyA9IHZhbHVlWzJdIGFzIHN0cmluZzsgLy8gVE9ETzogZmluZCBhIGJldHRlciB3YXkgdG8gcHJvdmlkZSBjdXN0b20gdW5pdHMgdG8gaW50ZXJuYWwgdHlwZVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHVuaXQgdHlwZS5cblx0ICogSWYgdGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBjb250cm9sIGlzIHVzZWQsIHRoZSB1c2VkIGRhdGEgdHlwZSBtaWdodCBjb21lIGZyb20gdGhlIGJpbmRpbmcuXG5cdCAqIElmIHRoZSB0eXBlIGlzIGEgVjQgdW5pdCBvciBjdXJyZW5jeSwgaXQgbWlnaHQgbmVlZCB0byBiZSBmb3JtYXR0ZWQgb25jZS5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gaW5zdGFuY2Vcblx0ICogQHBhcmFtIHR5cGUgVHlwZSBmcm9tIGJpbmRpbmdcblx0ICogQHBhcmFtIHR5cGVJbml0aWFsaXphdGlvbiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBpbnRlcm5hbCB0eXBlXG5cdCAqL1xuXHRpbml0aWFsaXplSW50ZXJuYWxVbml0VHlwZTogZnVuY3Rpb24gKGZpZWxkOiBGaWVsZCwgdHlwZTogU2ltcGxlVHlwZSwgdHlwZUluaXRpYWxpemF0aW9uPzogVHlwZUluaXRpYWxpemF0aW9uKSB7XG5cdFx0aWYgKHR5cGVJbml0aWFsaXphdGlvbj8ubUN1c3RvbVVuaXRzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIGlmIGFscmVhZHkgaW5pdGlhbGl6ZWQgaW5pdGlhbGl6ZSBuZXcgdHlwZSB0b28uXG5cdFx0XHR0eXBlLmZvcm1hdFZhbHVlKFtudWxsLCBudWxsLCB0eXBlSW5pdGlhbGl6YXRpb24ubUN1c3RvbVVuaXRzXSwgXCJzdHJpbmdcIik7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGVuaGFuY2VzIHRoZSB2YWx1ZSB3aXRoIHVuaXQgb3IgY3VycmVuY3kgaW5mb3JtYXRpb24gaWYgbmVlZGVkIGJ5IHRoZSBkYXRhIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWVsZCBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IGluc3RhbmNlXG5cdCAqIEBwYXJhbSAgdmFsdWVzIFZhbHVlc1xuXHQgKiBAcGFyYW0gIHR5cGVJbml0aWFsaXphdGlvbiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBpbnRlcm5hbCB0eXBlXG5cdCAqIEByZXR1cm5zIFZhbHVlc1xuXHQgKi9cblx0ZW5oYW5jZVZhbHVlRm9yVW5pdDogZnVuY3Rpb24gKGZpZWxkOiBGaWVsZCwgdmFsdWVzOiBWYWx1ZVtdLCB0eXBlSW5pdGlhbGl6YXRpb24/OiBUeXBlSW5pdGlhbGl6YXRpb24pIHtcblx0XHRpZiAodHlwZUluaXRpYWxpemF0aW9uPy5iVHlwZUluaXRpYWxpemVkID09PSB0cnVlICYmIHZhbHVlcy5sZW5ndGggPT09IDIpIHtcblx0XHRcdHZhbHVlcy5wdXNoKHR5cGVJbml0aWFsaXphdGlvbi5tQ3VzdG9tVW5pdHMpO1xuXHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHR9XG5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hpY2ggPGNvZGU+VmFsdWVIZWxwRGVsZWdhdGU8L2NvZGU+IGlzIHVzZWRcblx0ICogaWYgYSBkZWZhdWx0IGZpZWxkIGhlbHAgKGZvciBleGFtcGxlLCBmb3IgZGVmaW5pbmcgY29uZGl0aW9ucyBpbiA8L2NvZGU+RmlsdGVyRmllbGQ8L2NvZGU+KVxuXHQgKiBpcyBjcmVhdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gX2ZpZWxkIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gaW5zdGFuY2Vcblx0ICogQHJldHVybnMgRGVsZWdhdGUgb2JqZWN0IHdpdGggbmFtZSBhbmQgcGF5bG9hZFxuXHQgKi9cblx0Z2V0RGVmYXVsdFZhbHVlSGVscERlbGVnYXRlOiBmdW5jdGlvbiAoX2ZpZWxkOiBGaWVsZCkge1xuXHRcdHJldHVybiB7IG5hbWU6IFwic2FwL3VpL21kYy9vZGF0YS92NC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLCBwYXlsb2FkOiB7fSB9O1xuXHR9LFxuXG5cdGdldFR5cGVNYXA6IGZ1bmN0aW9uIChfZmllbGQ6IEZpZWxkKSB7XG5cdFx0cmV0dXJuIFR5cGVNYXA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIERldGVybWluZSBhbGwgcGFyYW1ldGVycyBpbiBhIHZhbHVlIGhlbHAgdGhhdCB1c2UgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlTGlzdEluZm8gVmFsdWUgbGlzdCBpbmZvXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTmFtZSBvZiB0aGUgcHJvcGVydHlcblx0ICogQHJldHVybnMgTGlzdCBvZiBhbGwgZm91bmQgcGFyYW1ldGVyc1xuXHQgKi9cblx0X2dldFZhbHVlTGlzdFBhcmFtZXRlcjogZnVuY3Rpb24gKHZhbHVlTGlzdEluZm86IEFubm90YXRpb25WYWx1ZUxpc3RUeXBlLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuXHRcdC8vZGV0ZXJtaW5lIHBhdGggdG8gdmFsdWUgbGlzdCBwcm9wZXJ0eVxuXHRcdHJldHVybiB2YWx1ZUxpc3RJbmZvLlBhcmFtZXRlcnMuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuXHRcdFx0aWYgKGVudHJ5LkxvY2FsRGF0YVByb3BlcnR5KSB7XG5cdFx0XHRcdHJldHVybiBlbnRyeS5Mb2NhbERhdGFQcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBwcm9wZXJ0eU5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdC8qKlxuXHQgKiBCdWlsZCBmaWx0ZXJzIGZvciBlYWNoIHJlbGV2YW50IHBhcmFtZXRlci5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlTGlzdCBWYWx1ZSBsaXN0IGluZm9cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwUHJvcGVydHkgTmFtZSBvZiB0aGUgdmFsdWUgaGVscCBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ga2V5VmFsdWUgVmFsdWUgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSB2YWx1ZWhlbHBQYXlsb2FkIFBheWxvYWQgb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHBhcmFtIHZhbHVlaGVscENvbmRpdGlvblBheWxvYWQgQWRkaXRpb25hbCBjb25kaXRpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMga2V5XG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBCaW5kaW5nQ29udGV4dCBvZiB0aGUgZmllbGRcblx0ICogQHJldHVybnMgTGlzdCBvZiBmaWx0ZXJzXG5cdCAqL1xuXHRfZ2V0RmlsdGVyOiBmdW5jdGlvbiAoXG5cdFx0dmFsdWVMaXN0OiBBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSxcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZUhlbHBQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdGtleVZhbHVlOiBzdHJpbmcsXG5cdFx0dmFsdWVoZWxwUGF5bG9hZDogVmFsdWVIZWxwUGF5bG9hZCxcblx0XHR2YWx1ZWhlbHBDb25kaXRpb25QYXlsb2FkOiBDb25kaXRpb25QYXlsb2FkVHlwZVtdIHwgdW5kZWZpbmVkLFxuXHRcdGJpbmRpbmdDb250ZXh0PzogQ29udGV4dFxuXHQpIHtcblx0XHRjb25zdCBmaWx0ZXJzID0gW107XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHZhbHVlTGlzdC5QYXJhbWV0ZXJzLmZpbHRlcihmdW5jdGlvbiAocGFyYW1ldGVyKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRwYXJhbWV0ZXIuJFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UeXBlcy5WYWx1ZUxpc3RQYXJhbWV0ZXJJbiB8fFxuXHRcdFx0XHRwYXJhbWV0ZXIuJFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UeXBlcy5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCB8fFxuXHRcdFx0XHQocGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5Py4kUHJvcGVydHlQYXRoID09PSBwcm9wZXJ0eU5hbWUgJiYgcGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5ID09PSB2YWx1ZUhlbHBQcm9wZXJ0eSlcblx0XHRcdCk7XG5cdFx0fSk7XG5cdFx0Zm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgcGFyYW1ldGVycykge1xuXHRcdFx0bGV0IGZpbHRlclZhbHVlO1xuXHRcdFx0aWYgKHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aCA9PT0gcHJvcGVydHlOYW1lKSB7XG5cdFx0XHRcdGZpbHRlclZhbHVlID0ga2V5VmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlaGVscFBheWxvYWQ/LmlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nID09PSB0cnVlKSB7XG5cdFx0XHRcdGNvbnN0IGFwZEZpZWxkUGF0aCA9IGBBUERfOjoke3BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aH1gO1xuXHRcdFx0XHRjb25zdCBhcGRGaWVsZCA9IHNhcC51aS5nZXRDb3JlKCkuYnlJZChhcGRGaWVsZFBhdGgpIGFzIEZpZWxkO1xuXHRcdFx0XHRmaWx0ZXJWYWx1ZSA9IGFwZEZpZWxkPy5nZXRWYWx1ZSgpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZWhlbHBDb25kaXRpb25QYXlsb2FkICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3Qgc291cmNlUGF0aCA9IHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aDtcblx0XHRcdFx0Y29uc3QgY29uZGl0aW9uUGF5bG9hZCA9IHZhbHVlaGVscENvbmRpdGlvblBheWxvYWQ/LlswXTtcblx0XHRcdFx0ZmlsdGVyVmFsdWUgPSBzb3VyY2VQYXRoICYmIGNvbmRpdGlvblBheWxvYWQ/Lltzb3VyY2VQYXRoXTtcblx0XHRcdH0gZWxzZSBpZiAoYmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQvLyBpZiB0aGUgdmFsdWUgaGVscCBpcyBub3QgdXNlZCB0cnkgZ2V0dGluZyB0aGUgZmlsdGVyIHZhbHVlIGZyb20gdGhlIGJpbmRpbmcgY29udGV4dFxuXHRcdFx0XHRjb25zdCBzb3VyY2VQYXRoID0gcGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5Py4kUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRmaWx0ZXJWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdChzb3VyY2VQYXRoKTtcblx0XHRcdH1cblx0XHRcdC8qIEFkZCB2YWx1ZSB0byB0aGUgZmlsdGVyIGZvciB0aGUgdGV4dCBkZXRlcm1pbmF0aW9uICovXG5cdFx0XHRpZiAoZmlsdGVyVmFsdWUgIT09IG51bGwgJiYgZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRmaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IHBhdGg6IHBhcmFtZXRlci5WYWx1ZUxpc3RQcm9wZXJ0eSwgb3BlcmF0b3I6IFwiRVFcIiwgdmFsdWUxOiBmaWx0ZXJWYWx1ZSB9KSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJzO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHRoZSBrZXksIGRlc2NyaXB0aW9uLCBhbmQgcGF5bG9hZCBvZiBhIHVzZXIgaW5wdXQuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWVsZCBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IGluc3RhbmNlXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHAgVmFsdWUgaGVscCBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gT2JqZWN0XG5cdCAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIGRlc2NyaXB0aW9uLCBrZXksIGFuZCBwYXlsb2FkLiBJZiBpdCBpcyBub3QgYXZhaWxhYmxlIHJpZ2h0IG5vdyAobXVzdCBiZSByZXF1ZXN0ZWQpLCBhIDxjb2RlPlByb21pc2U8L2NvZGU+IGlzIHJldHVybmVkXG5cdCAqL1xuXHRnZXRJdGVtRm9yVmFsdWU6IGZ1bmN0aW9uIChmaWVsZDogRmllbGQsIHZhbHVlSGVscDogVmFsdWVIZWxwLCBjb25maWc6IEl0ZW1Gb3JWYWx1ZUNvbmZpZ3VyYXRpb24pIHtcblx0XHQvL0JDUDogMjI3MDE2Mjg4NyAuIFRoZSBNREMgZmllbGQgc2hvdWxkIG5vdCB0cnkgdG8gZ2V0IHRoZSBpdGVtIHdoZW4gdGhlIGZpZWxkIGlzIGVtcHRpZWRcblx0XHQvLyBKSVJBOiBGSU9SSVRFQ0hQMS0yNTM2MSAtIEltcHJvdmUgdGhlIHR5cGUtYWhlYWQgYmVoYXZpb3IgZm9yIG1pc3Npbm5nIHRleHQgYW5ub3RhdGlvbiBvciBjb25zdHJhaW50cyB2aW9sYXRpb25zIG9mIHRoZSBleGlzdGluZyB0ZXh0IGFubm90YXRpb25cblx0XHRpZiAoY29uZmlnLnZhbHVlID09PSBcIlwiKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGNvbmZpZy5jaGVja0Rlc2NyaXB0aW9uKSB7XG5cdFx0XHRjb25zdCB2YWx1ZWhlbHBQYXlsb2FkID0gdmFsdWVIZWxwLmdldFBheWxvYWQoKSBhcyBWYWx1ZUhlbHBQYXlsb2FkO1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRpb25QYXRoID0gdmFsdWVoZWxwUGF5bG9hZC52YWx1ZUhlbHBEZXNjcmlwdGlvblBhdGg7XG5cdFx0XHRjb25zdCBtYXhMZW5ndGggPSB2YWx1ZWhlbHBQYXlsb2FkPy5tYXhMZW5ndGg7XG5cdFx0XHRjb25zdCB2YWx1ZUxlbmd0aCA9IGNvbmZpZy52YWx1ZSAhPT0gbnVsbCAmJiBjb25maWcudmFsdWUgIT09IHVuZGVmaW5lZCA/IGNvbmZpZy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA6IDA7XG5cdFx0XHRpZiAoZGVzY3JpcHRpb25QYXRoID09PSBcIlwiKSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlIHByb3BlcnR5IHZhbHVlIGhlbHAgY29sbGVjdGlvbiBoYXMgbm8gdGV4dCBhbm5vdGF0aW9uIChkZXNjcmlwdGlvblBhdGggaXMgZW1wdHkpIHRoZSBkZXNjcmlwdGlvbiBjaGVjayBzaG91bGRuwrR0IG9jY3VyLlxuXHRcdFx0XHQvLyBJbiBzdWNoIGEgY2FzZSB0aGUgbWV0aG9kIGdldERlc2NyaXB0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IE1EQyBhbmQgd2l0aGluIHRoaXMgbWV0aG9kIGEgU2lkZUVmZmVjdCBpcyByZXF1ZXN0ZWQgdG8gcmV0cmlldmUgdGhlIHRleHQgZnJvbSB0aGUgdGV4dCBwcm9wZXJ0eSBvZiB0aGUgbWFpbiBlbnRpdHlcblx0XHRcdFx0Y29uZmlnLmNoZWNrRGVzY3JpcHRpb24gPSBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAobWF4TGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWVMZW5ndGggPiBtYXhMZW5ndGgpIHtcblx0XHRcdFx0Ly92YWx1ZSBsZW5ndGggaXMgPiB0ZXh0IHByb2VwZXJ0eSBsZW5ndGggY29uc3RyYWludFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBGaWVsZEJhc2VEZWxlZ2F0ZS5nZXRJdGVtRm9yVmFsdWUoZmllbGQsIHZhbHVlSGVscCwgY29uZmlnKTtcblx0fSxcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUgZGVzY3JpcHRpb24gZm9yIGEgZ2l2ZW4ga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwIEZpZWxkIGhlbHAgYXNzaWduZWQgdG8gdGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvciA8Y29kZT5GaWx0ZXJGaWVsZDwvY29kZT4gY29udHJvbFxuXHQgKiBAcGFyYW0ga2V5IEtleSB2YWx1ZSBvZiB0aGUgZGVzY3JpcHRpb25cblx0ICogQHBhcmFtIF9jb25kaXRpb25JbiBJbiBwYXJhbWV0ZXJzIGZvciB0aGUga2V5IChubyBsb25nZXIgc3VwcG9ydGVkKVxuXHQgKiBAcGFyYW0gX2NvbmRpdGlvbk91dCBPdXQgcGFyYW1ldGVycyBmb3IgdGhlIGtleSAobm8gbG9uZ2VyIHN1cHBvcnRlZClcblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEJpbmRpbmdDb250ZXh0IDxjb2RlPkJpbmRpbmdDb250ZXh0PC9jb2RlPiBvZiB0aGUgY2hlY2tlZCBmaWVsZC4gSW5zaWRlIGEgdGFibGUsIHRoZSA8Y29kZT5WYWx1ZUhlbHA8L2NvZGU+IGVsZW1lbnQgY2FuIGJlIGNvbm5lY3RlZCB0byBhIGRpZmZlcmVudCByb3dcblx0ICogQHBhcmFtIF9Db25kaXRpb25Nb2RlbCBDb25kaXRpb25Nb2RlbDwvY29kZT4sIGlmIGJvdW5kIHRvIG9uZVxuXHQgKiBAcGFyYW0gX2NvbmRpdGlvbk1vZGVsTmFtZSBOYW1lIG9mIHRoZSA8Y29kZT5Db25kaXRpb25Nb2RlbDwvY29kZT4sIGlmIGJvdW5kIHRvIG9uZVxuXHQgKiBAcGFyYW0gY29uZGl0aW9uUGF5bG9hZCBBZGRpdGlvbmFsIGNvbnRleHQgaW5mb3JtYXRpb24gZm9yIHRoaXMga2V5XG5cdCAqIEBwYXJhbSBjb250cm9sIEluc3RhbmNlIG9mIHRoZSBjYWxsaW5nIGNvbnRyb2xcblx0ICogQHBhcmFtIF90eXBlIFR5cGUgb2YgdGhlIHZhbHVlXG5cdCAqIEByZXR1cm5zIERlc2NyaXB0aW9uIGZvciB0aGUga2V5IG9yIG9iamVjdCBjb250YWluaW5nIGEgZGVzY3JpcHRpb24sIGtleSBhbmQgcGF5bG9hZC4gSWYgdGhlIGRlc2NyaXB0aW9uIGlzIG5vdCBhdmFpbGFibGUgcmlnaHQgYXdheSAoaXQgbXVzdCBiZSByZXF1ZXN0ZWQpLCBhIDxjb2RlPlByb21pc2U8L2NvZGU+IGlzIHJldHVybmVkXG5cdCAqL1xuXHRnZXREZXNjcmlwdGlvbjogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdGZpZWxkOiBGaWVsZCB8IG51bGwsXG5cdFx0dmFsdWVIZWxwOiBWYWx1ZUhlbHAsXG5cdFx0a2V5OiBzdHJpbmcsXG5cdFx0X2NvbmRpdGlvbkluOiBvYmplY3QsXG5cdFx0X2NvbmRpdGlvbk91dDogb2JqZWN0LFxuXHRcdGJpbmRpbmdDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkLFxuXHRcdF9Db25kaXRpb25Nb2RlbDogQ29uZGl0aW9uTW9kZWwsXG5cdFx0X2NvbmRpdGlvbk1vZGVsTmFtZTogc3RyaW5nLFxuXHRcdGNvbmRpdGlvblBheWxvYWQ6IENvbmRpdGlvblBheWxvYWRNYXAsXG5cdFx0Y29udHJvbDogQ29udHJvbCxcblx0XHRfdHlwZTogdW5rbm93blxuXHQpIHtcblx0XHQvL0pJUkE6IEZJT1JJVEVDSFAxLTIyMDIyIC4gVGhlIE1EQyBmaWVsZCBzaG91bGQgbm90ICB0cmllcyB0byBkZXRlcm1pbmUgZGVzY3JpcHRpb24gd2l0aCB0aGUgaW5pdGlhbCBHRVQgb2YgdGhlIGRhdGEuXG5cdFx0Ly8gaXQgc2hvdWxkIHJlbHkgb24gdGhlIGRhdGEgd2UgYWxyZWFkeSByZWNlaXZlZCBmcm9tIHRoZSBiYWNrZW5kXG5cdFx0Ly8gQnV0IFRoZSBnZXREZXNjcmlwdGlvbiBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBpbiB0aGUgRmlsdGVyRmllbGQgY2FzZSBpZiBhIHZhcmlhbnQgaXMgbG9hZGVkLlxuXHRcdC8vIEFzIHRoZSBkZXNjcmlwdGlvbiB0ZXh0IGNvdWxkIGJlIGxhbmd1YWdlIGRlcGVuZGVudCBpdCBpcyBub3Qgc3RvcmVkIGluIHRoZSB2YXJpYW50LCBzbyBpdCBuZWVkcyB0byBiZSByZWFkIG9uIHJlbmRlcmluZy5cblxuXHRcdGxldCBwYXlsb2FkID0gZmllbGQ/LmdldFBheWxvYWQoKSBhcyBGaWVsZFBheWxvYWQ7XG5cblx0XHQvKiBSZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgaGVscCwgaWYgdmFsdWUgd2FzIHNldCBieSBvdXQtcGFyYW1ldGVyIChCQ1AgMjI3MDE2MDYzMykgKi9cblx0XHRpZiAoIXBheWxvYWQgJiYgKGNvbnRyb2wgYXMgRmllbGRCYXNlKT8uZ2V0RGlzcGxheSgpLmluY2x1ZGVzKFwiRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdHBheWxvYWQgPSB7XG5cdFx0XHRcdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IHRydWVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKHBheWxvYWQ/LnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgPT09IHRydWUgfHwgcGF5bG9hZD8uaXNGaWx0ZXJGaWVsZCA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgZGF0YU1vZGVsID0gdmFsdWVIZWxwLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IGRhdGFNb2RlbFxuXHRcdFx0XHQ/IGRhdGFNb2RlbC5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0XHQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh2YWx1ZUhlbHAgYXMgdW5rbm93biBhcyBDb250cm9sKVxuXHRcdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHRcdC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IHZhbHVlaGVscFBheWxvYWQgPSB2YWx1ZUhlbHAuZ2V0UGF5bG9hZCgpIGFzIFZhbHVlSGVscFBheWxvYWQ7XG5cdFx0XHRjb25zdCB2YWx1ZWhlbHBDb25kaXRpb25QYXlsb2FkID0gY29uZGl0aW9uUGF5bG9hZD8uW3ZhbHVlaGVscFBheWxvYWQudmFsdWVIZWxwUXVhbGlmaWVyXTtcblx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IHZhbHVlaGVscFBheWxvYWQucHJvcGVydHlQYXRoO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlEZXNjcmlwdGlvblBhdGggPSB2YWx1ZWhlbHBQYXlsb2FkPy5wcm9wZXJ0eURlc2NyaXB0aW9uUGF0aDtcblx0XHRcdGxldCB0ZXh0UHJvcGVydHk6IHN0cmluZztcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0LyogUmVxdWVzdCB2YWx1ZSBoZWxwIG1ldGFkYXRhICovXG5cdFx0XHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPSAoYXdhaXQgbWV0YU1vZGVsLnJlcXVlc3RWYWx1ZUxpc3RJbmZvKFxuXHRcdFx0XHRcdHByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0XG5cdFx0XHRcdCkpIGFzIEFubm90YXRpb25WYWx1ZUxpc3RUeXBlQnlRdWFsaWZpZXI7XG5cblx0XHRcdFx0Y29uc3QgcHJvcGVydHlOYW1lID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtwcm9wZXJ0eVBhdGh9QHNhcHVpLm5hbWVgKSBhcyBzdHJpbmc7XG5cdFx0XHRcdC8vIHRha2UgdGhlIGZpcnN0IHZhbHVlIGxpc3QgYW5ub3RhdGlvbiAtIGFsdGVybmF0aXZlbHkgdGFrZSB0aGUgb25lIHdpdGhvdXQgcXVhbGlmaWVyIG9yIHRoZSBmaXJzdCBvbmVcblx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gdmFsdWVMaXN0SW5mb1tPYmplY3Qua2V5cyh2YWx1ZUxpc3RJbmZvKVswXV07XG5cdFx0XHRcdGNvbnN0IHZhbHVlSGVscFBhcmFtZXRlcnMgPSB0aGlzLl9nZXRWYWx1ZUxpc3RQYXJhbWV0ZXIodmFsdWVMaXN0LCBwcm9wZXJ0eU5hbWUpO1xuXHRcdFx0XHRjb25zdCB2YWx1ZUhlbHBQcm9wZXJ0eSA9IHZhbHVlSGVscFBhcmFtZXRlcnM/LlswXT8uVmFsdWVMaXN0UHJvcGVydHk7XG5cdFx0XHRcdGlmICghdmFsdWVIZWxwUHJvcGVydHkpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihgSW5jb25zaXN0ZW50IHZhbHVlIGhlbHAgYW5ub3RhdGlvbiBmb3IgJHtwcm9wZXJ0eU5hbWV9YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZ2V0IHRleHQgYW5ub3RhdGlvbiBmb3IgdGhpcyB2YWx1ZSBsaXN0IHByb3BlcnR5XG5cdFx0XHRcdGNvbnN0IHZhbHVlTGlzdE1vZGVsID0gdmFsdWVMaXN0LiRtb2RlbDtcblx0XHRcdFx0Y29uc3QgdGV4dEFubm90YXRpb24gPSB2YWx1ZUxpc3RNb2RlbFxuXHRcdFx0XHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0XHRcdC5nZXRPYmplY3QoYC8ke3ZhbHVlTGlzdC5Db2xsZWN0aW9uUGF0aH0vJHt2YWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRgKTtcblx0XHRcdFx0aWYgKHRleHRBbm5vdGF0aW9uICYmIHRleHRBbm5vdGF0aW9uLiRQYXRoKSB7XG5cdFx0XHRcdFx0dGV4dFByb3BlcnR5ID0gdGV4dEFubm90YXRpb24uJFBhdGg7XG5cdFx0XHRcdFx0LyogQnVpbGQgdGhlIGZpbHRlciBmb3IgdGhlIHJlbGV2YW50IHBhcmFtZXRlcnMgKi9cblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJzID0gdGhpcy5fZ2V0RmlsdGVyKFxuXHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRcdFx0dmFsdWVIZWxwUHJvcGVydHksXG5cdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHR2YWx1ZWhlbHBQYXlsb2FkLFxuXHRcdFx0XHRcdFx0dmFsdWVoZWxwQ29uZGl0aW9uUGF5bG9hZCxcblx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHZhbHVlTGlzdE1vZGVsLmJpbmRMaXN0KGAvJHt2YWx1ZUxpc3QuQ29sbGVjdGlvblBhdGh9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZpbHRlcnMsIHtcblx0XHRcdFx0XHRcdCRzZWxlY3Q6IHRleHRQcm9wZXJ0eVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8qIFJlcXVlc3QgZGVzY3JpcHRpb24gZm9yIGdpdmVuIGtleSBmcm9tIHZhbHVlIGxpc3QgZW50aXR5ICovXG5cdFx0XHRcdFx0Y29uc3QgY29udGV4dHMgPSBhd2FpdCBsaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMik7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbnRleHRzLmxlbmd0aCA/IGNvbnRleHRzWzBdLmdldE9iamVjdCh0ZXh0UHJvcGVydHkpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQgJiYgcHJvcGVydHlEZXNjcmlwdGlvblBhdGgpIHtcblx0XHRcdFx0XHRjb25zdCBsYXN0SW5kZXggPSBwcm9wZXJ0eURlc2NyaXB0aW9uUGF0aC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdFx0XHRcdFx0Y29uc3Qgc2lkZUVmZmVjdFBhdGggPSBsYXN0SW5kZXggPiAwID8gcHJvcGVydHlEZXNjcmlwdGlvblBhdGguc3Vic3RyaW5nKDAsIGxhc3RJbmRleCkgOiBwcm9wZXJ0eURlc2NyaXB0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBzaWRlRWZmZWN0c1NlcnZpY2UgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmFsdWVIZWxwIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0XHRcdFx0YXdhaXQgc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbc2lkZUVmZmVjdFBhdGhdLCBiaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRgUmVxdWVzdFNpZGVFZmZlY3RzIGlzIHRyaWdnZXJlZCBiZWNhdXNlIHRoZSB0ZXh0IGFubm90YXRpb24gZm9yICR7dmFsdWVIZWxwUHJvcGVydHl9IGlzIG5vdCBkZWZpbmVkIGF0IHRoZSBDb2xsZWN0aW9uUGF0aCBvZiB0aGUgdmFsdWUgaGVscGBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBUZXh0IEFubm90YXRpb24gZm9yICR7dmFsdWVIZWxwUHJvcGVydHl9IGlzIG5vdCBkZWZpbmVkYCk7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0Y29uc3Qgc3RhdHVzID0gZXJyb3IgPyAoZXJyb3IgYXMgWE1MSHR0cFJlcXVlc3QpLnN0YXR1cyA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdFx0Y29uc3QgbXNnID0gc3RhdHVzID09PSA0MDQgPyBgTWV0YWRhdGEgbm90IGZvdW5kICgke3N0YXR1c30pIGZvciB2YWx1ZSBoZWxwIG9mIHByb3BlcnR5ICR7cHJvcGVydHlQYXRofWAgOiBtZXNzYWdlO1xuXHRcdFx0XHRMb2cuZXJyb3IobXNnKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufSk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7U0E0Q2VBLE1B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
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJhc3NpZ24iLCJGaWVsZEJhc2VEZWxlZ2F0ZSIsImFwaVZlcnNpb24iLCJpbml0aWFsaXplVHlwZUZyb21CaW5kaW5nIiwiZmllbGQiLCJ0eXBlIiwidmFsdWUiLCJyZXN1bHQiLCJpc0EiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmb3JtYXRWYWx1ZSIsImJUeXBlSW5pdGlhbGl6ZWQiLCJtQ3VzdG9tVW5pdHMiLCJpbml0aWFsaXplSW50ZXJuYWxVbml0VHlwZSIsInR5cGVJbml0aWFsaXphdGlvbiIsImVuaGFuY2VWYWx1ZUZvclVuaXQiLCJ2YWx1ZXMiLCJwdXNoIiwiZ2V0RGVmYXVsdFZhbHVlSGVscERlbGVnYXRlIiwiX2ZpZWxkIiwibmFtZSIsInBheWxvYWQiLCJnZXRUeXBlTWFwIiwiVHlwZU1hcCIsIl9nZXRWYWx1ZUxpc3RQYXJhbWV0ZXIiLCJ2YWx1ZUxpc3RJbmZvIiwicHJvcGVydHlOYW1lIiwiUGFyYW1ldGVycyIsImZpbHRlciIsImVudHJ5IiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiX2dldEZpbHRlciIsInZhbHVlTGlzdCIsInZhbHVlSGVscFByb3BlcnR5Iiwia2V5VmFsdWUiLCJ2YWx1ZWhlbHBQYXlsb2FkIiwidmFsdWVoZWxwQ29uZGl0aW9uUGF5bG9hZCIsImJpbmRpbmdDb250ZXh0IiwiZmlsdGVycyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCIkVHlwZSIsIlZhbHVlTGlzdFByb3BlcnR5IiwiZmlsdGVyVmFsdWUiLCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZyIsImFwZEZpZWxkUGF0aCIsImFwZEZpZWxkIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiYnlJZCIsImdldFZhbHVlIiwic291cmNlUGF0aCIsImNvbmRpdGlvblBheWxvYWQiLCJnZXRPYmplY3QiLCJGaWx0ZXIiLCJwYXRoIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJnZXRJdGVtRm9yVmFsdWUiLCJ2YWx1ZUhlbHAiLCJjb25maWciLCJjaGVja0Rlc2NyaXB0aW9uIiwiZ2V0UGF5bG9hZCIsImRlc2NyaXB0aW9uUGF0aCIsInZhbHVlSGVscERlc2NyaXB0aW9uUGF0aCIsIm1heExlbmd0aCIsInZhbHVlTGVuZ3RoIiwidG9TdHJpbmciLCJnZXREZXNjcmlwdGlvbiIsImtleSIsIl9jb25kaXRpb25JbiIsIl9jb25kaXRpb25PdXQiLCJfQ29uZGl0aW9uTW9kZWwiLCJfY29uZGl0aW9uTW9kZWxOYW1lIiwiY29udHJvbCIsIl90eXBlIiwiZ2V0RGlzcGxheSIsImluY2x1ZGVzIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImlzRmlsdGVyRmllbGQiLCJkYXRhTW9kZWwiLCJnZXRNb2RlbCIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwidmFsdWVIZWxwUXVhbGlmaWVyIiwicHJvcGVydHlQYXRoIiwicHJvcGVydHlEZXNjcmlwdGlvblBhdGgiLCJ0ZXh0UHJvcGVydHkiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsImtleXMiLCJ2YWx1ZUhlbHBQYXJhbWV0ZXJzIiwiRXJyb3IiLCJ2YWx1ZUxpc3RNb2RlbCIsIiRtb2RlbCIsInRleHRBbm5vdGF0aW9uIiwiQ29sbGVjdGlvblBhdGgiLCIkUGF0aCIsImxpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkc2VsZWN0IiwiY29udGV4dHMiLCJyZXF1ZXN0Q29udGV4dHMiLCJsYXN0SW5kZXgiLCJsYXN0SW5kZXhPZiIsInNpZGVFZmZlY3RQYXRoIiwic3Vic3RyaW5nIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiTG9nIiwid2FybmluZyIsImVycm9yIiwic3RhdHVzIiwibWVzc2FnZSIsIlN0cmluZyIsIm1zZyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRCYXNlRGVsZWdhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSxcblx0QW5ub3RhdGlvblZhbHVlTGlzdFR5cGVCeVF1YWxpZmllcixcblx0VmFsdWVIZWxwUGF5bG9hZFxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgVmFsdWVIZWxwIGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBJdGVtRm9yVmFsdWVDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgdHlwZSBDb25kaXRpb25Nb2RlbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uTW9kZWxcIjtcbmltcG9ydCB0eXBlIEZpZWxkQmFzZSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCBGaWVsZEJhc2VEZWxlZ2F0ZSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VEZWxlZ2F0ZVwiO1xuaW1wb3J0IFR5cGVNYXAgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvVHlwZU1hcFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgU2ltcGxlVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL1NpbXBsZVR5cGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25QYXlsb2FkTWFwLCBDb25kaXRpb25QYXlsb2FkVHlwZSB9IGZyb20gXCIuLi92YWx1ZWhlbHAvVmFsdWVIZWxwRGVsZWdhdGVcIjtcbmV4cG9ydCB0eXBlIEZpZWxkUGF5bG9hZCA9IHtcblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdD86IGJvb2xlYW47XG5cdGlzRmlsdGVyRmllbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsdWUgPSBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFR5cGVJbml0aWFsaXphdGlvbiA9IHtcblx0YlR5cGVJbml0aWFsaXplZD86IGJvb2xlYW47XG5cdG1DdXN0b21Vbml0cz86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IHtcblx0dmFsdWU6IFZhbHVlO1xuXHRwYXJzZWRWYWx1ZTogVmFsdWU7XG5cdGJpbmRpbmdDb250ZXh0OiBDb250ZXh0O1xuXHRjaGVja0tleTogYm9vbGVhbjtcblx0Y2hlY2tEZXNjcmlwdGlvbjogYm9vbGVhbjtcblx0Y29uZGl0aW9uTW9kZWw/OiBDb25kaXRpb25Nb2RlbDtcblx0Y29uZGl0aW9uTW9kZWxOYW1lPzogc3RyaW5nO1xuXHRjb250cm9sPzogb2JqZWN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbih7fSwgRmllbGRCYXNlRGVsZWdhdGUsIHtcblx0YXBpVmVyc2lvbjogMixcblxuXHQvKipcblx0ICogSWYgdGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBjb250cm9sIGlzIHVzZWQsIHRoZSB1c2VkIGRhdGEgdHlwZSBtaWdodCBjb21lIGZyb20gdGhlIGJpbmRpbmcuXG5cdCAqIEluIFY0LXVuaXQgb3IgY3VycmVuY3kgY2FzZSBpdCBtaWdodCBuZWVkIHRvIGJlIGZvcm1hdHRlZCBvbmNlLlxuXHQgKiBUbyBpbml0aWFsaXplIHRoZSBpbnRlcm5hbCB0eXBlIGxhdGVyIG9uLCB0aGUgY3VycmVuY2llcyBtdXN0IGJlIHJldHVybmVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBUeXBlIGZyb20gYmluZGluZ1xuXHQgKiBAcGFyYW0gdmFsdWUgR2l2ZW4gdmFsdWVcblx0ICogQHJldHVybnMgSW5mb3JtYXRpb24gbmVlZGVkIHRvIGluaXRpYWxpemUgaW50ZXJuYWwgdHlwZSAobmVlZHMgdG8gc2V0IGJUeXBlSW5pdGlhbGl6ZWQgdG8gdHJ1ZSBpZiBpbml0aWFsaXplZClcblx0ICovXG5cdGluaXRpYWxpemVUeXBlRnJvbUJpbmRpbmc6IGZ1bmN0aW9uIChmaWVsZDogRmllbGQsIHR5cGU6IFNpbXBsZVR5cGUgfCB1bmRlZmluZWQsIHZhbHVlOiBWYWx1ZSB8IFZhbHVlW10pIHtcblx0XHQvLyBWNCBVbml0IGFuZCBDdXJyZW5jeSB0eXBlcyBoYXZlIGEgbWFwIHdpdGggdmFsaWQgdW5pdHMgYW5kIGNyZWF0ZSBhbiBpbnRlcm5hbCBjdXN0b21pemluZyBmb3IgaXQuXG5cdFx0Ly8gVGhlIEZpZWxkIG5lZWRzIHRvIGtlZXAgdGhpcyBjdXN0b21pemluZyBsb2dpYyB3aGVuIGNyZWF0aW5nIHRoZSBpbnRlcm5hbCB0eXBlLlxuXHRcdC8vIChBcyBleHRlcm5hbCBSQVcgYmluZGluZyBpcyB1c2VkIHRoZXJlIGlzIG5vIGZvcm1hdHRpbmcgb24gcGFyc2luZy4pXG5cblx0XHRjb25zdCByZXN1bHQ6IFR5cGVJbml0aWFsaXphdGlvbiA9IHt9O1xuXHRcdGlmIChcblx0XHRcdHR5cGUgJiZcblx0XHRcdHR5cGUuaXNBKFtcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIiwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiXSkgJiZcblx0XHRcdEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG5cdFx0XHR2YWx1ZS5sZW5ndGggPiAyICYmXG5cdFx0XHR2YWx1ZVsyXSAhPT0gdW5kZWZpbmVkXG5cdFx0KSB7XG5cdFx0XHQvLyBmb3JtYXQgb25jZSB0byBzZXQgaW50ZXJuYWwgY3VzdG9taXppbmcuIEFsbG93IG51bGwgYXMgdmFsaWQgdmFsdWVzIGZvciBjdXN0b20gdW5pdHNcblx0XHRcdHR5cGUuZm9ybWF0VmFsdWUodmFsdWUsIFwic3RyaW5nXCIpO1xuXHRcdFx0cmVzdWx0LmJUeXBlSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHRcdFx0cmVzdWx0Lm1DdXN0b21Vbml0cyA9IHZhbHVlWzJdIGFzIHN0cmluZzsgLy8gVE9ETzogZmluZCBhIGJldHRlciB3YXkgdG8gcHJvdmlkZSBjdXN0b20gdW5pdHMgdG8gaW50ZXJuYWwgdHlwZVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHVuaXQgdHlwZS5cblx0ICogSWYgdGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBjb250cm9sIGlzIHVzZWQsIHRoZSB1c2VkIGRhdGEgdHlwZSBtaWdodCBjb21lIGZyb20gdGhlIGJpbmRpbmcuXG5cdCAqIElmIHRoZSB0eXBlIGlzIGEgVjQgdW5pdCBvciBjdXJyZW5jeSwgaXQgbWlnaHQgbmVlZCB0byBiZSBmb3JtYXR0ZWQgb25jZS5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gaW5zdGFuY2Vcblx0ICogQHBhcmFtIHR5cGUgVHlwZSBmcm9tIGJpbmRpbmdcblx0ICogQHBhcmFtIHR5cGVJbml0aWFsaXphdGlvbiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBpbnRlcm5hbCB0eXBlXG5cdCAqL1xuXHRpbml0aWFsaXplSW50ZXJuYWxVbml0VHlwZTogZnVuY3Rpb24gKGZpZWxkOiBGaWVsZCwgdHlwZTogU2ltcGxlVHlwZSwgdHlwZUluaXRpYWxpemF0aW9uPzogVHlwZUluaXRpYWxpemF0aW9uKSB7XG5cdFx0aWYgKHR5cGVJbml0aWFsaXphdGlvbj8ubUN1c3RvbVVuaXRzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIGlmIGFscmVhZHkgaW5pdGlhbGl6ZWQgaW5pdGlhbGl6ZSBuZXcgdHlwZSB0b28uXG5cdFx0XHR0eXBlLmZvcm1hdFZhbHVlKFtudWxsLCBudWxsLCB0eXBlSW5pdGlhbGl6YXRpb24ubUN1c3RvbVVuaXRzXSwgXCJzdHJpbmdcIik7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGVuaGFuY2VzIHRoZSB2YWx1ZSB3aXRoIHVuaXQgb3IgY3VycmVuY3kgaW5mb3JtYXRpb24gaWYgbmVlZGVkIGJ5IHRoZSBkYXRhIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWVsZCBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IGluc3RhbmNlXG5cdCAqIEBwYXJhbSAgdmFsdWVzIFZhbHVlc1xuXHQgKiBAcGFyYW0gIHR5cGVJbml0aWFsaXphdGlvbiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBpbnRlcm5hbCB0eXBlXG5cdCAqIEByZXR1cm5zIFZhbHVlc1xuXHQgKi9cblx0ZW5oYW5jZVZhbHVlRm9yVW5pdDogZnVuY3Rpb24gKGZpZWxkOiBGaWVsZCwgdmFsdWVzOiBWYWx1ZVtdLCB0eXBlSW5pdGlhbGl6YXRpb24/OiBUeXBlSW5pdGlhbGl6YXRpb24pIHtcblx0XHRpZiAodHlwZUluaXRpYWxpemF0aW9uPy5iVHlwZUluaXRpYWxpemVkID09PSB0cnVlICYmIHZhbHVlcy5sZW5ndGggPT09IDIpIHtcblx0XHRcdHZhbHVlcy5wdXNoKHR5cGVJbml0aWFsaXphdGlvbi5tQ3VzdG9tVW5pdHMpO1xuXHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHR9XG5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hpY2ggPGNvZGU+VmFsdWVIZWxwRGVsZWdhdGU8L2NvZGU+IGlzIHVzZWRcblx0ICogaWYgYSBkZWZhdWx0IGZpZWxkIGhlbHAgKGZvciBleGFtcGxlLCBmb3IgZGVmaW5pbmcgY29uZGl0aW9ucyBpbiA8L2NvZGU+RmlsdGVyRmllbGQ8L2NvZGU+KVxuXHQgKiBpcyBjcmVhdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gX2ZpZWxkIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gaW5zdGFuY2Vcblx0ICogQHJldHVybnMgRGVsZWdhdGUgb2JqZWN0IHdpdGggbmFtZSBhbmQgcGF5bG9hZFxuXHQgKi9cblx0Z2V0RGVmYXVsdFZhbHVlSGVscERlbGVnYXRlOiBmdW5jdGlvbiAoX2ZpZWxkOiBGaWVsZCkge1xuXHRcdHJldHVybiB7IG5hbWU6IFwic2FwL3VpL21kYy9vZGF0YS92NC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLCBwYXlsb2FkOiB7fSB9O1xuXHR9LFxuXG5cdGdldFR5cGVNYXA6IGZ1bmN0aW9uIChfZmllbGQ6IEZpZWxkKSB7XG5cdFx0cmV0dXJuIFR5cGVNYXA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIERldGVybWluZSBhbGwgcGFyYW1ldGVycyBpbiBhIHZhbHVlIGhlbHAgdGhhdCB1c2UgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlTGlzdEluZm8gVmFsdWUgbGlzdCBpbmZvXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTmFtZSBvZiB0aGUgcHJvcGVydHlcblx0ICogQHJldHVybnMgTGlzdCBvZiBhbGwgZm91bmQgcGFyYW1ldGVyc1xuXHQgKi9cblx0X2dldFZhbHVlTGlzdFBhcmFtZXRlcjogZnVuY3Rpb24gKHZhbHVlTGlzdEluZm86IEFubm90YXRpb25WYWx1ZUxpc3RUeXBlLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuXHRcdC8vZGV0ZXJtaW5lIHBhdGggdG8gdmFsdWUgbGlzdCBwcm9wZXJ0eVxuXHRcdHJldHVybiB2YWx1ZUxpc3RJbmZvLlBhcmFtZXRlcnMuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuXHRcdFx0aWYgKGVudHJ5LkxvY2FsRGF0YVByb3BlcnR5KSB7XG5cdFx0XHRcdHJldHVybiBlbnRyeS5Mb2NhbERhdGFQcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBwcm9wZXJ0eU5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdC8qKlxuXHQgKiBCdWlsZCBmaWx0ZXJzIGZvciBlYWNoIHJlbGV2YW50IHBhcmFtZXRlci5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlTGlzdCBWYWx1ZSBsaXN0IGluZm9cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwUHJvcGVydHkgTmFtZSBvZiB0aGUgdmFsdWUgaGVscCBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ga2V5VmFsdWUgVmFsdWUgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSB2YWx1ZWhlbHBQYXlsb2FkIFBheWxvYWQgb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHBhcmFtIHZhbHVlaGVscENvbmRpdGlvblBheWxvYWQgQWRkaXRpb25hbCBjb25kaXRpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMga2V5XG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBCaW5kaW5nQ29udGV4dCBvZiB0aGUgZmllbGRcblx0ICogQHJldHVybnMgTGlzdCBvZiBmaWx0ZXJzXG5cdCAqL1xuXHRfZ2V0RmlsdGVyOiBmdW5jdGlvbiAoXG5cdFx0dmFsdWVMaXN0OiBBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSxcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZUhlbHBQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdGtleVZhbHVlOiBzdHJpbmcsXG5cdFx0dmFsdWVoZWxwUGF5bG9hZDogVmFsdWVIZWxwUGF5bG9hZCxcblx0XHR2YWx1ZWhlbHBDb25kaXRpb25QYXlsb2FkOiBDb25kaXRpb25QYXlsb2FkVHlwZVtdIHwgdW5kZWZpbmVkLFxuXHRcdGJpbmRpbmdDb250ZXh0PzogQ29udGV4dFxuXHQpIHtcblx0XHRjb25zdCBmaWx0ZXJzID0gW107XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHZhbHVlTGlzdC5QYXJhbWV0ZXJzLmZpbHRlcihmdW5jdGlvbiAocGFyYW1ldGVyKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRwYXJhbWV0ZXIuJFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UeXBlcy5WYWx1ZUxpc3RQYXJhbWV0ZXJJbiB8fFxuXHRcdFx0XHRwYXJhbWV0ZXIuJFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UeXBlcy5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCB8fFxuXHRcdFx0XHQocGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5Py4kUHJvcGVydHlQYXRoID09PSBwcm9wZXJ0eU5hbWUgJiYgcGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5ID09PSB2YWx1ZUhlbHBQcm9wZXJ0eSlcblx0XHRcdCk7XG5cdFx0fSk7XG5cdFx0Zm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgcGFyYW1ldGVycykge1xuXHRcdFx0bGV0IGZpbHRlclZhbHVlO1xuXHRcdFx0aWYgKHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aCA9PT0gcHJvcGVydHlOYW1lKSB7XG5cdFx0XHRcdGZpbHRlclZhbHVlID0ga2V5VmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlaGVscFBheWxvYWQ/LmlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nID09PSB0cnVlKSB7XG5cdFx0XHRcdGNvbnN0IGFwZEZpZWxkUGF0aCA9IGBBUERfOjoke3BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aH1gO1xuXHRcdFx0XHRjb25zdCBhcGRGaWVsZCA9IHNhcC51aS5nZXRDb3JlKCkuYnlJZChhcGRGaWVsZFBhdGgpIGFzIEZpZWxkO1xuXHRcdFx0XHRmaWx0ZXJWYWx1ZSA9IGFwZEZpZWxkPy5nZXRWYWx1ZSgpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZWhlbHBDb25kaXRpb25QYXlsb2FkICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3Qgc291cmNlUGF0aCA9IHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aDtcblx0XHRcdFx0Y29uc3QgY29uZGl0aW9uUGF5bG9hZCA9IHZhbHVlaGVscENvbmRpdGlvblBheWxvYWQ/LlswXTtcblx0XHRcdFx0ZmlsdGVyVmFsdWUgPSBzb3VyY2VQYXRoICYmIGNvbmRpdGlvblBheWxvYWQ/Lltzb3VyY2VQYXRoXTtcblx0XHRcdH0gZWxzZSBpZiAoYmluZGluZ0NvbnRleHQpIHtcblx0XHRcdFx0Ly8gaWYgdGhlIHZhbHVlIGhlbHAgaXMgbm90IHVzZWQgdHJ5IGdldHRpbmcgdGhlIGZpbHRlciB2YWx1ZSBmcm9tIHRoZSBiaW5kaW5nIGNvbnRleHRcblx0XHRcdFx0Y29uc3Qgc291cmNlUGF0aCA9IHBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eT8uJFByb3BlcnR5UGF0aDtcblx0XHRcdFx0ZmlsdGVyVmFsdWUgPSBiaW5kaW5nQ29udGV4dC5nZXRPYmplY3Qoc291cmNlUGF0aCk7XG5cdFx0XHR9XG5cdFx0XHQvKiBBZGQgdmFsdWUgdG8gdGhlIGZpbHRlciBmb3IgdGhlIHRleHQgZGV0ZXJtaW5hdGlvbiAqL1xuXHRcdFx0aWYgKGZpbHRlclZhbHVlICE9PSBudWxsICYmIGZpbHRlclZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0ZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoeyBwYXRoOiBwYXJhbWV0ZXIuVmFsdWVMaXN0UHJvcGVydHksIG9wZXJhdG9yOiBcIkVRXCIsIHZhbHVlMTogZmlsdGVyVmFsdWUgfSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVycztcblx0fSxcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUga2V5LCBkZXNjcmlwdGlvbiwgYW5kIHBheWxvYWQgb2YgYSB1c2VyIGlucHV0LlxuXHQgKlxuXHQgKiBAcGFyYW0gZmllbGQgVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwIFZhbHVlIGhlbHAgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIE9iamVjdFxuXHQgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBkZXNjcmlwdGlvbiwga2V5LCBhbmQgcGF5bG9hZC4gSWYgaXQgaXMgbm90IGF2YWlsYWJsZSByaWdodCBub3cgKG11c3QgYmUgcmVxdWVzdGVkKSwgYSA8Y29kZT5Qcm9taXNlPC9jb2RlPiBpcyByZXR1cm5lZFxuXHQgKi9cblx0Z2V0SXRlbUZvclZhbHVlOiBmdW5jdGlvbiAoZmllbGQ6IEZpZWxkLCB2YWx1ZUhlbHA6IFZhbHVlSGVscCwgY29uZmlnOiBJdGVtRm9yVmFsdWVDb25maWd1cmF0aW9uKSB7XG5cdFx0Ly9CQ1A6IDIyNzAxNjI4ODcgLiBUaGUgTURDIGZpZWxkIHNob3VsZCBub3QgdHJ5IHRvIGdldCB0aGUgaXRlbSB3aGVuIHRoZSBmaWVsZCBpcyBlbXB0aWVkXG5cdFx0Ly8gSklSQTogRklPUklURUNIUDEtMjUzNjEgLSBJbXByb3ZlIHRoZSB0eXBlLWFoZWFkIGJlaGF2aW9yIGZvciBtaXNzaW5uZyB0ZXh0IGFubm90YXRpb24gb3IgY29uc3RyYWludHMgdmlvbGF0aW9ucyBvZiB0aGUgZXhpc3RpbmcgdGV4dCBhbm5vdGF0aW9uXG5cdFx0aWYgKGNvbmZpZy52YWx1ZSA9PT0gXCJcIikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChjb25maWcuY2hlY2tEZXNjcmlwdGlvbikge1xuXHRcdFx0Y29uc3QgdmFsdWVoZWxwUGF5bG9hZCA9IHZhbHVlSGVscC5nZXRQYXlsb2FkKCkgYXMgVmFsdWVIZWxwUGF5bG9hZDtcblx0XHRcdGNvbnN0IGRlc2NyaXB0aW9uUGF0aCA9IHZhbHVlaGVscFBheWxvYWQudmFsdWVIZWxwRGVzY3JpcHRpb25QYXRoO1xuXHRcdFx0Y29uc3QgbWF4TGVuZ3RoID0gdmFsdWVoZWxwUGF5bG9hZD8ubWF4TGVuZ3RoO1xuXHRcdFx0Y29uc3QgdmFsdWVMZW5ndGggPSBjb25maWcudmFsdWUgIT09IG51bGwgJiYgY29uZmlnLnZhbHVlICE9PSB1bmRlZmluZWQgPyBjb25maWcudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggOiAwO1xuXHRcdFx0aWYgKGRlc2NyaXB0aW9uUGF0aCA9PT0gXCJcIikge1xuXHRcdFx0XHQvLyBJbiBjYXNlIHRoZSBwcm9wZXJ0eSB2YWx1ZSBoZWxwIGNvbGxlY3Rpb24gaGFzIG5vIHRleHQgYW5ub3RhdGlvbiAoZGVzY3JpcHRpb25QYXRoIGlzIGVtcHR5KSB0aGUgZGVzY3JpcHRpb24gY2hlY2sgc2hvdWxkbsK0dCBvY2N1ci5cblx0XHRcdFx0Ly8gSW4gc3VjaCBhIGNhc2UgdGhlIG1ldGhvZCBnZXREZXNjcmlwdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBNREMgYW5kIHdpdGhpbiB0aGlzIG1ldGhvZCBhIFNpZGVFZmZlY3QgaXMgcmVxdWVzdGVkIHRvIHJldHJpZXZlIHRoZSB0ZXh0IGZyb20gdGhlIHRleHQgcHJvcGVydHkgb2YgdGhlIG1haW4gZW50aXR5XG5cdFx0XHRcdGNvbmZpZy5jaGVja0Rlc2NyaXB0aW9uID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG1heExlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG5cdFx0XHRcdC8vdmFsdWUgbGVuZ3RoIGlzID4gdGV4dCBwcm9lcGVydHkgbGVuZ3RoIGNvbnN0cmFpbnRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gRmllbGRCYXNlRGVsZWdhdGUuZ2V0SXRlbUZvclZhbHVlKGZpZWxkLCB2YWx1ZUhlbHAsIGNvbmZpZyk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgdGhlIGRlc2NyaXB0aW9uIGZvciBhIGdpdmVuIGtleS5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gaW5zdGFuY2Vcblx0ICogQHBhcmFtIHZhbHVlSGVscCBGaWVsZCBoZWxwIGFzc2lnbmVkIHRvIHRoZSA8Y29kZT5GaWVsZDwvY29kZT4gb3IgPGNvZGU+RmlsdGVyRmllbGQ8L2NvZGU+IGNvbnRyb2xcblx0ICogQHBhcmFtIGtleSBLZXkgdmFsdWUgb2YgdGhlIGRlc2NyaXB0aW9uXG5cdCAqIEBwYXJhbSBfY29uZGl0aW9uSW4gSW4gcGFyYW1ldGVycyBmb3IgdGhlIGtleSAobm8gbG9uZ2VyIHN1cHBvcnRlZClcblx0ICogQHBhcmFtIF9jb25kaXRpb25PdXQgT3V0IHBhcmFtZXRlcnMgZm9yIHRoZSBrZXkgKG5vIGxvbmdlciBzdXBwb3J0ZWQpXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBCaW5kaW5nQ29udGV4dCA8Y29kZT5CaW5kaW5nQ29udGV4dDwvY29kZT4gb2YgdGhlIGNoZWNrZWQgZmllbGQuIEluc2lkZSBhIHRhYmxlLCB0aGUgPGNvZGU+VmFsdWVIZWxwPC9jb2RlPiBlbGVtZW50IGNhbiBiZSBjb25uZWN0ZWQgdG8gYSBkaWZmZXJlbnQgcm93XG5cdCAqIEBwYXJhbSBfQ29uZGl0aW9uTW9kZWwgQ29uZGl0aW9uTW9kZWw8L2NvZGU+LCBpZiBib3VuZCB0byBvbmVcblx0ICogQHBhcmFtIF9jb25kaXRpb25Nb2RlbE5hbWUgTmFtZSBvZiB0aGUgPGNvZGU+Q29uZGl0aW9uTW9kZWw8L2NvZGU+LCBpZiBib3VuZCB0byBvbmVcblx0ICogQHBhcmFtIGNvbmRpdGlvblBheWxvYWQgQWRkaXRpb25hbCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciB0aGlzIGtleVxuXHQgKiBAcGFyYW0gY29udHJvbCBJbnN0YW5jZSBvZiB0aGUgY2FsbGluZyBjb250cm9sXG5cdCAqIEBwYXJhbSBfdHlwZSBUeXBlIG9mIHRoZSB2YWx1ZVxuXHQgKiBAcmV0dXJucyBEZXNjcmlwdGlvbiBmb3IgdGhlIGtleSBvciBvYmplY3QgY29udGFpbmluZyBhIGRlc2NyaXB0aW9uLCBrZXkgYW5kIHBheWxvYWQuIElmIHRoZSBkZXNjcmlwdGlvbiBpcyBub3QgYXZhaWxhYmxlIHJpZ2h0IGF3YXkgKGl0IG11c3QgYmUgcmVxdWVzdGVkKSwgYSA8Y29kZT5Qcm9taXNlPC9jb2RlPiBpcyByZXR1cm5lZFxuXHQgKi9cblx0Z2V0RGVzY3JpcHRpb246IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRmaWVsZDogRmllbGQgfCBudWxsLFxuXHRcdHZhbHVlSGVscDogVmFsdWVIZWxwLFxuXHRcdGtleTogc3RyaW5nLFxuXHRcdF9jb25kaXRpb25Jbjogb2JqZWN0LFxuXHRcdF9jb25kaXRpb25PdXQ6IG9iamVjdCxcblx0XHRiaW5kaW5nQ29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCxcblx0XHRfQ29uZGl0aW9uTW9kZWw6IENvbmRpdGlvbk1vZGVsLFxuXHRcdF9jb25kaXRpb25Nb2RlbE5hbWU6IHN0cmluZyxcblx0XHRjb25kaXRpb25QYXlsb2FkOiBDb25kaXRpb25QYXlsb2FkTWFwLFxuXHRcdGNvbnRyb2w6IENvbnRyb2wsXG5cdFx0X3R5cGU6IHVua25vd25cblx0KSB7XG5cdFx0Ly9KSVJBOiBGSU9SSVRFQ0hQMS0yMjAyMiAuIFRoZSBNREMgZmllbGQgc2hvdWxkIG5vdCAgdHJpZXMgdG8gZGV0ZXJtaW5lIGRlc2NyaXB0aW9uIHdpdGggdGhlIGluaXRpYWwgR0VUIG9mIHRoZSBkYXRhLlxuXHRcdC8vIGl0IHNob3VsZCByZWx5IG9uIHRoZSBkYXRhIHdlIGFscmVhZHkgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZFxuXHRcdC8vIEJ1dCBUaGUgZ2V0RGVzY3JpcHRpb24gZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgaW4gdGhlIEZpbHRlckZpZWxkIGNhc2UgaWYgYSB2YXJpYW50IGlzIGxvYWRlZC5cblx0XHQvLyBBcyB0aGUgZGVzY3JpcHRpb24gdGV4dCBjb3VsZCBiZSBsYW5ndWFnZSBkZXBlbmRlbnQgaXQgaXMgbm90IHN0b3JlZCBpbiB0aGUgdmFyaWFudCwgc28gaXQgbmVlZHMgdG8gYmUgcmVhZCBvbiByZW5kZXJpbmcuXG5cblx0XHRsZXQgcGF5bG9hZCA9IGZpZWxkPy5nZXRQYXlsb2FkKCkgYXMgRmllbGRQYXlsb2FkO1xuXG5cdFx0LyogUmV0cmlldmUgdGV4dCBmcm9tIHZhbHVlIGhlbHAsIGlmIHZhbHVlIHdhcyBzZXQgYnkgb3V0LXBhcmFtZXRlciAoQkNQIDIyNzAxNjA2MzMpICovXG5cdFx0aWYgKCFwYXlsb2FkICYmIChjb250cm9sIGFzIEZpZWxkQmFzZSk/LmdldERpc3BsYXkoKS5pbmNsdWRlcyhcIkRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRwYXlsb2FkID0ge1xuXHRcdFx0XHRyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0OiB0cnVlXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmIChwYXlsb2FkPy5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID09PSB0cnVlIHx8IHBheWxvYWQ/LmlzRmlsdGVyRmllbGQgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IGRhdGFNb2RlbCA9IHZhbHVlSGVscC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBkYXRhTW9kZWxcblx0XHRcdFx0PyBkYXRhTW9kZWwuZ2V0TWV0YU1vZGVsKClcblx0XHRcdFx0OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmFsdWVIZWxwIGFzIHVua25vd24gYXMgQ29udHJvbClcblx0XHRcdFx0XHRcdC5nZXRNb2RlbCgpXG5cdFx0XHRcdFx0XHQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCB2YWx1ZWhlbHBQYXlsb2FkID0gdmFsdWVIZWxwLmdldFBheWxvYWQoKSBhcyBWYWx1ZUhlbHBQYXlsb2FkO1xuXHRcdFx0Y29uc3QgdmFsdWVoZWxwQ29uZGl0aW9uUGF5bG9hZCA9IGNvbmRpdGlvblBheWxvYWQ/Llt2YWx1ZWhlbHBQYXlsb2FkLnZhbHVlSGVscFF1YWxpZmllcl07XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSB2YWx1ZWhlbHBQYXlsb2FkLnByb3BlcnR5UGF0aDtcblx0XHRcdGNvbnN0IHByb3BlcnR5RGVzY3JpcHRpb25QYXRoID0gdmFsdWVoZWxwUGF5bG9hZD8ucHJvcGVydHlEZXNjcmlwdGlvblBhdGg7XG5cdFx0XHRsZXQgdGV4dFByb3BlcnR5OiBzdHJpbmc7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8qIFJlcXVlc3QgdmFsdWUgaGVscCBtZXRhZGF0YSAqL1xuXHRcdFx0XHRjb25zdCB2YWx1ZUxpc3RJbmZvID0gKGF3YWl0IG1ldGFNb2RlbC5yZXF1ZXN0VmFsdWVMaXN0SW5mbyhcblx0XHRcdFx0XHRwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dFxuXHRcdFx0XHQpKSBhcyBBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZUJ5UXVhbGlmaWVyO1xuXG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5TmFtZSA9IG1ldGFNb2RlbC5nZXRPYmplY3QoYCR7cHJvcGVydHlQYXRofUBzYXB1aS5uYW1lYCkgYXMgc3RyaW5nO1xuXHRcdFx0XHQvLyB0YWtlIHRoZSBmaXJzdCB2YWx1ZSBsaXN0IGFubm90YXRpb24gLSBhbHRlcm5hdGl2ZWx5IHRha2UgdGhlIG9uZSB3aXRob3V0IHF1YWxpZmllciBvciB0aGUgZmlyc3Qgb25lXG5cdFx0XHRcdGNvbnN0IHZhbHVlTGlzdCA9IHZhbHVlTGlzdEluZm9bT2JqZWN0LmtleXModmFsdWVMaXN0SW5mbylbMF1dO1xuXHRcdFx0XHRjb25zdCB2YWx1ZUhlbHBQYXJhbWV0ZXJzID0gdGhpcy5fZ2V0VmFsdWVMaXN0UGFyYW1ldGVyKHZhbHVlTGlzdCwgcHJvcGVydHlOYW1lKTtcblx0XHRcdFx0Y29uc3QgdmFsdWVIZWxwUHJvcGVydHkgPSB2YWx1ZUhlbHBQYXJhbWV0ZXJzPy5bMF0/LlZhbHVlTGlzdFByb3BlcnR5O1xuXHRcdFx0XHRpZiAoIXZhbHVlSGVscFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoYEluY29uc2lzdGVudCB2YWx1ZSBoZWxwIGFubm90YXRpb24gZm9yICR7cHJvcGVydHlOYW1lfWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGdldCB0ZXh0IGFubm90YXRpb24gZm9yIHRoaXMgdmFsdWUgbGlzdCBwcm9wZXJ0eVxuXHRcdFx0XHRjb25zdCB2YWx1ZUxpc3RNb2RlbCA9IHZhbHVlTGlzdC4kbW9kZWw7XG5cdFx0XHRcdGNvbnN0IHRleHRBbm5vdGF0aW9uID0gdmFsdWVMaXN0TW9kZWxcblx0XHRcdFx0XHQuZ2V0TWV0YU1vZGVsKClcblx0XHRcdFx0XHQuZ2V0T2JqZWN0KGAvJHt2YWx1ZUxpc3QuQ29sbGVjdGlvblBhdGh9LyR7dmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0YCk7XG5cdFx0XHRcdGlmICh0ZXh0QW5ub3RhdGlvbiAmJiB0ZXh0QW5ub3RhdGlvbi4kUGF0aCkge1xuXHRcdFx0XHRcdHRleHRQcm9wZXJ0eSA9IHRleHRBbm5vdGF0aW9uLiRQYXRoO1xuXHRcdFx0XHRcdC8qIEJ1aWxkIHRoZSBmaWx0ZXIgZm9yIHRoZSByZWxldmFudCBwYXJhbWV0ZXJzICovXG5cdFx0XHRcdFx0Y29uc3QgZmlsdGVycyA9IHRoaXMuX2dldEZpbHRlcihcblx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcblx0XHRcdFx0XHRcdHByb3BlcnR5TmFtZSxcblx0XHRcdFx0XHRcdHZhbHVlSGVscFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0dmFsdWVoZWxwUGF5bG9hZCxcblx0XHRcdFx0XHRcdHZhbHVlaGVscENvbmRpdGlvblBheWxvYWQsXG5cdFx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y29uc3QgbGlzdEJpbmRpbmcgPSB2YWx1ZUxpc3RNb2RlbC5iaW5kTGlzdChgLyR7dmFsdWVMaXN0LkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmaWx0ZXJzLCB7XG5cdFx0XHRcdFx0XHQkc2VsZWN0OiB0ZXh0UHJvcGVydHlcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQvKiBSZXF1ZXN0IGRlc2NyaXB0aW9uIGZvciBnaXZlbiBrZXkgZnJvbSB2YWx1ZSBsaXN0IGVudGl0eSAqL1xuXHRcdFx0XHRcdGNvbnN0IGNvbnRleHRzID0gYXdhaXQgbGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDIpO1xuXHRcdFx0XHRcdHJldHVybiBjb250ZXh0cy5sZW5ndGggPyBjb250ZXh0c1swXS5nZXRPYmplY3QodGV4dFByb3BlcnR5KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0fSBlbHNlIGlmIChiaW5kaW5nQ29udGV4dCAhPT0gdW5kZWZpbmVkICYmIHByb3BlcnR5RGVzY3JpcHRpb25QYXRoKSB7XG5cdFx0XHRcdFx0Y29uc3QgbGFzdEluZGV4ID0gcHJvcGVydHlEZXNjcmlwdGlvblBhdGgubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRcdFx0XHRcdGNvbnN0IHNpZGVFZmZlY3RQYXRoID0gbGFzdEluZGV4ID4gMCA/IHByb3BlcnR5RGVzY3JpcHRpb25QYXRoLnN1YnN0cmluZygwLCBsYXN0SW5kZXgpIDogcHJvcGVydHlEZXNjcmlwdGlvblBhdGg7XG5cdFx0XHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNTZXJ2aWNlID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZhbHVlSGVscCBhcyB1bmtub3duIGFzIENvbnRyb2wpLmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXHRcdFx0XHRcdGF3YWl0IHNpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMoW3NpZGVFZmZlY3RQYXRoXSwgYmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFx0YFJlcXVlc3RTaWRlRWZmZWN0cyBpcyB0cmlnZ2VyZWQgYmVjYXVzZSB0aGUgdGV4dCBhbm5vdGF0aW9uIGZvciAke3ZhbHVlSGVscFByb3BlcnR5fSBpcyBub3QgZGVmaW5lZCBhdCB0aGUgQ29sbGVjdGlvblBhdGggb2YgdGhlIHZhbHVlIGhlbHBgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgVGV4dCBBbm5vdGF0aW9uIGZvciAke3ZhbHVlSGVscFByb3BlcnR5fSBpcyBub3QgZGVmaW5lZGApO1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGNvbnN0IHN0YXR1cyA9IGVycm9yID8gKGVycm9yIGFzIFhNTEh0dHBSZXF1ZXN0KS5zdGF0dXMgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRcdGNvbnN0IG1zZyA9IHN0YXR1cyA9PT0gNDA0ID8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtzdGF0dXN9KSBmb3IgdmFsdWUgaGVscCBvZiBwcm9wZXJ0eSAke3Byb3BlcnR5UGF0aH1gIDogbWVzc2FnZTtcblx0XHRcdFx0TG9nLmVycm9yKG1zZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O1NBNENlQSxNQUFNLENBQUNDLE1BQU0s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
|
|
@@ -184,7 +184,7 @@ export default Object.assign({}, FieldBaseDelegate, {
|
|
|
184
184
|
const sourcePath = parameter.LocalDataProperty?.$PropertyPath;
|
|
185
185
|
const conditionPayload = valuehelpConditionPayload?.[0];
|
|
186
186
|
filterValue = sourcePath && conditionPayload?.[sourcePath];
|
|
187
|
-
} else if (bindingContext
|
|
187
|
+
} else if (bindingContext) {
|
|
188
188
|
// if the value help is not used try getting the filter value from the binding context
|
|
189
189
|
const sourcePath = parameter.LocalDataProperty?.$PropertyPath;
|
|
190
190
|
filterValue = bindingContext.getObject(sourcePath);
|
|
@@ -11,6 +11,7 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/buil
|
|
|
11
11
|
var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
|
|
12
12
|
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
13
13
|
var ifElse = BindingToolkit.ifElse;
|
|
14
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
14
15
|
var equal = BindingToolkit.equal;
|
|
15
16
|
var compileExpression = BindingToolkit.compileExpression;
|
|
16
17
|
var UI = BindingHelper.UI;
|
|
@@ -236,9 +237,7 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/buil
|
|
|
236
237
|
idPart = facetPath;
|
|
237
238
|
}
|
|
238
239
|
const titleLevel = FormHelper.getFormContainerTitleLevel(this.title, this.titleLevel);
|
|
239
|
-
const title = this.useFormContainerLabels && facet ?
|
|
240
|
-
context: facetContext
|
|
241
|
-
}) : "";
|
|
240
|
+
const title = this.useFormContainerLabels && facet.Label ? getExpressionFromAnnotation(facet.Label) : "";
|
|
242
241
|
const id = this.id ? getFormContainerID(idPart) : undefined;
|
|
243
242
|
return xml`
|
|
244
243
|
<macro:FormContainer
|
|
@@ -454,4 +453,4 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/buil
|
|
|
454
453
|
_exports = FormBlock;
|
|
455
454
|
return _exports;
|
|
456
455
|
}, false);
|
|
457
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25UeXBlcyIsImJsb2NrRXZlbnQiLCJibG9ja0FnZ3JlZ2F0aW9uIiwic2xvdCIsImlzRGVmYXVsdCIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJmb3JtQ29udGFpbmVycyIsInVuZGVmaW5lZCIsIm9Db250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1FeHRyYVNldHRpbmdzIiwib0ZhY2V0RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsImhhc0ZpZWxkR3JvdXAiLCIkVHlwZSIsIkxhYmVsIiwiVGFyZ2V0IiwiJHRhcmdldCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInBhdGgiLCJ0ZXJtIiwidmFsdWUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiYW5ub3RhdGlvbnMiLCJmaWVsZHMiLCJmb3JtRWxlbWVudHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJvRm9ybURlZmluaXRpb24iLCJjcmVhdGVGb3JtRGVmaW5pdGlvbiIsImlzVmlzaWJsZSIsImFubm90YXRpb25QYXRoIiwiZ2V0UGF0aCIsInVzZUZvcm1Db250YWluZXJMYWJlbHMiLCJmYWNldFR5cGUiLCJnZXRPYmplY3QiLCJfYXBpSWQiLCJjcmVhdGVJZCIsIl9jb250ZW50SWQiLCJpZCIsImRpc3BsYXlNb2RlIiwiX2VkaXRhYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJlcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiVUkiLCJJc0VkaXRhYmxlIiwiZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbiIsImZvcm1Db250YWluZXIiLCJmYWNldENvbnRleHQiLCJmYWNldCIsIm5hdmlnYXRpb25QYXRoIiwiaWRQYXJ0IiwiQW5ub3RhdGlvbkhlbHBlciIsImdldE5hdmlnYXRpb25QYXRoIiwiY29udGV4dFBhdGhQYXRoIiwiZmFjZXRQYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNoYXJBdCIsInNsaWNlIiwidGl0bGVMZXZlbCIsIkZvcm1IZWxwZXIiLCJnZXRGb3JtQ29udGFpbmVyVGl0bGVMZXZlbCIsInRpdGxlIiwibGFiZWwiLCJjb250ZXh0IiwiZ2V0Rm9ybUNvbnRhaW5lcklEIiwieG1sIiwiYXR0ciIsImVudGl0eVNldCIsIm9uQ2hhbmdlIiwiYWN0aW9ucyIsImdldEZvcm1Db250YWluZXJzIiwiaW5jbHVkZXMiLCJtYXAiLCJmb3JtQ29udGFpbmVySWR4IiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImlzUmVmZXJlbmNlRmFjZXRQYXJ0T2ZQcmV2aWV3IiwicGFydE9mUHJldmlldyIsIiRBbm5vdGF0aW9uUGF0aCIsImdldExheW91dEluZm9ybWF0aW9uIiwibGF5b3V0IiwiYWRqdXN0TGFiZWxTcGFuIiwiYnJlYWtwb2ludEwiLCJicmVha3BvaW50TSIsImJyZWFrcG9pbnRYTCIsImNvbHVtbnNMIiwiY29sdW1uc00iLCJjb2x1bW5zWEwiLCJlbXB0eVNwYW5MIiwiZW1wdHlTcGFuTSIsImVtcHR5U3BhblMiLCJlbXB0eVNwYW5YTCIsImxhYmVsU3BhbkwiLCJsYWJlbFNwYW5NIiwibGFiZWxTcGFuUyIsImxhYmVsU3BhblhMIiwic2luZ2xlQ29udGFpbmVyRnVsbFNpemUiLCJsYWJlbENlbGxzTGFyZ2UiLCJlbXB0eUNlbGxzTGFyZ2UiLCJnZXRUZW1wbGF0ZSIsIm9uQ2hhbmdlU3RyIiwicmVwbGFjZSIsIm1ldGFQYXRoUGF0aCIsImFkZENvbmRpdGlvbmFsbHkiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIlRpdGxlTGV2ZWwiLCJBdXRvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGb3JtLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRmFjZXRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgYmxvY2tBZ2dyZWdhdGlvbiwgYmxvY2tBdHRyaWJ1dGUsIGJsb2NrRXZlbnQsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB7IHhtbCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtQ29udGFpbmVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1EZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGdldEZvcm1Db250YWluZXJJRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGlmRWxzZSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgRm9ybUhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1IZWxwZXJcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgeyAkQ29sdW1uTGF5b3V0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0NvbHVtbkxheW91dFwiO1xuaW1wb3J0IHR5cGUgeyAkUmVzcG9uc2l2ZUdyaWRMYXlvdXRTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vUmVzcG9uc2l2ZUdyaWRMYXlvdXRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcblxudHlwZSBDb2x1bW5MYXlvdXQgPSAkQ29sdW1uTGF5b3V0U2V0dGluZ3MgJiB7XG5cdHR5cGU6IFwiQ29sdW1uTGF5b3V0XCI7XG59O1xudHlwZSBSZXNwb25zaXZlR3JpZExheW91dCA9ICRSZXNwb25zaXZlR3JpZExheW91dFNldHRpbmdzICYge1xuXHR0eXBlOiBcIlJlc3BvbnNpdmVHcmlkTGF5b3V0XCI7XG59O1xudHlwZSBGb3JtTGF5b3V0SW5mb3JtYXRpb24gPSBDb2x1bW5MYXlvdXQgfCBSZXNwb25zaXZlR3JpZExheW91dDtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGb3JtIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIEl0IGlzIGRlc2lnbmVkIHRvIHdvcmsgYmFzZWQgb24gYSBGaWVsZEdyb3VwIGFubm90YXRpb24gYnV0IGNhbiBhbHNvIHdvcmsgaWYgeW91IHByb3ZpZGUgYSBSZWZlcmVuY2VGYWNldCBvciBhIENvbGxlY3Rpb25GYWNldFxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNybzpGb3JtIGlkPVwiTXlGb3JtXCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cCNHZW5lcmFsSW5mb3JtYXRpb25cIiAvJmd0O1xuICogPC9wcmU+XG4gKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuRm9ybVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRm9ybVwiLFxuXHRuYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHRwdWJsaWNOYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRyZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1BUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZSB7XG5cdC8qKlxuXHQgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZm9ybSBjb250cm9sLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSBvciBibG9jay5cblx0ICogVGhpcyBzZXR0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZyYW1ld29yay5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCIsIFwiU2luZ2xldG9uXCIsIFwiRW50aXR5VHlwZVwiXVxuXHR9KVxuXHRjb250ZXh0UGF0aCE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIHByb3BlcnR5IGluIHRoZSBtZXRhbW9kZWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHRQYXRoLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRleHBlY3RlZEFubm90YXRpb25UeXBlczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwVHlwZVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIlxuXHRcdF0sXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIFRoZSBtYW5pZmVzdCBkZWZpbmVkIGZvcm0gY29udGFpbmVycyB0byBiZSBzaG93biBpbiB0aGUgYWN0aW9uIGFyZWEgb2YgdGhlIHRhYmxlXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0Zm9ybUNvbnRhaW5lcnM/OiBGb3JtQ29udGFpbmVyW107XG5cblx0LyoqXG5cdCAqIENvbnRyb2wgdGhlIHJlbmRlcmluZyBvZiB0aGUgZm9ybSBjb250YWluZXIgbGFiZWxzXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVG9nZ2xlIFByZXZpZXc6IFBhcnQgb2YgUHJldmlldyAvIFByZXZpZXcgdmlhICdTaG93IE1vcmUnIEJ1dHRvblxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cGFydE9mUHJldmlldyA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGUgZm9ybSBjb250cm9sLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aXRsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgXCJhcmlhLWxldmVsXCIgb2YgdGhlIGZvcm0gdGl0bGUsIHRpdGxlcyBvZiBpbnRlcm5hbGx5IHVzZWQgZm9ybSBjb250YWluZXJzIGFyZSBuZXN0ZWQgc3Vic2VxdWVudGx5XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0dGl0bGVMZXZlbDogVGl0bGVMZXZlbCA9IFRpdGxlTGV2ZWwuQXV0bztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRpc3BsYXlNb2RlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFx0SWYgc2V0IHRvIGZhbHNlLCB0aGUgRm9ybSBpcyBub3QgcmVuZGVyZWQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlzVmlzaWJsZSA9IFwidHJ1ZVwiO1xuXHQvLyBJbmRlcGVuZGVudCBmcm9tIHRoZSBmb3JtIHRpdGxlLCBjYW4gYmUgYSBiaXQgY29uZnVzaW5nIGluIHN0YW5kYWxvbmUgdXNhZ2UgYXQgaXMgbm90IHNob3dpbmcgYW55dGhpbmcgYnkgZGVmYXVsdFxuXG5cdC8vIEp1c3QgcHJveGllZCBkb3duIHRvIHRoZSBGaWVsZCBtYXkgbmVlZCB0byBzZWUgaWYgbmVlZGVkIG9yIG5vdFxuXHRAYmxvY2tFdmVudCgpXG5cdG9uQ2hhbmdlPzogc3RyaW5nO1xuXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUVsZW1lbnRcIiwgaXNQdWJsaWM6IHRydWUsIHNsb3Q6IFwiZm9ybUVsZW1lbnRzXCIsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRmb3JtRWxlbWVudHM/OiBhbnk7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCB0byBiZSB1c2VkIHdpdGhpbiB0aGUgZm9ybS5cblx0ICogSXQgZGVmYXVsdHMgdG8gdGhlIENvbHVtbkxheW91dCwgYnV0IHlvdSBjYW4gYWxzbyB1c2UgYSBSZXNwb25zaXZlR3JpZExheW91dC5cblx0ICogQWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBSZXNwb25zaXZlR3JpZExheW91dCBjYW4gYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcIm9iamVjdFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRsYXlvdXQ6IEZvcm1MYXlvdXRJbmZvcm1hdGlvbiA9IHsgdHlwZTogXCJDb2x1bW5MYXlvdXRcIiwgY29sdW1uc006IDIsIGNvbHVtbnNYTDogNiwgY29sdW1uc0w6IDMsIGxhYmVsQ2VsbHNMYXJnZTogMTIgfTtcblxuXHQvLyBVc2VmdWwgZm9yIG91ciBkeW5hbWljIHRoaW5nIGJ1dCBhbHNvIGRlcGVuZHMgb24gdGhlIG1ldGFkYXRhIC0+IG1ha2Ugc3VyZSB0aGlzIGlzIHRha2VuIGludG8gYWNjb3VudFxuXHRfZWRpdGFibGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdF9hcGlJZDogc3RyaW5nO1xuXG5cdF9jb250ZW50SWQ6IHN0cmluZztcblxuXHRmYWNldFR5cGU6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZvcm1CbG9jaz4sIGNvbmZpZ3VyYXRpb246IGFueSwgbVNldHRpbmdzOiBhbnkpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgbVNldHRpbmdzKTtcblx0XHRpZiAodGhpcy5tZXRhUGF0aCAmJiB0aGlzLmNvbnRleHRQYXRoICYmICh0aGlzLmZvcm1Db250YWluZXJzID09PSB1bmRlZmluZWQgfHwgdGhpcy5mb3JtQ29udGFpbmVycyA9PT0gbnVsbCkpIHtcblx0XHRcdGNvbnN0IG9Db250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdGNvbnN0IG1FeHRyYVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdFx0XHRsZXQgb0ZhY2V0RGVmaW5pdGlvbiA9IG9Db250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRsZXQgaGFzRmllbGRHcm91cCA9IGZhbHNlO1xuXHRcdFx0aWYgKG9GYWNldERlZmluaXRpb24gJiYgb0ZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRmllbGRHcm91cFR5cGUpIHtcblx0XHRcdFx0Ly8gV3JhcCB0aGUgZmFjZXQgaW4gYSBmYWtlIEZhY2V0IGFubm90YXRpb25cblx0XHRcdFx0aGFzRmllbGRHcm91cCA9IHRydWU7XG5cdFx0XHRcdG9GYWNldERlZmluaXRpb24gPSB7XG5cdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIixcblx0XHRcdFx0XHRMYWJlbDogb0ZhY2V0RGVmaW5pdGlvbi5MYWJlbCxcblx0XHRcdFx0XHRUYXJnZXQ6IHtcblx0XHRcdFx0XHRcdCR0YXJnZXQ6IG9GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG9GYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0cGF0aDogXCJcIixcblx0XHRcdFx0XHRcdHRlcm06IFwiXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChvQ29udGV4dE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uczoge30sXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBvRmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRtRXh0cmFTZXR0aW5nc1tvRmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZV0gPSB7IGZpZWxkczogdGhpcy5mb3JtRWxlbWVudHMgfTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgb0NvbnZlcnRlckNvbnRleHQgPSB0aGlzLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHRcdG9Db250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdFx0Lyp0aGlzLmNvbnRleHRQYXRoKi8gdW5kZWZpbmVkLFxuXHRcdFx0XHRtU2V0dGluZ3MsXG5cdFx0XHRcdG1FeHRyYVNldHRpbmdzXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3Qgb0Zvcm1EZWZpbml0aW9uID0gY3JlYXRlRm9ybURlZmluaXRpb24ob0ZhY2V0RGVmaW5pdGlvbiwgdGhpcy5pc1Zpc2libGUsIG9Db252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGlmIChoYXNGaWVsZEdyb3VwKSB7XG5cdFx0XHRcdG9Gb3JtRGVmaW5pdGlvbi5mb3JtQ29udGFpbmVyc1swXS5hbm5vdGF0aW9uUGF0aCA9IHRoaXMubWV0YVBhdGguZ2V0UGF0aCgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5mb3JtQ29udGFpbmVycyA9IG9Gb3JtRGVmaW5pdGlvbi5mb3JtQ29udGFpbmVycztcblx0XHRcdHRoaXMudXNlRm9ybUNvbnRhaW5lckxhYmVscyA9IG9Gb3JtRGVmaW5pdGlvbi51c2VGb3JtQ29udGFpbmVyTGFiZWxzO1xuXHRcdFx0dGhpcy5mYWNldFR5cGUgPSBvRmFjZXREZWZpbml0aW9uICYmIG9GYWNldERlZmluaXRpb24uJFR5cGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZmFjZXRUeXBlID0gdGhpcy5tZXRhUGF0aC5nZXRPYmplY3QoKT8uJFR5cGU7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLmlzUHVibGljKSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuY3JlYXRlSWQoXCJGb3JtXCIpITtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IHRoaXMuaWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IGAke3RoaXMuaWR9LWNvbnRlbnRgO1xuXHRcdH1cblx0XHQvLyBpZiBkaXNwbGF5TW9kZSA9PT0gdHJ1ZSAtPiBfZWRpdGFibGUgPSBmYWxzZVxuXHRcdC8vIGlmIGRpc3BsYXlNb2RlID09PSBmYWxzZSAtPiBfZWRpdGFibGUgPSB0cnVlXG5cdFx0Ly8gID0+IGlmIGRpc3BsYXlNb2RlID09PSB7bXlCaW5kaW5nVmFsdWV9IC0+IF9lZGl0YWJsZSA9IHtteUJpbmRpbmdWYWx1ZX0gPT09IHRydWUgPyB0cnVlIDogZmFsc2Vcblx0XHQvLyBpZiBEaXNwbGF5TW9kZSA9PT0gdW5kZWZpbmVkIC0+IF9lZGl0YWJsZSA9IHt1aT4vaXNFZGl0YWJsZX1cblx0XHRpZiAodGhpcy5kaXNwbGF5TW9kZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLl9lZGl0YWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChyZXNvbHZlQmluZGluZ1N0cmluZyh0aGlzLmRpc3BsYXlNb2RlLCBcImJvb2xlYW5cIiksIGZhbHNlKSwgdHJ1ZSwgZmFsc2UpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fZWRpdGFibGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdH1cblxuXHRnZXREYXRhRmllbGRDb2xsZWN0aW9uKGZvcm1Db250YWluZXI6IEZvcm1Db250YWluZXIsIGZhY2V0Q29udGV4dDogQ29udGV4dCkge1xuXHRcdGNvbnN0IGZhY2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKGZhY2V0Q29udGV4dCkudGFyZ2V0T2JqZWN0IGFzIEZhY2V0VHlwZXM7XG5cdFx0bGV0IG5hdmlnYXRpb25QYXRoO1xuXHRcdGxldCBpZFBhcnQ7XG5cdFx0aWYgKGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCkge1xuXHRcdFx0bmF2aWdhdGlvblBhdGggPSBBbm5vdGF0aW9uSGVscGVyLmdldE5hdmlnYXRpb25QYXRoKGZhY2V0LlRhcmdldC52YWx1ZSk7XG5cdFx0XHRpZFBhcnQgPSBmYWNldDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGhQYXRoID0gdGhpcy5jb250ZXh0UGF0aC5nZXRQYXRoKCk7XG5cdFx0XHRsZXQgZmFjZXRQYXRoID0gZmFjZXRDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGlmIChmYWNldFBhdGguc3RhcnRzV2l0aChjb250ZXh0UGF0aFBhdGgpKSB7XG5cdFx0XHRcdGZhY2V0UGF0aCA9IGZhY2V0UGF0aC5zdWJzdHJpbmcoY29udGV4dFBhdGhQYXRoLmxlbmd0aCk7XG5cdFx0XHRcdGlmIChmYWNldFBhdGguY2hhckF0KDApID09PSBcIi9cIikge1xuXHRcdFx0XHRcdGZhY2V0UGF0aCA9IGZhY2V0UGF0aC5zbGljZSgxKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bmF2aWdhdGlvblBhdGggPSBBbm5vdGF0aW9uSGVscGVyLmdldE5hdmlnYXRpb25QYXRoKGZhY2V0UGF0aCk7XG5cdFx0XHRpZFBhcnQgPSBmYWNldFBhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHRpdGxlTGV2ZWwgPSBGb3JtSGVscGVyLmdldEZvcm1Db250YWluZXJUaXRsZUxldmVsKHRoaXMudGl0bGUsIHRoaXMudGl0bGVMZXZlbCk7XG5cdFx0Y29uc3QgdGl0bGUgPSB0aGlzLnVzZUZvcm1Db250YWluZXJMYWJlbHMgJiYgZmFjZXQgPyAoQW5ub3RhdGlvbkhlbHBlci5sYWJlbChmYWNldCwgeyBjb250ZXh0OiBmYWNldENvbnRleHQgfSkgYXMgc3RyaW5nKSA6IFwiXCI7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLmlkID8gZ2V0Rm9ybUNvbnRhaW5lcklEKGlkUGFydCkgOiB1bmRlZmluZWQ7XG5cblx0XHRyZXR1cm4geG1sYFxuXHRcdFx0XHRcdDxtYWNybzpGb3JtQ29udGFpbmVyXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0XHQke3RoaXMuYXR0cihcImlkXCIsIGlkKX1cblx0XHRcdFx0XHR0aXRsZT1cIiR7dGl0bGV9XCJcblx0XHRcdFx0XHR0aXRsZUxldmVsPVwiJHt0aXRsZUxldmVsfVwiXG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9XCIke25hdmlnYXRpb25QYXRoID8gZm9ybUNvbnRhaW5lci5lbnRpdHlTZXQgOiB0aGlzLmNvbnRleHRQYXRofVwiXG5cdFx0XHRcdFx0bWV0YVBhdGg9XCIke2ZhY2V0Q29udGV4dH1cIlxuXHRcdFx0XHRcdGRhdGFGaWVsZENvbGxlY3Rpb249XCIke2Zvcm1Db250YWluZXIuZm9ybUVsZW1lbnRzfVwiXG5cdFx0XHRcdFx0bmF2aWdhdGlvblBhdGg9XCIke25hdmlnYXRpb25QYXRofVwiXG5cdFx0XHRcdFx0dmlzaWJsZT1cIiR7Zm9ybUNvbnRhaW5lci5pc1Zpc2libGV9XCJcblx0XHRcdFx0XHRkaXNwbGF5TW9kZT1cIiR7dGhpcy5kaXNwbGF5TW9kZX1cIlxuXHRcdFx0XHRcdG9uQ2hhbmdlPVwiJHt0aGlzLm9uQ2hhbmdlfVwiXG5cdFx0XHRcdFx0YWN0aW9ucz1cIiR7Zm9ybUNvbnRhaW5lci5hY3Rpb25zfVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0PG1hY3JvOmZvcm1FbGVtZW50cz5cblx0XHRcdFx0XHQ8c2xvdCBuYW1lPVwiZm9ybUVsZW1lbnRzXCIgLz5cblx0XHRcdFx0PC9tYWNybzpmb3JtRWxlbWVudHM+XG5cdFx0XHQ8L21hY3JvOkZvcm1Db250YWluZXI+YDtcblx0fVxuXG5cdGdldEZvcm1Db250YWluZXJzKCkge1xuXHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIS5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRpZiAodGhpcy5mYWNldFR5cGUuaW5jbHVkZXMoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmZvcm1Db250YWluZXJzIS5tYXAoKGZvcm1Db250YWluZXIsIGZvcm1Db250YWluZXJJZHgpID0+IHtcblx0XHRcdFx0aWYgKGZvcm1Db250YWluZXIuaXNWaXNpYmxlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZmFjZXRDb250ZXh0ID0gdGhpcy5jb250ZXh0UGF0aC5nZXRNb2RlbCgpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGZvcm1Db250YWluZXIuYW5ub3RhdGlvblBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdFx0XHRcdGNvbnN0IGZhY2V0ID0gZmFjZXRDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJlxuXHRcdFx0XHRcdFx0Rm9ybUhlbHBlci5pc1JlZmVyZW5jZUZhY2V0UGFydE9mUHJldmlldyhmYWNldCwgdGhpcy5wYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0aWYgKGZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGguJFR5cGUgPT09IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMuQWRkcmVzc1R5cGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHhtbGA8dGVtcGxhdGU6d2l0aCBwYXRoPVwiZm9ybUNvbnRhaW5lcnM+JHtmb3JtQ29udGFpbmVySWR4fVwiIHZhcj1cImZvcm1Db250YWluZXJcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGU6d2l0aCBwYXRoPVwiZm9ybUNvbnRhaW5lcnM+JHtmb3JtQ29udGFpbmVySWR4fS9hbm5vdGF0aW9uUGF0aFwiIHZhcj1cImZhY2V0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Y29yZTpGcmFnbWVudCBmcmFnbWVudE5hbWU9XCJzYXAuZmUubWFjcm9zLmZvcm0uQWRkcmVzc1NlY3Rpb25cIiB0eXBlPVwiWE1MXCIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlOndpdGg+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGVtcGxhdGU6d2l0aD5gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbihmb3JtQ29udGFpbmVyLCBmYWNldENvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5mYWNldFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIikge1xuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybUNvbnRhaW5lcnMhLm1hcCgoZm9ybUNvbnRhaW5lcikgPT4ge1xuXHRcdFx0XHRpZiAoZm9ybUNvbnRhaW5lci5pc1Zpc2libGUpIHtcblx0XHRcdFx0XHRjb25zdCBmYWNldENvbnRleHQgPSB0aGlzLmNvbnRleHRQYXRoLmdldE1vZGVsKCkuY3JlYXRlQmluZGluZ0NvbnRleHQoZm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbihmb3JtQ29udGFpbmVyLCBmYWNldENvbnRleHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBwcm9wZXIgbGF5b3V0IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBgbGF5b3V0YCBwcm9wZXJ0eSBkZWZpbmVkIGV4dGVybmFsbHkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBsYXlvdXQgaW5mb3JtYXRpb24gZm9yIHRoZSB4bWwuXG5cdCAqL1xuXHRnZXRMYXlvdXRJbmZvcm1hdGlvbigpIHtcblx0XHRzd2l0Y2ggKHRoaXMubGF5b3V0LnR5cGUpIHtcblx0XHRcdGNhc2UgXCJSZXNwb25zaXZlR3JpZExheW91dFwiOlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOlJlc3BvbnNpdmVHcmlkTGF5b3V0IGFkanVzdExhYmVsU3Bhbj1cIiR7dGhpcy5sYXlvdXQuYWRqdXN0TGFiZWxTcGFufVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrcG9pbnRMPVwiJHt0aGlzLmxheW91dC5icmVha3BvaW50TH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha3BvaW50TT1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludE19XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtwb2ludFhMPVwiJHt0aGlzLmxheW91dC5icmVha3BvaW50WEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sdW1uc0w9XCIke3RoaXMubGF5b3V0LmNvbHVtbnNMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zWEw9XCIke3RoaXMubGF5b3V0LmNvbHVtbnNYTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5MPVwiJHt0aGlzLmxheW91dC5lbXB0eVNwYW5MfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVtcHR5U3Bhbk09XCIke3RoaXMubGF5b3V0LmVtcHR5U3Bhbk19XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuUz1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuU31cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5YTD1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuWEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuTD1cIiR7dGhpcy5sYXlvdXQubGFiZWxTcGFuTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbFNwYW5NPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5NfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3BhblM9XCIke3RoaXMubGF5b3V0LmxhYmVsU3BhblN9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuWEw9XCIke3RoaXMubGF5b3V0LmxhYmVsU3BhblhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpbmdsZUNvbnRhaW5lckZ1bGxTaXplPVwiJHt0aGlzLmxheW91dC5zaW5nbGVDb250YWluZXJGdWxsU2l6ZX1cIiAvPmA7XG5cdFx0XHRjYXNlIFwiQ29sdW1uTGF5b3V0XCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOkNvbHVtbkxheW91dFxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNMPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTH1cIlxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNYTD1cIiR7dGhpcy5sYXlvdXQuY29sdW1uc1hMfVwiXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWxDZWxsc0xhcmdlPVwiJHt0aGlzLmxheW91dC5sYWJlbENlbGxzTGFyZ2V9XCJcblx0XHRcdFx0XHRcdFx0XHRlbXB0eUNlbGxzTGFyZ2U9XCIke3RoaXMubGF5b3V0LmVtcHR5Q2VsbHNMYXJnZX1cIiAvPmA7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VGVtcGxhdGUoKSB7XG5cdFx0Y29uc3Qgb25DaGFuZ2VTdHIgPSAodGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlLnJlcGxhY2UoXCJ7XCIsIFwiXFxcXHtcIikucmVwbGFjZShcIn1cIiwgXCJcXFxcfVwiKSkgfHwgXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhdGggPSB0aGlzLm1ldGFQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKTtcblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHhtbGA8bWFjcm86Rm9ybUFQSSB4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3MuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm9kYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6Zj1cInNhcC51aS5sYXlvdXQuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6Zmw9XCJzYXAudWkuZmxcIlxuXHRcdFx0XHRcdGlkPVwiJHt0aGlzLl9hcGlJZH1cIlxuXHRcdFx0XHRcdG1ldGFQYXRoPVwiJHttZXRhUGF0aFBhdGh9XCJcblx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIiR7Y29udGV4dFBhdGhQYXRofVwiPlxuXHRcdFx0XHQ8ZjpGb3JtXG5cdFx0XHRcdFx0Zmw6ZGVsZWdhdGU9J3tcblx0XHRcdFx0XHRcdFwibmFtZVwiOiBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtRGVsZWdhdGVcIixcblx0XHRcdFx0XHRcdFwiZGVsZWdhdGVUeXBlXCI6IFwiY29tcGxldGVcIlxuXHRcdFx0XHRcdH0nXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2NvbnRlbnRJZH1cIlxuXHRcdFx0XHRcdGVkaXRhYmxlPVwiJHt0aGlzLl9lZGl0YWJsZX1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTplbnRpdHlTZXQ9XCJ7Y29udGV4dFBhdGg+QHNhcHVpLm5hbWV9XCJcblx0XHRcdFx0XHR2aXNpYmxlPVwiJHt0aGlzLmlzVmlzaWJsZX1cIlxuXHRcdFx0XHRcdGNsYXNzPVwic2FwVXhBUE9iamVjdFBhZ2VTdWJTZWN0aW9uQWxpZ25Db250ZW50XCJcblx0XHRcdFx0XHRtYWNyb2RhdGE6bmF2aWdhdGlvblBhdGg9XCIke2NvbnRleHRQYXRoUGF0aH1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTpvbkNoYW5nZT1cIiR7b25DaGFuZ2VTdHJ9XCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdCR7dGhpcy5hZGRDb25kaXRpb25hbGx5KFxuXHRcdFx0XHRcdFx0dGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0eG1sYDxmOnRpdGxlPlxuXHRcdFx0XHRcdFx0XHQ8Y29yZTpUaXRsZSBsZXZlbD1cIiR7dGhpcy50aXRsZUxldmVsfVwiIHRleHQ9XCIke3RoaXMudGl0bGV9XCIgLz5cblx0XHRcdFx0XHRcdDwvZjp0aXRsZT5gXG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0XHQ8ZjpsYXlvdXQ+XG5cdFx0XHRcdFx0JHt0aGlzLmdldExheW91dEluZm9ybWF0aW9uKCl9XG5cblx0XHRcdFx0XHQ8L2Y6bGF5b3V0PlxuXHRcdFx0XHRcdDxmOmZvcm1Db250YWluZXJzPlxuXHRcdFx0XHRcdFx0JHt0aGlzLmdldEZvcm1Db250YWluZXJzKCl9XG5cdFx0XHRcdFx0PC9mOmZvcm1Db250YWluZXJzPlxuXHRcdFx0XHQ8L2Y6Rm9ybT5cblx0XHRcdDwvbWFjcm86Rm9ybUFQST5gO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFrRHFCQSxTQUFTO0VBcEI5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBYkEsT0FjQ0MsbUJBQW1CLENBQUM7SUFDcEJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLFNBQVMsRUFBRSx3QkFBd0I7SUFDbkNDLGVBQWUsRUFBRSxl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
|
|
456
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25UeXBlcyIsImJsb2NrRXZlbnQiLCJibG9ja0FnZ3JlZ2F0aW9uIiwic2xvdCIsImlzRGVmYXVsdCIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJmb3JtQ29udGFpbmVycyIsInVuZGVmaW5lZCIsIm9Db250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1FeHRyYVNldHRpbmdzIiwib0ZhY2V0RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsImhhc0ZpZWxkR3JvdXAiLCIkVHlwZSIsIkxhYmVsIiwiVGFyZ2V0IiwiJHRhcmdldCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInBhdGgiLCJ0ZXJtIiwidmFsdWUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiYW5ub3RhdGlvbnMiLCJmaWVsZHMiLCJmb3JtRWxlbWVudHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJvRm9ybURlZmluaXRpb24iLCJjcmVhdGVGb3JtRGVmaW5pdGlvbiIsImlzVmlzaWJsZSIsImFubm90YXRpb25QYXRoIiwiZ2V0UGF0aCIsInVzZUZvcm1Db250YWluZXJMYWJlbHMiLCJmYWNldFR5cGUiLCJnZXRPYmplY3QiLCJfYXBpSWQiLCJjcmVhdGVJZCIsIl9jb250ZW50SWQiLCJpZCIsImRpc3BsYXlNb2RlIiwiX2VkaXRhYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJlcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiVUkiLCJJc0VkaXRhYmxlIiwiZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbiIsImZvcm1Db250YWluZXIiLCJmYWNldENvbnRleHQiLCJmYWNldCIsIm5hdmlnYXRpb25QYXRoIiwiaWRQYXJ0IiwiQW5ub3RhdGlvbkhlbHBlciIsImdldE5hdmlnYXRpb25QYXRoIiwiY29udGV4dFBhdGhQYXRoIiwiZmFjZXRQYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNoYXJBdCIsInNsaWNlIiwidGl0bGVMZXZlbCIsIkZvcm1IZWxwZXIiLCJnZXRGb3JtQ29udGFpbmVyVGl0bGVMZXZlbCIsInRpdGxlIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0Rm9ybUNvbnRhaW5lcklEIiwieG1sIiwiYXR0ciIsImVudGl0eVNldCIsIm9uQ2hhbmdlIiwiYWN0aW9ucyIsImdldEZvcm1Db250YWluZXJzIiwiaW5jbHVkZXMiLCJtYXAiLCJmb3JtQ29udGFpbmVySWR4IiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImlzUmVmZXJlbmNlRmFjZXRQYXJ0T2ZQcmV2aWV3IiwicGFydE9mUHJldmlldyIsIiRBbm5vdGF0aW9uUGF0aCIsImdldExheW91dEluZm9ybWF0aW9uIiwibGF5b3V0IiwiYWRqdXN0TGFiZWxTcGFuIiwiYnJlYWtwb2ludEwiLCJicmVha3BvaW50TSIsImJyZWFrcG9pbnRYTCIsImNvbHVtbnNMIiwiY29sdW1uc00iLCJjb2x1bW5zWEwiLCJlbXB0eVNwYW5MIiwiZW1wdHlTcGFuTSIsImVtcHR5U3BhblMiLCJlbXB0eVNwYW5YTCIsImxhYmVsU3BhbkwiLCJsYWJlbFNwYW5NIiwibGFiZWxTcGFuUyIsImxhYmVsU3BhblhMIiwic2luZ2xlQ29udGFpbmVyRnVsbFNpemUiLCJsYWJlbENlbGxzTGFyZ2UiLCJlbXB0eUNlbGxzTGFyZ2UiLCJnZXRUZW1wbGF0ZSIsIm9uQ2hhbmdlU3RyIiwicmVwbGFjZSIsIm1ldGFQYXRoUGF0aCIsImFkZENvbmRpdGlvbmFsbHkiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIlRpdGxlTGV2ZWwiLCJBdXRvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGb3JtLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRmFjZXRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgYmxvY2tBZ2dyZWdhdGlvbiwgYmxvY2tBdHRyaWJ1dGUsIGJsb2NrRXZlbnQsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB7IHhtbCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtQ29udGFpbmVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1EZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGdldEZvcm1Db250YWluZXJJRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCByZXNvbHZlQmluZGluZ1N0cmluZyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBGb3JtSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2Zvcm0vRm9ybUhlbHBlclwiO1xuaW1wb3J0IHsgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7ICRDb2x1bW5MYXlvdXRTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgdHlwZSB7ICRSZXNwb25zaXZlR3JpZExheW91dFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9SZXNwb25zaXZlR3JpZExheW91dFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBBbm5vdGF0aW9uSGVscGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQW5ub3RhdGlvbkhlbHBlclwiO1xuXG50eXBlIENvbHVtbkxheW91dCA9ICRDb2x1bW5MYXlvdXRTZXR0aW5ncyAmIHtcblx0dHlwZTogXCJDb2x1bW5MYXlvdXRcIjtcbn07XG50eXBlIFJlc3BvbnNpdmVHcmlkTGF5b3V0ID0gJFJlc3BvbnNpdmVHcmlkTGF5b3V0U2V0dGluZ3MgJiB7XG5cdHR5cGU6IFwiUmVzcG9uc2l2ZUdyaWRMYXlvdXRcIjtcbn07XG50eXBlIEZvcm1MYXlvdXRJbmZvcm1hdGlvbiA9IENvbHVtbkxheW91dCB8IFJlc3BvbnNpdmVHcmlkTGF5b3V0O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZvcm0gYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogSXQgaXMgZGVzaWduZWQgdG8gd29yayBiYXNlZCBvbiBhIEZpZWxkR3JvdXAgYW5ub3RhdGlvbiBidXQgY2FuIGFsc28gd29yayBpZiB5b3UgcHJvdmlkZSBhIFJlZmVyZW5jZUZhY2V0IG9yIGEgQ29sbGVjdGlvbkZhY2V0XG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOkZvcm0gaWQ9XCJNeUZvcm1cIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwI0dlbmVyYWxJbmZvcm1hdGlvblwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5Gb3JtXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJGb3JtXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiXVxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm1CbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlIHtcblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiwgXCJTaW5nbGV0b25cIiwgXCJFbnRpdHlUeXBlXCJdXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvblR5cGVzOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiXG5cdFx0XSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdG1ldGFQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVGhlIG1hbmlmZXN0IGRlZmluZWQgZm9ybSBjb250YWluZXJzIHRvIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYXJlYSBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRmb3JtQ29udGFpbmVycz86IEZvcm1Db250YWluZXJbXTtcblxuXHQvKipcblx0ICogQ29udHJvbCB0aGUgcmVuZGVyaW5nIG9mIHRoZSBmb3JtIGNvbnRhaW5lciBsYWJlbHNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBUb2dnbGUgUHJldmlldzogUGFydCBvZiBQcmV2aWV3IC8gUHJldmlldyB2aWEgJ1Nob3cgTW9yZScgQnV0dG9uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRwYXJ0T2ZQcmV2aWV3ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHRpdGxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgZm9ybSB0aXRsZSwgdGl0bGVzIG9mIGludGVybmFsbHkgdXNlZCBmb3JtIGNvbnRhaW5lcnMgYXJlIG5lc3RlZCBzdWJzZXF1ZW50bHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aXRsZUxldmVsOiBUaXRsZUxldmVsID0gVGl0bGVMZXZlbC5BdXRvO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZGlzcGxheU1vZGU/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogXHRJZiBzZXQgdG8gZmFsc2UsIHRoZSBGb3JtIGlzIG5vdCByZW5kZXJlZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aXNWaXNpYmxlID0gXCJ0cnVlXCI7XG5cdC8vIEluZGVwZW5kZW50IGZyb20gdGhlIGZvcm0gdGl0bGUsIGNhbiBiZSBhIGJpdCBjb25mdXNpbmcgaW4gc3RhbmRhbG9uZSB1c2FnZSBhdCBpcyBub3Qgc2hvd2luZyBhbnl0aGluZyBieSBkZWZhdWx0XG5cblx0Ly8gSnVzdCBwcm94aWVkIGRvd24gdG8gdGhlIEZpZWxkIG1heSBuZWVkIHRvIHNlZSBpZiBuZWVkZWQgb3Igbm90XG5cdEBibG9ja0V2ZW50KClcblx0b25DaGFuZ2U/OiBzdHJpbmc7XG5cblx0QGJsb2NrQWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtRWxlbWVudFwiLCBpc1B1YmxpYzogdHJ1ZSwgc2xvdDogXCJmb3JtRWxlbWVudHNcIiwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGZvcm1FbGVtZW50cz86IGFueTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbGF5b3V0IHRvIGJlIHVzZWQgd2l0aGluIHRoZSBmb3JtLlxuXHQgKiBJdCBkZWZhdWx0cyB0byB0aGUgQ29sdW1uTGF5b3V0LCBidXQgeW91IGNhbiBhbHNvIHVzZSBhIFJlc3BvbnNpdmVHcmlkTGF5b3V0LlxuXHQgKiBBbGwgdGhlIHByb3BlcnRpZXMgb2YgdGhlIFJlc3BvbnNpdmVHcmlkTGF5b3V0IGNhbiBiZSBhZGRlZCB0byB0aGUgY29uZmlndXJhdGlvbi5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwib2JqZWN0XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGxheW91dDogRm9ybUxheW91dEluZm9ybWF0aW9uID0geyB0eXBlOiBcIkNvbHVtbkxheW91dFwiLCBjb2x1bW5zTTogMiwgY29sdW1uc1hMOiA2LCBjb2x1bW5zTDogMywgbGFiZWxDZWxsc0xhcmdlOiAxMiB9O1xuXG5cdC8vIFVzZWZ1bCBmb3Igb3VyIGR5bmFtaWMgdGhpbmcgYnV0IGFsc28gZGVwZW5kcyBvbiB0aGUgbWV0YWRhdGEgLT4gbWFrZSBzdXJlIHRoaXMgaXMgdGFrZW4gaW50byBhY2NvdW50XG5cdF9lZGl0YWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0X2FwaUlkOiBzdHJpbmc7XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nO1xuXG5cdGZhY2V0VHlwZTogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8Rm9ybUJsb2NrPiwgY29uZmlndXJhdGlvbjogYW55LCBtU2V0dGluZ3M6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb25maWd1cmF0aW9uLCBtU2V0dGluZ3MpO1xuXHRcdGlmICh0aGlzLm1ldGFQYXRoICYmIHRoaXMuY29udGV4dFBhdGggJiYgKHRoaXMuZm9ybUNvbnRhaW5lcnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmZvcm1Db250YWluZXJzID09PSBudWxsKSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdFx0Y29uc3QgbUV4dHJhU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0XHRcdGxldCBvRmFjZXREZWZpbml0aW9uID0gb0NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdGxldCBoYXNGaWVsZEdyb3VwID0gZmFsc2U7XG5cdFx0XHRpZiAob0ZhY2V0RGVmaW5pdGlvbiAmJiBvRmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5GaWVsZEdyb3VwVHlwZSkge1xuXHRcdFx0XHQvLyBXcmFwIHRoZSBmYWNldCBpbiBhIGZha2UgRmFjZXQgYW5ub3RhdGlvblxuXHRcdFx0XHRoYXNGaWVsZEdyb3VwID0gdHJ1ZTtcblx0XHRcdFx0b0ZhY2V0RGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiLFxuXHRcdFx0XHRcdExhYmVsOiBvRmFjZXREZWZpbml0aW9uLkxhYmVsLFxuXHRcdFx0XHRcdFRhcmdldDoge1xuXHRcdFx0XHRcdFx0JHRhcmdldDogb0ZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogb0ZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0XHRwYXRoOiBcIlwiLFxuXHRcdFx0XHRcdFx0dGVybTogXCJcIixcblx0XHRcdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0XHRcdHZhbHVlOiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Db250ZXh0T2JqZWN0UGF0aClcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGFubm90YXRpb25zOiB7fSxcblx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG9GYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdH07XG5cdFx0XHRcdG1FeHRyYVNldHRpbmdzW29GYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlXSA9IHsgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50cyB9O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdFx0b0NvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0XHQvKnRoaXMuY29udGV4dFBhdGgqLyB1bmRlZmluZWQsXG5cdFx0XHRcdG1TZXR0aW5ncyxcblx0XHRcdFx0bUV4dHJhU2V0dGluZ3Ncblx0XHRcdCk7XG5cdFx0XHRjb25zdCBvRm9ybURlZmluaXRpb24gPSBjcmVhdGVGb3JtRGVmaW5pdGlvbihvRmFjZXREZWZpbml0aW9uLCB0aGlzLmlzVmlzaWJsZSwgb0NvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0aWYgKGhhc0ZpZWxkR3JvdXApIHtcblx0XHRcdFx0b0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzWzBdLmFubm90YXRpb25QYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmZvcm1Db250YWluZXJzID0gb0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzO1xuXHRcdFx0dGhpcy51c2VGb3JtQ29udGFpbmVyTGFiZWxzID0gb0Zvcm1EZWZpbml0aW9uLnVzZUZvcm1Db250YWluZXJMYWJlbHM7XG5cdFx0XHR0aGlzLmZhY2V0VHlwZSA9IG9GYWNldERlZmluaXRpb24gJiYgb0ZhY2V0RGVmaW5pdGlvbi4kVHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mYWNldFR5cGUgPSB0aGlzLm1ldGFQYXRoLmdldE9iamVjdCgpPy4kVHlwZTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuaXNQdWJsaWMpIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5jcmVhdGVJZChcIkZvcm1cIikhO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gdGhpcy5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gYCR7dGhpcy5pZH0tY29udGVudGA7XG5cdFx0fVxuXHRcdC8vIGlmIGRpc3BsYXlNb2RlID09PSB0cnVlIC0+IF9lZGl0YWJsZSA9IGZhbHNlXG5cdFx0Ly8gaWYgZGlzcGxheU1vZGUgPT09IGZhbHNlIC0+IF9lZGl0YWJsZSA9IHRydWVcblx0XHQvLyAgPT4gaWYgZGlzcGxheU1vZGUgPT09IHtteUJpbmRpbmdWYWx1ZX0gLT4gX2VkaXRhYmxlID0ge215QmluZGluZ1ZhbHVlfSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVxuXHRcdC8vIGlmIERpc3BsYXlNb2RlID09PSB1bmRlZmluZWQgLT4gX2VkaXRhYmxlID0ge3VpPi9pc0VkaXRhYmxlfVxuXHRcdGlmICh0aGlzLmRpc3BsYXlNb2RlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMuX2VkaXRhYmxlID0gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGVxdWFsKHJlc29sdmVCaW5kaW5nU3RyaW5nKHRoaXMuZGlzcGxheU1vZGUsIFwiYm9vbGVhblwiKSwgZmFsc2UpLCB0cnVlLCBmYWxzZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9lZGl0YWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdH1cblx0fVxuXG5cdGdldERhdGFGaWVsZENvbGxlY3Rpb24oZm9ybUNvbnRhaW5lcjogRm9ybUNvbnRhaW5lciwgZmFjZXRDb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3QgZmFjZXQgPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoZmFjZXRDb250ZXh0KS50YXJnZXRPYmplY3QgYXMgRmFjZXRUeXBlcztcblx0XHRsZXQgbmF2aWdhdGlvblBhdGg7XG5cdFx0bGV0IGlkUGFydDtcblx0XHRpZiAoZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0KSB7XG5cdFx0XHRuYXZpZ2F0aW9uUGF0aCA9IEFubm90YXRpb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoZmFjZXQuVGFyZ2V0LnZhbHVlKTtcblx0XHRcdGlkUGFydCA9IGZhY2V0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKTtcblx0XHRcdGxldCBmYWNldFBhdGggPSBmYWNldENvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0aWYgKGZhY2V0UGF0aC5zdGFydHNXaXRoKGNvbnRleHRQYXRoUGF0aCkpIHtcblx0XHRcdFx0ZmFjZXRQYXRoID0gZmFjZXRQYXRoLnN1YnN0cmluZyhjb250ZXh0UGF0aFBhdGgubGVuZ3RoKTtcblx0XHRcdFx0aWYgKGZhY2V0UGF0aC5jaGFyQXQoMCkgPT09IFwiL1wiKSB7XG5cdFx0XHRcdFx0ZmFjZXRQYXRoID0gZmFjZXRQYXRoLnNsaWNlKDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRuYXZpZ2F0aW9uUGF0aCA9IEFubm90YXRpb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoZmFjZXRQYXRoKTtcblx0XHRcdGlkUGFydCA9IGZhY2V0UGF0aDtcblx0XHR9XG5cdFx0Y29uc3QgdGl0bGVMZXZlbCA9IEZvcm1IZWxwZXIuZ2V0Rm9ybUNvbnRhaW5lclRpdGxlTGV2ZWwodGhpcy50aXRsZSwgdGhpcy50aXRsZUxldmVsKTtcblx0XHRjb25zdCB0aXRsZSA9IHRoaXMudXNlRm9ybUNvbnRhaW5lckxhYmVscyAmJiBmYWNldC5MYWJlbCA/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmYWNldC5MYWJlbCkgOiBcIlwiO1xuXG5cdFx0Y29uc3QgaWQgPSB0aGlzLmlkID8gZ2V0Rm9ybUNvbnRhaW5lcklEKGlkUGFydCkgOiB1bmRlZmluZWQ7XG5cblx0XHRyZXR1cm4geG1sYFxuXHRcdFx0XHRcdDxtYWNybzpGb3JtQ29udGFpbmVyXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0XHQke3RoaXMuYXR0cihcImlkXCIsIGlkKX1cblx0XHRcdFx0XHR0aXRsZT1cIiR7dGl0bGV9XCJcblx0XHRcdFx0XHR0aXRsZUxldmVsPVwiJHt0aXRsZUxldmVsfVwiXG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9XCIke25hdmlnYXRpb25QYXRoID8gZm9ybUNvbnRhaW5lci5lbnRpdHlTZXQgOiB0aGlzLmNvbnRleHRQYXRofVwiXG5cdFx0XHRcdFx0bWV0YVBhdGg9XCIke2ZhY2V0Q29udGV4dH1cIlxuXHRcdFx0XHRcdGRhdGFGaWVsZENvbGxlY3Rpb249XCIke2Zvcm1Db250YWluZXIuZm9ybUVsZW1lbnRzfVwiXG5cdFx0XHRcdFx0bmF2aWdhdGlvblBhdGg9XCIke25hdmlnYXRpb25QYXRofVwiXG5cdFx0XHRcdFx0dmlzaWJsZT1cIiR7Zm9ybUNvbnRhaW5lci5pc1Zpc2libGV9XCJcblx0XHRcdFx0XHRkaXNwbGF5TW9kZT1cIiR7dGhpcy5kaXNwbGF5TW9kZX1cIlxuXHRcdFx0XHRcdG9uQ2hhbmdlPVwiJHt0aGlzLm9uQ2hhbmdlfVwiXG5cdFx0XHRcdFx0YWN0aW9ucz1cIiR7Zm9ybUNvbnRhaW5lci5hY3Rpb25zfVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0PG1hY3JvOmZvcm1FbGVtZW50cz5cblx0XHRcdFx0XHQ8c2xvdCBuYW1lPVwiZm9ybUVsZW1lbnRzXCIgLz5cblx0XHRcdFx0PC9tYWNybzpmb3JtRWxlbWVudHM+XG5cdFx0XHQ8L21hY3JvOkZvcm1Db250YWluZXI+YDtcblx0fVxuXG5cdGdldEZvcm1Db250YWluZXJzKCkge1xuXHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIS5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRpZiAodGhpcy5mYWNldFR5cGUuaW5jbHVkZXMoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmZvcm1Db250YWluZXJzIS5tYXAoKGZvcm1Db250YWluZXIsIGZvcm1Db250YWluZXJJZHgpID0+IHtcblx0XHRcdFx0aWYgKGZvcm1Db250YWluZXIuaXNWaXNpYmxlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZmFjZXRDb250ZXh0ID0gdGhpcy5jb250ZXh0UGF0aC5nZXRNb2RlbCgpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGZvcm1Db250YWluZXIuYW5ub3RhdGlvblBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdFx0XHRcdGNvbnN0IGZhY2V0ID0gZmFjZXRDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJlxuXHRcdFx0XHRcdFx0Rm9ybUhlbHBlci5pc1JlZmVyZW5jZUZhY2V0UGFydE9mUHJldmlldyhmYWNldCwgdGhpcy5wYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0aWYgKGZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGguJFR5cGUgPT09IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMuQWRkcmVzc1R5cGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHhtbGA8dGVtcGxhdGU6d2l0aCBwYXRoPVwiZm9ybUNvbnRhaW5lcnM+JHtmb3JtQ29udGFpbmVySWR4fVwiIHZhcj1cImZvcm1Db250YWluZXJcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGU6d2l0aCBwYXRoPVwiZm9ybUNvbnRhaW5lcnM+JHtmb3JtQ29udGFpbmVySWR4fS9hbm5vdGF0aW9uUGF0aFwiIHZhcj1cImZhY2V0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Y29yZTpGcmFnbWVudCBmcmFnbWVudE5hbWU9XCJzYXAuZmUubWFjcm9zLmZvcm0uQWRkcmVzc1NlY3Rpb25cIiB0eXBlPVwiWE1MXCIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlOndpdGg+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGVtcGxhdGU6d2l0aD5gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbihmb3JtQ29udGFpbmVyLCBmYWNldENvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5mYWNldFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIikge1xuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybUNvbnRhaW5lcnMhLm1hcCgoZm9ybUNvbnRhaW5lcikgPT4ge1xuXHRcdFx0XHRpZiAoZm9ybUNvbnRhaW5lci5pc1Zpc2libGUpIHtcblx0XHRcdFx0XHRjb25zdCBmYWNldENvbnRleHQgPSB0aGlzLmNvbnRleHRQYXRoLmdldE1vZGVsKCkuY3JlYXRlQmluZGluZ0NvbnRleHQoZm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkQ29sbGVjdGlvbihmb3JtQ29udGFpbmVyLCBmYWNldENvbnRleHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBwcm9wZXIgbGF5b3V0IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBgbGF5b3V0YCBwcm9wZXJ0eSBkZWZpbmVkIGV4dGVybmFsbHkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBsYXlvdXQgaW5mb3JtYXRpb24gZm9yIHRoZSB4bWwuXG5cdCAqL1xuXHRnZXRMYXlvdXRJbmZvcm1hdGlvbigpIHtcblx0XHRzd2l0Y2ggKHRoaXMubGF5b3V0LnR5cGUpIHtcblx0XHRcdGNhc2UgXCJSZXNwb25zaXZlR3JpZExheW91dFwiOlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOlJlc3BvbnNpdmVHcmlkTGF5b3V0IGFkanVzdExhYmVsU3Bhbj1cIiR7dGhpcy5sYXlvdXQuYWRqdXN0TGFiZWxTcGFufVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrcG9pbnRMPVwiJHt0aGlzLmxheW91dC5icmVha3BvaW50TH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha3BvaW50TT1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludE19XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtwb2ludFhMPVwiJHt0aGlzLmxheW91dC5icmVha3BvaW50WEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sdW1uc0w9XCIke3RoaXMubGF5b3V0LmNvbHVtbnNMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zWEw9XCIke3RoaXMubGF5b3V0LmNvbHVtbnNYTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5MPVwiJHt0aGlzLmxheW91dC5lbXB0eVNwYW5MfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVtcHR5U3Bhbk09XCIke3RoaXMubGF5b3V0LmVtcHR5U3Bhbk19XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuUz1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuU31cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5YTD1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuWEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuTD1cIiR7dGhpcy5sYXlvdXQubGFiZWxTcGFuTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbFNwYW5NPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5NfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3BhblM9XCIke3RoaXMubGF5b3V0LmxhYmVsU3BhblN9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuWEw9XCIke3RoaXMubGF5b3V0LmxhYmVsU3BhblhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpbmdsZUNvbnRhaW5lckZ1bGxTaXplPVwiJHt0aGlzLmxheW91dC5zaW5nbGVDb250YWluZXJGdWxsU2l6ZX1cIiAvPmA7XG5cdFx0XHRjYXNlIFwiQ29sdW1uTGF5b3V0XCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOkNvbHVtbkxheW91dFxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNMPVwiJHt0aGlzLmxheW91dC5jb2x1bW5zTH1cIlxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNYTD1cIiR7dGhpcy5sYXlvdXQuY29sdW1uc1hMfVwiXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWxDZWxsc0xhcmdlPVwiJHt0aGlzLmxheW91dC5sYWJlbENlbGxzTGFyZ2V9XCJcblx0XHRcdFx0XHRcdFx0XHRlbXB0eUNlbGxzTGFyZ2U9XCIke3RoaXMubGF5b3V0LmVtcHR5Q2VsbHNMYXJnZX1cIiAvPmA7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VGVtcGxhdGUoKSB7XG5cdFx0Y29uc3Qgb25DaGFuZ2VTdHIgPSAodGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlLnJlcGxhY2UoXCJ7XCIsIFwiXFxcXHtcIikucmVwbGFjZShcIn1cIiwgXCJcXFxcfVwiKSkgfHwgXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhdGggPSB0aGlzLm1ldGFQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKTtcblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHhtbGA8bWFjcm86Rm9ybUFQSSB4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3MuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm9kYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6Zj1cInNhcC51aS5sYXlvdXQuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6Zmw9XCJzYXAudWkuZmxcIlxuXHRcdFx0XHRcdGlkPVwiJHt0aGlzLl9hcGlJZH1cIlxuXHRcdFx0XHRcdG1ldGFQYXRoPVwiJHttZXRhUGF0aFBhdGh9XCJcblx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIiR7Y29udGV4dFBhdGhQYXRofVwiPlxuXHRcdFx0XHQ8ZjpGb3JtXG5cdFx0XHRcdFx0Zmw6ZGVsZWdhdGU9J3tcblx0XHRcdFx0XHRcdFwibmFtZVwiOiBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtRGVsZWdhdGVcIixcblx0XHRcdFx0XHRcdFwiZGVsZWdhdGVUeXBlXCI6IFwiY29tcGxldGVcIlxuXHRcdFx0XHRcdH0nXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2NvbnRlbnRJZH1cIlxuXHRcdFx0XHRcdGVkaXRhYmxlPVwiJHt0aGlzLl9lZGl0YWJsZX1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTplbnRpdHlTZXQ9XCJ7Y29udGV4dFBhdGg+QHNhcHVpLm5hbWV9XCJcblx0XHRcdFx0XHR2aXNpYmxlPVwiJHt0aGlzLmlzVmlzaWJsZX1cIlxuXHRcdFx0XHRcdGNsYXNzPVwic2FwVXhBUE9iamVjdFBhZ2VTdWJTZWN0aW9uQWxpZ25Db250ZW50XCJcblx0XHRcdFx0XHRtYWNyb2RhdGE6bmF2aWdhdGlvblBhdGg9XCIke2NvbnRleHRQYXRoUGF0aH1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTpvbkNoYW5nZT1cIiR7b25DaGFuZ2VTdHJ9XCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdCR7dGhpcy5hZGRDb25kaXRpb25hbGx5KFxuXHRcdFx0XHRcdFx0dGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0eG1sYDxmOnRpdGxlPlxuXHRcdFx0XHRcdFx0XHQ8Y29yZTpUaXRsZSBsZXZlbD1cIiR7dGhpcy50aXRsZUxldmVsfVwiIHRleHQ9XCIke3RoaXMudGl0bGV9XCIgLz5cblx0XHRcdFx0XHRcdDwvZjp0aXRsZT5gXG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0XHQ8ZjpsYXlvdXQ+XG5cdFx0XHRcdFx0JHt0aGlzLmdldExheW91dEluZm9ybWF0aW9uKCl9XG5cblx0XHRcdFx0XHQ8L2Y6bGF5b3V0PlxuXHRcdFx0XHRcdDxmOmZvcm1Db250YWluZXJzPlxuXHRcdFx0XHRcdFx0JHt0aGlzLmdldEZvcm1Db250YWluZXJzKCl9XG5cdFx0XHRcdFx0PC9mOmZvcm1Db250YWluZXJzPlxuXHRcdFx0XHQ8L2Y6Rm9ybT5cblx0XHRcdDwvbWFjcm86Rm9ybUFQST5gO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Ba0RxQkEsU0FBUztFQXBCOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWJBLE9BY0NDLG1CQUFtQixDQUFDO0lBQ3BCQyxJQUFJLEVBQUUsTUFBTTtJQUNaQyxTQUFTLEVBQUUsd0JB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
|
|
@@ -10,7 +10,7 @@ import { createFormDefinition } from "sap/fe/core/converters/controls/Common/For
|
|
|
10
10
|
import { getFormContainerID } from "sap/fe/core/converters/helpers/ID";
|
|
11
11
|
import { UI } from "sap/fe/core/helpers/BindingHelper";
|
|
12
12
|
import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
13
|
-
import { compileExpression, equal, ifElse, resolveBindingString } from "sap/fe/core/helpers/BindingToolkit";
|
|
13
|
+
import { compileExpression, equal, getExpressionFromAnnotation, ifElse, resolveBindingString } from "sap/fe/core/helpers/BindingToolkit";
|
|
14
14
|
import type { PropertiesOf } from "sap/fe/core/helpers/ClassSupport";
|
|
15
15
|
import { getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
16
16
|
import FormHelper from "sap/fe/macros/form/FormHelper";
|
|
@@ -235,7 +235,8 @@ export default class FormBlock extends BuildingBlockBase {
|
|
|
235
235
|
idPart = facetPath;
|
|
236
236
|
}
|
|
237
237
|
const titleLevel = FormHelper.getFormContainerTitleLevel(this.title, this.titleLevel);
|
|
238
|
-
const title = this.useFormContainerLabels && facet ? (
|
|
238
|
+
const title = this.useFormContainerLabels && facet.Label ? getExpressionFromAnnotation(facet.Label) : "";
|
|
239
|
+
|
|
239
240
|
const id = this.id ? getFormContainerID(idPart) : undefined;
|
|
240
241
|
|
|
241
242
|
return xml`
|