@sapui5/sap.fe.templates 1.120.18 → 1.120.20
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/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +2 -2
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +2 -1
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/library.js +1 -1
- package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
- package/src/sap/fe/templates/messagebundle_tr.properties +1 -1
package/package.json
CHANGED
|
@@ -333,7 +333,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
333
333
|
* @private
|
|
334
334
|
*/
|
|
335
335
|
_findAndPushVariantToPromise: function (oVariant, sVariantId, oVM, aPromises, bFilterVariantApplied) {
|
|
336
|
-
if (oVariant.
|
|
336
|
+
if (oVariant.getKey() === sVariantId) {
|
|
337
337
|
aPromises.push(this._applyControlVariant(oVM, sVariantId, bFilterVariantApplied));
|
|
338
338
|
}
|
|
339
339
|
},
|
|
@@ -555,4 +555,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
555
555
|
};
|
|
556
556
|
return ViewStateOverride;
|
|
557
557
|
}, false);
|
|
558
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwibmF2aWdhdGlvblR5cGUiLCJvVmlldyIsImdldFZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsInB1c2giLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJoeWJyaWQiLCJfY2xlYXJGaWx0ZXJDb25kaXRpb25zIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYmFzZSIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5IiwiX2hhc011bHRpVmlzdWFsaXphdGlvbnMiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiQ2hhcnQiLCJUYWJsZSIsImJ5SWQiLCJyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMiLCJtQWRkaXRpb25hbFN0YXRlcyIsImJQZW5kaW5nRmlsdGVyIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGF0aCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInZpZXciLCJjb250cm9sbGVyIiwidmlld0RhdGEiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJjdXJyZW50VmFyaWFudEtleSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwieEFwcFN0YXRlIiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsIl9lbmFibGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJDb250cm9sIiwicHJldmVudEluaXRpYWxTZWFyY2giLCJmbk9uU2VhcmNoIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9hcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzVG9GaWx0ZXJiYXIiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJiUHJldmVudEluaXRpYWxTZWFyY2giLCJvRmlsdGVyQmFyQ29udHJvbCIsImluaXRpYWwiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJvVXJsUGFyYW1zIiwiYVBhZ2VWYXJpYW50SWQiLCJhRmlsdGVyQmFyVmFyaWFudElkIiwiYVRhYmxlVmFyaWFudElkIiwiYUNoYXJ0VmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJzUGFnZVZhcmlhbnRJZCIsInNGaWx0ZXJCYXJWYXJpYW50SWQiLCJzVGFibGVWYXJpYW50SWQiLCJzQ2hhcnRWYXJpYW50SWQiLCJfaGFuZGxlQ29udHJvbFZhcmlhbnRJZCIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsIl9oYW5kbGVQYWdlVmFyaWFudElkIiwiX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQiLCJfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkIiwiX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZCIsIlByb21pc2UiLCJhbGwiLCJnZXRWYXJpYW50cyIsIm9WYXJpYW50IiwiX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZSIsIm9UYWJsZVZhcmlhbnQiLCJhQ2hhcnRzIiwib0NoYXJ0VmFyaWFudCIsInNWYXJpYW50SWQiLCJrZXkiLCJfYXBwbHlDb250cm9sVmFyaWFudCIsInNWYXJpYW50SUQiLCJzVmFyaWFudFJlZmVyZW5jZSIsIl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJDb250cm9sVmFyaWFudEFwcGx5QVBJIiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJQYWdlIiwiTm9uZSIsIm9WYXJpYW50TWFuYWdlbWVudCIsIm9DdXJyZW50VmFyaWFudCIsImZpbmQiLCJvSXRlbSIsImdldEtleSIsImV4ZWN1dGVPblNlbGVjdCIsIl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZCIsIm1ldGFNb2RlbCIsImNvbnRleHRQYXRoIiwibWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJlbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsIl90eXBlIiwidW5kZWZpbmVkIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSIsInNvbWUiLCJyZXF1aXJlZFByb3BlcnR5IiwidmFsdWUiLCJfYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1YiLCJzdiIsInN2RGVmYXVsdHMiLCJpc0VtcHR5IiwiZ2V0TWV0YU1vZGVsIiwic3ZPcHRpb25zIiwiZ2V0U2VsZWN0T3B0aW9uIiwiZGVmYXVsdFNWT3B0aW9ucyIsImRpc3BsYXlDdXJyZW5jeURlZmF1bHRFeGlzdHMiLCJub1NWRGlzcGxheUN1cnJlbmN5RXhpc3RzIiwiZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uIiwic2lnbiIsIm9wdGlvbiIsImxvdyIsImhpZ2giLCJhZGRTZWxlY3RPcHRpb24iLCJfZ2V0QWRqdXN0ZWRTViIsImFwcFN0YXRlU1YiLCJ1c2VGTFBEZWZhdWx0VmFsdWVzIiwiYWRqdXN0ZWRTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJ0b0pTT05PYmplY3QiLCJhbHJlYWR5QXBwbGllZFNWIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImFwcGxpZWRTZWxPcHROYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwicmVkdWNlIiwic3ZDb3B5Iiwic2VsT3B0aW9uTmFtZSIsInN2U2VsT3B0cyIsInNlbGVjdE9wdGlvbnMiLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibmF2aWdhdGlvblBhcmFtZXRlciIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZmlsdGVyQmFyIiwic2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsInJlcVN0ZFZhcmlhbnQiLCJiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5Iiwic3ZEZWZhdWx0c09ubHkiLCJyZXNvbHZlIiwiY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9hY3RpdmVWYXJpYW50QW5kR2V0QXBwU3RhdGVPdmVycmlkZSIsInN2RGVmYXVsdHNBcmVQcmVzZW50Iiwic3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsInN2VG9TZXQiLCJzZXRTZWxlY3Rpb25WYXJpYW50IiwidmFyaWFudEtleSIsImdldElkIiwiX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYiLCJTdGF0ZVV0aWwiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJvRXh0ZXJuYWxTdGF0ZSIsIm9Db25kaXRpb24iLCJmaWx0ZXIiLCJmaWVsZCIsImNvbmRpdGlvbiIsIm9FcnJvciIsImFJdGVtcyIsIm9DbGVhckNvbmRpdGlvbnMiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBOYXZMaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBzdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBzdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IHN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xufTtcblxudHlwZSBOYXZIYW5kbGVyTmF2UGFyYW1zID0gTmF2aWdhdGlvblBhcmFtZXRlciAmIHtcblx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seT86IGJvb2xlYW47XG59O1xuXG50eXBlIExSVmlld0RhdGEgPSB7XG5cdGNvbnRyb2xDb25maWd1cmF0aW9uPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHR2YXJpYW50TWFuYWdlbWVudD86IGJvb2xlYW47XG59O1xuXG50eXBlIFZhcmlhbnRJRHMgPSB7XG5cdHNQYWdlVmFyaWFudElkOiBzdHJpbmc7XG5cdHNGaWx0ZXJCYXJWYXJpYW50SWQ6IHN0cmluZztcblx0c1RhYmxlVmFyaWFudElkOiBzdHJpbmc7XG5cdHNDaGFydFZhcmlhbnRJZDogc3RyaW5nO1xufTtcblxuY29uc3QgTmF2VHlwZSA9IE5hdkxpYnJhcnkuTmF2VHlwZSxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlID0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQsXG5cdFRlbXBsYXRlQ29udGVudFZpZXcgPSBDb3JlTGlicmFyeS5UZW1wbGF0ZUNvbnRlbnRWaWV3LFxuXHRJbml0aWFsTG9hZE1vZGUgPSBDb3JlTGlicmFyeS5Jbml0aWFsTG9hZE1vZGUsXG5cdERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSA9IFwiRGlzcGxheUN1cnJlbmN5XCI7XG5cbmNvbnN0IFZpZXdTdGF0ZU92ZXJyaWRlOiBhbnkgPSB7XG5cdF9iU2VhcmNoVHJpZ2dlcmVkOiBmYWxzZSxcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cdG9uQmVmb3JlU3RhdGVBcHBsaWVkOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBhUHJvbWlzZXM6IGFueSwgbmF2aWdhdGlvblR5cGU/OiBzdHJpbmcpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKSxcblx0XHRcdGFUYWJsZXMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0b0ZpbHRlckJhci5zZXRTdXNwZW5kU2VsZWN0aW9uKHRydWUpO1xuXHRcdFx0YVByb21pc2VzLnB1c2goKG9GaWx0ZXJCYXIgYXMgYW55KS53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKSk7XG5cdFx0XHQvL1RoaXMgaXMgcmVxdWlyZWQgdG8gcmVtb3ZlIGFueSBleGlzdGluZyBvciBkZWZhdWx0IGZpbHRlciBjb25kaXRpb25zIGJlZm9yZSByZXN0b3JpbmcgdGhlIGZpbHRlciBiYXIgc3RhdGUgaW4gaHlicmlkIG5hdmlnYXRpb24gbW9kZS5cblx0XHRcdGlmIChuYXZpZ2F0aW9uVHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQpIHtcblx0XHRcdFx0dGhpcy5fY2xlYXJGaWx0ZXJDb25kaXRpb25zKG9GaWx0ZXJCYXIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChvVGFibGUuaW5pdGlhbGl6ZWQoKSk7XG5cdFx0fSk7XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5iYXNlLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YVZpZXdDb250cm9scyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scygpLFxuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaChvVmlldywgYVZpZXdDb250cm9scyk7XG5cblx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhQ29udHJvbHMsIGFDb250cm9sc1RvUmVmcmVzaCk7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCksXG5cdFx0XHRiQ29udHJvbFZNID0gb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDtcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRpZiAob0ZpbHRlckJhclZNKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpKTtcblx0XHR9XG5cdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIikuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUpO1xuXHRcdH0pO1xuXHRcdGlmIChvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKSkge1xuXHRcdFx0b0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikuZm9yRWFjaChmdW5jdGlvbiAob0NoYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydC5nZXRWYXJpYW50KCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NoYXJ0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvbXVsdGlEaW1lbnNpb25hbEdyaWRJZHMvdmFyaWFudE1hbmFnZW1lbnRJZFwiKSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9tdWx0aURpbWVuc2lvbmFsR3JpZElkcy92YXJpYW50TWFuYWdlbWVudElkXCIpKTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldFNlZ21lbnRlZEJ1dHRvbihUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0KSk7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZSkpO1xuXHRcdH1cblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyKTtcblx0XHR9XG5cdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVmlldy5ieUlkKFwiZmU6Okxpc3RSZXBvcnRcIikpO1xuXHR9LFxuXHRyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG1BZGRpdGlvbmFsU3RhdGVzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRiUGVuZGluZ0ZpbHRlciA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0KS5nZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIpO1xuXG5cdFx0bUFkZGl0aW9uYWxTdGF0ZXMuZGF0YUxvYWRlZCA9ICFiUGVuZGluZ0ZpbHRlciB8fCAhIXRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdGNvbnN0IHNBbHBDb250ZW50VmlldyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikuZ2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiKTtcblx0XHRcdG1BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3ID0gc0FscENvbnRlbnRWaWV3O1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHR9LFxuXHRhcHBseUFkZGl0aW9uYWxTdGF0ZXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9BZGRpdGlvbmFsU3RhdGVzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblxuXHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcykge1xuXHRcdFx0Ly8gZXhwbGljaXQgY2hlY2sgZm9yIGJvb2xlYW4gdmFsdWVzIC0gJ3VuZGVmaW5lZCcgc2hvdWxkIG5vdCBhbHRlciB0aGUgdHJpZ2dlcmVkIHNlYXJjaCBwcm9wZXJ0eVxuXHRcdFx0aWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IGZhbHNlICYmIG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Ly8gd2l0aG91dCB0aGlzLCB0aGUgZGF0YSBpcyBsb2FkZWQgb24gbmF2aWdhdGluZyBiYWNrXG5cdFx0XHRcdChvRmlsdGVyQmFyIGFzIGFueSkuX2JTZWFyY2hUcmlnZ2VyZWQgPSBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAob0FkZGl0aW9uYWxTdGF0ZXMuZGF0YUxvYWRlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IG9GaWx0ZXJCYXIuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0XHRcdGZpbHRlckJhckFQSS50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fYlNlYXJjaFRyaWdnZXJlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRpZiAoIURldmljZS5zeXN0ZW0uZGVza3RvcCAmJiBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9PSBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZCkge1xuXHRcdFx0XHRcdG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3ID0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydDtcblx0XHRcdFx0fVxuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHRcblx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdC5zZXRQcm9wZXJ0eShgJHtvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UGF0aCgpfS9hbHBDb250ZW50Vmlld2AsIG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciBTZWFyY2ggY2FuIGJlIHRyaWdnZXJlZCBhdCBpbml0aWFsIGxvYWQgb2YgdGhlIGFwcGxpY2F0aW9uIG9yIG5vdC5cblx0ICpcblx0ICogQHBhcmFtIG5hdmlnYXRpb25UeXBlIE5hdmlnYXRpb24gVHlwZSBkdXJpbmcgdGhlIGxvYWQgb2YgdGhlIGFwcGxpY2F0aW9uXG5cdCAqIEByZXR1cm5zIEEgQm9vbGVhbiBkZXRlcm1pbmluZyB3aGV0aGVyIFNlYXJjaCBjYW4gYmUgdHJpZ2dlcmVkIG9yIG5vdFxuXHQgKi9cblx0aXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKG5hdmlnYXRpb25UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHR2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRsZXQgaXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gZmFsc2UsXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudDtcblx0XHQvLyBEZXRlcm1pbmluZyB3aGV0aGVyIGl0J3MgQ29udHJvbCB2YXJpYW50TWFuYWdlbWVudCBvciBQYWdlIHZhcmlhbnRNYW5hZ2VtZW50XG5cdFx0aWYgKHZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBDb3JlTGlicmFyeS5WYXJpYW50TWFuYWdlbWVudC5Db250cm9sKSB7XG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCA9IGNvbnRyb2xsZXIuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50ID0gdmlldy5ieUlkKFwiZmU6OlBhZ2VWYXJpYW50TWFuYWdlbWVudFwiKTtcblx0XHR9XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnRLZXkgPSB2YXJpYW50TWFuYWdlbWVudD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHQvL1RoZSBjaGVjayBzaGFsbCBoYXBwZW4gZm9yICdpbnRpYWwgbG9hZCcgYW5kICdBcHBseSBBdXRvbWF0aWNhbGx5JyBmb3IgY29sbGFwc2luZyB0aGUgaGVhZGVyIG9yXG5cdFx0Ly8gYWx3YXlzIGJlIGNvbGxhcHNlZCBpZiBuYXZUeXBlIGlzIHhBcHBTdGF0ZVxuXHRcdC8vIGluaXRpYWxMb2FkIEF1dG8gb3IgRGlzYWJsZWRcblx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUueEFwcFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKHZhcmlhbnRNYW5hZ2VtZW50ICYmIHZpZXdEYXRhLmluaXRpYWxMb2FkICE9PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkge1xuXHRcdFx0Ly8gSGVhZGVyIGlzIGNvbGxhcHNlZCBpZiBwcmVzZXQgZmlsdGVycyBhcmUgc2V0IGZvciBpbml0aWFsIGxvYWQgQXV0bywgSGVhZGVyIHNoYWxsIHJlbWFpbiBleHBhbmRlZCBpZiBpbml0aWFsIGxvYWQgaXMgQXV0byB3aXRob3V0IHByZXNldCBmaWx0ZXJzIG9yIGludGlhbCBsb2FkIGlzIGRpc2FibGVkXG5cdFx0XHRpZiAoY29udHJvbGxlci5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2godGhpcy5fZ2V0RmlsdGVyQmFyVk0odmlldykpKSB7XG5cdFx0XHRcdGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGluaXRpYWxMb2FkIEVuYWJsZWRcblx0XHRlbHNlIGlmIChcblx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50ICYmXG5cdFx0XHR2aWV3RGF0YS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQgJiZcblx0XHRcdGNvbnRyb2xsZXIuX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCh2YXJpYW50TWFuYWdlbWVudCwgY3VycmVudFZhcmlhbnRLZXkpXG5cdFx0KSB7XG5cdFx0XHRpc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gaXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkO1xuXHR9LFxuXG5cdF9lbmFibGVGaWx0ZXJCYXI6IGZ1bmN0aW9uIChmaWx0ZXJCYXJDb250cm9sOiBGaWx0ZXJCYXIsIHByZXZlbnRJbml0aWFsU2VhcmNoOiBib29sZWFuKSB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0Y29uc3QgZm5PblNlYXJjaCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSAhcHJldmVudEluaXRpYWxTZWFyY2g7XG5cdFx0fTtcblxuXHRcdC8vIHJlc2V0IHRoZSBzdXNwZW5kIHNlbGVjdGlvbiBvbiBmaWx0ZXIgYmFyIHRvIGFsbG93IGxvYWRpbmcgb2YgZGF0YSB3aGVuIG5lZWRlZCAod2FzIHNldCBvbiBMUiBJbml0KVxuXHRcdGlmIChmaWx0ZXJCYXJDb250cm9sLmdldFN1c3BlbmRTZWxlY3Rpb24oKSkge1xuXHRcdFx0Ly8gT25seSBpZiBzZWFyY2ggaXMgZmlyZWQgd2Ugc2V0IF9iU2VhcmNoVHJpZ2dlcmVkLlxuXHRcdFx0Ly8gSWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1ZSB0byByZXF1aXJlZCBmaWx0ZXJmaWVsZHMgZW1wdHkgb3Igb3RoZXIgaXNzdWVzIHdlIHNraXAgc2V0dGluZyBfYlNlYXJjaFRyaWdnZXJlZC5cblx0XHRcdGZpbHRlckJhckFQSS5hdHRhY2hFdmVudE9uY2UoXCJzZWFyY2hcIiwgZm5PblNlYXJjaCk7XG5cdFx0XHRmaWx0ZXJCYXJDb250cm9sLnNldFN1c3BlbmRTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBzZWFyY2ggbWlnaHQgYWxyZWFkeSBiZSB0cmlnZ2VyZWQuXG5cdFx0XHRmbk9uU2VhcmNoKCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzVG9GaWx0ZXJiYXI6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9OYXZpZ2F0aW9uUGFyYW1ldGVyOiBhbnksIGFSZXN1bHRzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBvQ29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBvQ29tcG9uZW50RGF0YSA9IG9BcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdGNvbnN0IG9TdGFydHVwUGFyYW1ldGVycyA9IChvQ29tcG9uZW50RGF0YSAmJiBvQ29tcG9uZW50RGF0YS5zdGFydHVwUGFyYW1ldGVycykgfHwge307XG5cdFx0Y29uc3Qgb1ZhcmlhbnRQcm9taXNlID0gdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMob1N0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRsZXQgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBib29sZWFuO1xuXHRcdGFSZXN1bHRzLnB1c2goXG5cdFx0XHRvVmFyaWFudFByb21pc2Vcblx0XHRcdFx0LnRoZW4oKGFWYXJpYW50czogYW55W10pID0+IHtcblx0XHRcdFx0XHRpZiAoYVZhcmlhbnRzICYmIGFWYXJpYW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRpZiAoYVZhcmlhbnRzWzBdID09PSB0cnVlIHx8IGFWYXJpYW50c1sxXSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fYXBwbHlTZWxlY3Rpb25WYXJpYW50KG9WaWV3LCBvTmF2aWdhdGlvblBhcmFtZXRlciwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhckNvbnRyb2wgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0XHRcdGlmIChvRmlsdGVyQmFyQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCkgfHxcblx0XHRcdFx0XHRcdFx0KCFvRmlsdGVyQmFyVk0gJiYgb1ZpZXcuZ2V0Vmlld0RhdGEoKS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHx8XG5cdFx0XHRcdFx0XHRcdG9Db250cm9sbGVyLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaChvRmlsdGVyQmFyVk0pXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gb0ZpbHRlckJhckNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2gob0ZpbHRlckJhclZNKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vY29sbGFwc2Ugb3IgZXhwYW5kIHNoYWxsIGJlIGF2YWlsYWJsZSBvbmx5IGZvciBub24tZGVza3RvcCBzeXN0ZW1zXG5cdFx0XHRcdFx0XHRpZiAoIURldmljZS5zeXN0ZW0uZGVza3RvcCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0aGlzLmlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChvTmF2aWdhdGlvblBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuX2VuYWJsZUZpbHRlckJhcihvRmlsdGVyQmFyQ29udHJvbCwgYlByZXZlbnRJbml0aWFsU2VhcmNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhQ2hhcnRWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWNoYXJ0LXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50SURzO1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCB8fCBhQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdG9WYXJpYW50SURzID0ge1xuXHRcdFx0XHRzUGFnZVZhcmlhbnRJZDogYVBhZ2VWYXJpYW50SWQgJiYgYVBhZ2VWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNGaWx0ZXJCYXJWYXJpYW50SWQ6IGFGaWx0ZXJCYXJWYXJpYW50SWQgJiYgYUZpbHRlckJhclZhcmlhbnRJZFswXSxcblx0XHRcdFx0c1RhYmxlVmFyaWFudElkOiBhVGFibGVWYXJpYW50SWQgJiYgYVRhYmxlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzQ2hhcnRWYXJpYW50SWQ6IGFDaGFydFZhcmlhbnRJZCAmJiBhQ2hhcnRWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50SURzKTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMpIHtcblx0XHRsZXQgb1ZNOiBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHR0aGlzLl9oYW5kbGVQYWdlVmFyaWFudElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0fSBlbHNlIGlmIChvVmFyaWFudElEcyAmJiBzVmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCkge1xuXHRcdFx0XHRvVk0gPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQob1ZhcmlhbnRJRHMsIG9WTSwgYVByb21pc2VzKTtcblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvVmFyaWFudElEcy5zQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xuXHR9LFxuXHQvKlxuXHQgKiBIYW5kbGVzIHBhZ2UgbGV2ZWwgdmFyaWFudCBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgcGFnZSB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlUGFnZVZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRvVk0uZ2V0VmFyaWFudHMoKT8uZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHR9KTtcblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgZmlsdGVyIGJhciBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblxuXHRfaGFuZGxlRmlsdGVyQmFyVmFyaWFudENvbnRyb2xJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRpZiAob1ZNKSB7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgdGFibGUgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIGhhcyB0aGUgbGlzdCByZXBvcnQgY29udHJvbGxlciBvYmplY3Rcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b0NvbnRyb2xsZXI6IExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRjb25zdCBhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0YVRhYmxlcy5mb3JFYWNoKChvVGFibGU6IFRhYmxlKSA9PiB7XG5cdFx0XHRjb25zdCBvVGFibGVWYXJpYW50ID0gb1RhYmxlLmdldFZhcmlhbnQoKTtcblx0XHRcdGlmIChvVGFibGUgJiYgb1RhYmxlVmFyaWFudCkge1xuXHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCwgb1RhYmxlVmFyaWFudCwgYVByb21pc2VzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIGNoYXJ0IGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBoYXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ2hhcnRDb250cm9sVmFyaWFudElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0Y29uc3QgYUNoYXJ0cyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXHRcdGFDaGFydHMuZm9yRWFjaCgob0NoYXJ0OiBDaGFydCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NoYXJ0VmFyaWFudCA9IG9DaGFydC5nZXRWYXJpYW50KCk7XG5cdFx0XHRjb25zdCBhVmFyaWFudHMgPSBvQ2hhcnRWYXJpYW50LmdldFZhcmlhbnRzKCk7XG5cdFx0XHRpZiAoYVZhcmlhbnRzKSB7XG5cdFx0XHRcdGFWYXJpYW50cy5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkLCBvQ2hhcnRWYXJpYW50LCBhUHJvbWlzZXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0Lypcblx0ICogTWF0Y2hlcyB0aGUgdmFyaWFudCBJRCBwcm92aWRlZCBpbiB0aGUgdXJsIHRvIHRoZSBhdmFpbGFibGUgdmFpcmFudCBJRHMgYW5kIHB1c2hlcyB0aGUgYXBwcm9wcmlhdGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmlhbnQgaXMgYW4gb2JqZWN0IGZvciBhIHNwZWNpZmljIHZhcmlhbnRcblx0ICogQHBhcmFtIHNWYXJpYW50SWQgaXMgdGhlIHZhcmlhbnQgSUQgcHJvdmlkZWQgaW4gdGhlIHVybFxuXHQgKiBAcGFyYW0gb1ZNIGlzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgc3BlY2ZpYyB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgcHJvbWlzZXNcblx0ICogQHBhcmFtIGJGaWx0ZXJWYXJpYW50QXBwbGllZCBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgc2V0IHRvIHR1cmUgaW4gY2FzZSB0aGUgZmlsdGVyIHZhcmlhbnQgaXMgYXBwbGllZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZTogZnVuY3Rpb24gKFxuXHRcdC8vVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3VpdGFibGUgdmFyaWFudCBmb3IgdGhlIHZhcmlhbnRJRCBwcm92aWRlZCBpbiB0aGUgdXJsIGFuZCBwdXNoZXMgdGhlbSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudDogVmFyaWFudE9iamVjdCxcblx0XHRzVmFyaWFudElkOiBTdHJpbmcsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W10sXG5cdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkPzogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBzVmFyaWFudElkKSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9WTSwgc1ZhcmlhbnRJZCwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hcHBseUNvbnRyb2xWYXJpYW50OiBmdW5jdGlvbiAob1ZhcmlhbnQ6IGFueSwgc1ZhcmlhbnRJRDogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WYXJpYW50LCBzVmFyaWFudElEKSA/IHNWYXJpYW50SUQgOiBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRjb25zdCBvVk0gPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRlbGVtZW50OiBvVmFyaWFudCxcblx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9WTS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBiRmlsdGVyVmFyaWFudEFwcGxpZWQ7XG5cdFx0fSk7XG5cdH0sXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHByaXZhdGUgaGVscGVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdC8qKlxuXHQgKiBWYXJpYW50IG1hbmFnZW1lbnQgdXNlZCBieSBmaWx0ZXIgYmFyLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmlldyBWaWV3IG9mIHRoZSBMUiBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFZhcmlhbnRNYW5hZ2VtZW50IGlmIHVzZWRcblx0ICovXG5cdF9nZXRGaWx0ZXJCYXJWTTogKHZpZXc6IFZpZXcpOiBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0bGV0IHZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIExSVmlld0RhdGE7XG5cdFx0c3dpdGNoICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSB2aWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50ID0gKHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKS5fZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB2YXJpYW50TWFuYWdlbWVudCBhcyBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZDtcblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5nZXRLZXkoKSA9PT0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuICFvQ3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgRGlzcGxheUN1cnJlbmN5IGlzIG1hbmRhdG9yeSBmb3IgZmlsdGVyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsIE9kYXRhVjQgTWV0YU1vZGVsXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aCBMaXN0IFJlcG9ydCBjb250ZXh0IHBhdGguXG5cdCAqIEByZXR1cm5zIEJvb2xlYW5cblx0ICovXG5cdF9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZDogZnVuY3Rpb24gKG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGNvbnRleHRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChjb250ZXh0UGF0aCksXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFDb250ZXh0KSxcblx0XHRcdGVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgPyBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IDogdW5kZWZpbmVkLFxuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSByZXF1aXJlZFByb3BlcnRpZXMuc29tZShcblx0XHRcdFx0KHJlcXVpcmVkUHJvcGVydHkpID0+IHJlcXVpcmVkUHJvcGVydHkudmFsdWUgPT09IERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRVxuXHRcdFx0KTtcblxuXHRcdHJldHVybiBkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIERpc3BsYXlDdXJyZW5jeSB0byBTViBpZiBpdCBpcyBtYW5kYXRvcnkgYW5kIGV4aXN0cyBpbiBTViBkZWZhdWx0cy5cblx0ICpcblx0ICogQHBhcmFtIHZpZXcgVmlldyBvZiB0aGUgTFIgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc3YgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHlcblx0ICogQHBhcmFtIHN2RGVmYXVsdHMgU2VsZWN0aW9uIFZhcmlhbnQgZGVmYXVsdHNcblx0ICovXG5cdF9hZGREZWZhdWx0RGlzcGxheUN1cnJlbmN5VG9TVjogZnVuY3Rpb24gKHZpZXc6IFZpZXcsIHN2OiBTZWxlY3Rpb25WYXJpYW50LCBzdkRlZmF1bHRzPzogU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdGlmICghc3ZEZWZhdWx0cyB8fCBzdkRlZmF1bHRzPy5pc0VtcHR5KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBMUlZpZXdEYXRhLFxuXHRcdFx0bWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gdmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke3ZpZXdEYXRhLmVudGl0eVNldH1gLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSB0aGlzLl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZChtZXRhTW9kZWwsIGNvbnRleHRQYXRoKSBhcyBib29sZWFuO1xuXG5cdFx0aWYgKCFkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN2T3B0aW9ucyA9IHN2LmdldFNlbGVjdE9wdGlvbihESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUpLFxuXHRcdFx0ZGVmYXVsdFNWT3B0aW9ucyA9IHN2RGVmYXVsdHMuZ2V0U2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSksXG5cdFx0XHRkaXNwbGF5Q3VycmVuY3lEZWZhdWx0RXhpc3RzID0gISFkZWZhdWx0U1ZPcHRpb25zICYmIGRlZmF1bHRTVk9wdGlvbnMubGVuZ3RoID4gMCxcblx0XHRcdG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgPSAhc3ZPcHRpb25zIHx8ICFzdk9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0aWYgKG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgJiYgZGlzcGxheUN1cnJlbmN5RGVmYXVsdEV4aXN0cykge1xuXHRcdFx0Y29uc3QgZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uID0gZGVmYXVsdFNWT3B0aW9uc1swXSxcblx0XHRcdFx0c2lnbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIlNpZ25cIl0sXG5cdFx0XHRcdG9wdGlvbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIk9wdGlvblwiXSxcblx0XHRcdFx0bG93ID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiTG93XCJdLFxuXHRcdFx0XHRoaWdoID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiSGlnaFwiXTtcblxuXHRcdFx0c3YuYWRkU2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSwgc2lnbiwgb3B0aW9uLCBsb3csIGhpZ2gpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IGFkanVzdGVkIFNlbGVjdGlvbiBWYXJpYW50IGJhc2VkIG9uICd1c2VGTFBEZWZhdWx0VmFsdWVzJyBhbmQgJ2FscmVhZHkgYXBwbGllZCBTVicuXG5cdCAqXG5cdCAqIElmIHVzZUZMUERlZmF1bHRWYWx1ZXMgaXMgOlxuXHQgKiAxLiBGQUxTRSwgY29tYmluZSAnYXBwU2F0ZSBTVicgYW5kICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKiAyLiBUUlVFLCAnYXBwU2F0ZSBTVicgaXMgc2FtZSBhcyAnZGVmYXVsdCBTVicuIFNlbGVjdCBPcHRpb25zIG9mICdkZWZhdWx0IFNWJyB0YWtlcyBwcmlvcml0eSBvdmVyICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyQVBJIEZpbHRlckJhckFQSSB0byBmZXRjaCB0aGUgYXBwbGllZCBTVlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVTViBTZWxlY3Rpb24gVmFyaWFudCB0byBhcHBseSBmcm9tIGFwcFN0YXRlXG5cdCAqIEBwYXJhbSB1c2VGTFBEZWZhdWx0VmFsdWVzIFNob3VsZCBGTFAgZGVmYXVsdHMgYmUgdXNlZFxuXHQgKiBAcmV0dXJucyBBZGp1c3RlZCBTVlxuXHQgKi9cblx0X2dldEFkanVzdGVkU1Y6IGFzeW5jIChmaWx0ZXJCYXJBUEk6IEZpbHRlckJhckFQSSwgYXBwU3RhdGVTVjogU2VsZWN0aW9uVmFyaWFudCwgdXNlRkxQRGVmYXVsdFZhbHVlczogYm9vbGVhbikgPT4ge1xuXHRcdGxldCBhZGp1c3RlZFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoYXBwU3RhdGVTVi50b0pTT05PYmplY3QoKSk7XG5cdFx0Y29uc3QgYWxyZWFkeUFwcGxpZWRTViA9IGF3YWl0IGZpbHRlckJhckFQSS5nZXRTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0Y29uc3QgYXBwbGllZFNlbE9wdE5hbWVzID0gYWxyZWFkeUFwcGxpZWRTVj8uZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMoKSB8fCBbXTtcblx0XHRpZiAoYXBwbGllZFNlbE9wdE5hbWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIFdlIG1lcmdlICdhcHBsaWVkIFNWJyBhbmQgJ2FwcFN0YXRlIFNWJyBiYXNlZCBvbiAndXNlRkxQRGVmYXVsdFZhbHVlcycuXG5cdFx0XHRhZGp1c3RlZFNWID0gYXBwbGllZFNlbE9wdE5hbWVzLnJlZHVjZSgoc3ZDb3B5OiBTZWxlY3Rpb25WYXJpYW50LCBzZWxPcHRpb25OYW1lKSA9PiB7XG5cdFx0XHRcdC8vIChhcHBTdGF0ZVNWID0gYWRqdXN0ZWRTViA9IHN2Q29weSlcblx0XHRcdFx0Y29uc3Qgc3ZTZWxPcHRzID0gc3ZDb3B5LmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0Ly8gSWYgdXNlRkxQRGVmYXVsdFZhbHVlcyA9IHRydWUsIG1lYW5zIChhcHBTdGF0ZVNWID0gc3ZEZWZhdWx0cylcblx0XHRcdFx0aWYgKCh1c2VGTFBEZWZhdWx0VmFsdWVzICYmICFzdlNlbE9wdHM/Lmxlbmd0aCkgfHwgIXVzZUZMUERlZmF1bHRWYWx1ZXMpIHtcblx0XHRcdFx0XHQvLyBpZiBkZWZhdWx0IFNWIG5lZWRzIHRvIGJlIHVzZWQsIHRoZW4gc2VsZWN0IG9wdGlvbnMgZnJvbSBkZWZhdWx0IHNlbGVjdCBvcHRpb25zIHRha2UgcHJpb3JpdHkuXG5cdFx0XHRcdFx0Ly8gZWxzZSB3ZSBtZXJnZSBib3RoOiBhbHJlYWR5IGFwcGxpZWQgU1YgYW5kIFNWIGZyb20gbmF2UGFyYW1zLlxuXHRcdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBhbHJlYWR5QXBwbGllZFNWLmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0XHRzdkNvcHkubWFzc0FkZFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lLCBzZWxlY3RPcHRpb25zIHx8IFtdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3ZDb3B5O1xuXHRcdFx0fSwgYWRqdXN0ZWRTVik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFkanVzdGVkU1Y7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFwcGx5IFNlbGVjdGlvbiBWYXJpYW50IGZyb20gTmF2aWdhdGlvbiBQYXJhbWV0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3IFZpZXcgb2YgdGhlIExSIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG5hdmlnYXRpb25QYXJhbWV0ZXIgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHkgZnJvbSBhcHBTdGF0ZVxuXHQgKiBAcGFyYW0gZmlsdGVyVmFyaWFudEFwcGxpZWQgSXMgYSBmaWx0ZXIgdmFyaWFudCBhbGFyZWFkeSBhcHBsaWVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKi9cblx0X2FwcGx5U2VsZWN0aW9uVmFyaWFudDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHZpZXc6IFZpZXcsXG5cdFx0bmF2aWdhdGlvblBhcmFtZXRlcjogTmF2SGFuZGxlck5hdlBhcmFtcyxcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSAodmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Y29uc3Qge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogc3YsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IHN2RGVmYXVsdHMsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogcmVxU3RkVmFyaWFudCA9IGZhbHNlLFxuXHRcdFx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogc3ZEZWZhdWx0c09ubHkgPSBmYWxzZVxuXHRcdH0gPSBuYXZpZ2F0aW9uUGFyYW1ldGVyO1xuXG5cdFx0aWYgKCFmaWx0ZXJCYXIgfHwgIXN2KSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBjbGVhckZpbHRlcnNBbmRSZXBsYWNlV2l0aEFwcFN0YXRlID0gYXdhaXQgdGhpcy5fYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGUoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCxcblx0XHRcdHJlcVN0ZFZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZFxuXHRcdCk7XG5cblx0XHRpZiAoY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSkge1xuXHRcdFx0dGhpcy5fYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1Yodmlldywgc3YsIHN2RGVmYXVsdHMpO1xuXG5cdFx0XHQvLyBjaGVjayBpZiBGTFAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZXJlIGFuZCBpcyBpdCBzdGFuZGFyZCB2YXJpYW50XG5cdFx0XHRjb25zdCBzdkRlZmF1bHRzQXJlUHJlc2VudCA9IHN2RGVmYXVsdHMgPyBzdkRlZmF1bHRzLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCkubGVuZ3RoID4gMCA6IGZhbHNlO1xuXHRcdFx0Y29uc3Qgc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgPVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJiB2YXJpYW50TWFuYWdlbWVudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdGNvbnN0IHVzZUZMUERlZmF1bHRWYWx1ZXM6IGJvb2xlYW4gPVxuXHRcdFx0XHRzdkRlZmF1bHRzQXJlUHJlc2VudCAmJiAoc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgfHwgIXZhcmlhbnRNYW5hZ2VtZW50KSAmJiBzdkRlZmF1bHRzT25seTtcblxuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGxldCBzdlRvU2V0OiBTZWxlY3Rpb25WYXJpYW50ID0gc3Y7XG5cdFx0XHRpZiAoZmlsdGVyVmFyaWFudEFwcGxpZWQgfHwgdXNlRkxQRGVmYXVsdFZhbHVlcykge1xuXHRcdFx0XHRzdlRvU2V0ID0gYXdhaXQgdGhpcy5fZ2V0QWRqdXN0ZWRTVihmaWx0ZXJCYXJBUEksIHN2LCB1c2VGTFBEZWZhdWx0VmFsdWVzKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS5zZXRTZWxlY3Rpb25WYXJpYW50KHN2VG9TZXQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQWN0aXZhdGUgdmFyaWFudCBmcm9tIHZhcmlhbnQgbWFuYWdlbWVudCBhbmQgcmV0dXJuIGlmIGFwcFN0YXRlIG5lZWRzIHRvIGJlIGFwcGxpZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YXJpYW50TWFuYWdlbWVudCBWYXJpYW50TWFuYWdlbWVudCB1c2VkIGJ5IGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHJlcVN0ZFZhcmlhbnQgSWYgc3RhbmRhcmQgdmFyaWFudCBpcyByZXF1aXJlZCB0byBiZSB1c2VkXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYXJpYW50QXBwbGllZCBJcyBhIGZpbHRlciB2YXJpYW50IGFsYXJlYWR5IGFwcGxpZWRcblx0ICogQHJldHVybnMgUHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqL1xuXHRfYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGU6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnQgfCB1bmRlZmluZWQsXG5cdFx0cmVxU3RkVmFyaWFudDogYm9vbGVhbixcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAodmFyaWFudE1hbmFnZW1lbnQgJiYgIWZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgdmFyaWFudEtleSA9IHJlcVN0ZFZhcmlhbnQgPyB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IHZhcmlhbnRNYW5hZ2VtZW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAodmFyaWFudEtleSA9PT0gbnVsbCkge1xuXHRcdFx0XHR2YXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0SWQoKTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0ZWxlbWVudDogdmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHZhcmlhbnRLZXlcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlcVN0ZFZhcmlhbnQgfHwgdmFyaWFudE1hbmFnZW1lbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Lypcblx0ICogU2V0cyBmaWx0ZXJlZDogZmFsc2UgZmxhZyB0byBldmVyeSBmaWVsZCBzbyB0aGF0IGl0IGNhbiBiZSBjbGVhcmVkIG91dFxuXHQgKlxuXHQgKiBAcGFyYW0gb0ZpbHRlckJhciBmaWx0ZXJiYXIgY29udHJvbCBpcyB1c2VkIHRvIGRpc3BsYXkgZmlsdGVyIHByb3BlcnRpZXMgaW4gYSB1c2VyLWZyaWVuZGx5IG1hbm5lciB0byBwb3B1bGF0ZSB2YWx1ZXMgZm9yIGEgcXVlcnlcblx0ICogQHJldHVybnMgcHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXY6IGFzeW5jIGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBGaWx0ZXJCYXIpIHtcblx0XHRyZXR1cm4gU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyKVxuXHRcdFx0LnRoZW4oKG9FeHRlcm5hbFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0NvbmRpdGlvbiA9IG9FeHRlcm5hbFN0YXRlLmZpbHRlcjtcblx0XHRcdFx0Zm9yIChjb25zdCBmaWVsZCBpbiBvQ29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKGZpZWxkICE9PSBcIiRlZGl0U3RhdGVcIiAmJiBmaWVsZCAhPT0gXCIkc2VhcmNoXCIgJiYgb0NvbmRpdGlvbltmaWVsZF0pIHtcblx0XHRcdFx0XHRcdG9Db25kaXRpb25bZmllbGRdLmZvckVhY2goKGNvbmRpdGlvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uW1wiZmlsdGVyZWRcIl0gPSBmYWxzZTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb0NvbmRpdGlvbjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJldHJpZXZpbmcgdGhlIGV4dGVybmFsIHN0YXRlXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSxcblxuXHRfY2xlYXJGaWx0ZXJDb25kaXRpb25zOiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogRmlsdGVyQmFyKSB7XG5cdFx0Y29uc3QgYUl0ZW1zOiBQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NsZWFyQ29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYob0ZpbHRlckJhcik7XG5cdFx0XHRyZXR1cm4gU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyLCB7XG5cdFx0XHRcdGZpbHRlcjogb0NsZWFyQ29uZGl0aW9ucyxcblx0XHRcdFx0aXRlbXM6IGFJdGVtc1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpZXdTdGF0ZU92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztFQTJEQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBTztJQUNqQ0UscUJBQXFCLEdBQUdDLFdBQVcsQ0FBQ0MsaUJBQWlCO0lBQ3JEQyxtQkFBbUIsR0FBR0YsV0FBVyxDQUFDRSxtQkFBbUI7SUFDckRDLGVBQWUsR0FBR0gsV0FBVyxDQUFDRyxlQUFlO0lBQzdDQyw4QkFBOEIsR0FBRyxpQkFBaUI7RUFFbkQsTUFBTUMsaUJBQXNCLEdBQUc7SUFDOUJDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJDLHFCQUFxQixFQUFFLFlBQVk7TUFDbEMsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUNEQyxvQkFB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
|
|
558
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwibmF2aWdhdGlvblR5cGUiLCJvVmlldyIsImdldFZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsInB1c2giLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJoeWJyaWQiLCJfY2xlYXJGaWx0ZXJDb25kaXRpb25zIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYmFzZSIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5IiwiX2hhc011bHRpVmlzdWFsaXphdGlvbnMiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiQ2hhcnQiLCJUYWJsZSIsImJ5SWQiLCJyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMiLCJtQWRkaXRpb25hbFN0YXRlcyIsImJQZW5kaW5nRmlsdGVyIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGF0aCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInZpZXciLCJjb250cm9sbGVyIiwidmlld0RhdGEiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJjdXJyZW50VmFyaWFudEtleSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwieEFwcFN0YXRlIiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsIl9lbmFibGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJDb250cm9sIiwicHJldmVudEluaXRpYWxTZWFyY2giLCJmbk9uU2VhcmNoIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9hcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzVG9GaWx0ZXJiYXIiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJiUHJldmVudEluaXRpYWxTZWFyY2giLCJvRmlsdGVyQmFyQ29udHJvbCIsImluaXRpYWwiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJvVXJsUGFyYW1zIiwiYVBhZ2VWYXJpYW50SWQiLCJhRmlsdGVyQmFyVmFyaWFudElkIiwiYVRhYmxlVmFyaWFudElkIiwiYUNoYXJ0VmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJzUGFnZVZhcmlhbnRJZCIsInNGaWx0ZXJCYXJWYXJpYW50SWQiLCJzVGFibGVWYXJpYW50SWQiLCJzQ2hhcnRWYXJpYW50SWQiLCJfaGFuZGxlQ29udHJvbFZhcmlhbnRJZCIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsIl9oYW5kbGVQYWdlVmFyaWFudElkIiwiX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQiLCJfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkIiwiX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZCIsIlByb21pc2UiLCJhbGwiLCJnZXRWYXJpYW50cyIsIm9WYXJpYW50IiwiX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZSIsIm9UYWJsZVZhcmlhbnQiLCJhQ2hhcnRzIiwib0NoYXJ0VmFyaWFudCIsInNWYXJpYW50SWQiLCJnZXRLZXkiLCJfYXBwbHlDb250cm9sVmFyaWFudCIsInNWYXJpYW50SUQiLCJzVmFyaWFudFJlZmVyZW5jZSIsIl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJDb250cm9sVmFyaWFudEFwcGx5QVBJIiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJQYWdlIiwiTm9uZSIsIm9WYXJpYW50TWFuYWdlbWVudCIsIm9DdXJyZW50VmFyaWFudCIsImZpbmQiLCJvSXRlbSIsImV4ZWN1dGVPblNlbGVjdCIsIl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZCIsIm1ldGFNb2RlbCIsImNvbnRleHRQYXRoIiwibWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJlbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsIl90eXBlIiwidW5kZWZpbmVkIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSIsInNvbWUiLCJyZXF1aXJlZFByb3BlcnR5IiwidmFsdWUiLCJfYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1YiLCJzdiIsInN2RGVmYXVsdHMiLCJpc0VtcHR5IiwiZ2V0TWV0YU1vZGVsIiwic3ZPcHRpb25zIiwiZ2V0U2VsZWN0T3B0aW9uIiwiZGVmYXVsdFNWT3B0aW9ucyIsImRpc3BsYXlDdXJyZW5jeURlZmF1bHRFeGlzdHMiLCJub1NWRGlzcGxheUN1cnJlbmN5RXhpc3RzIiwiZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uIiwic2lnbiIsIm9wdGlvbiIsImxvdyIsImhpZ2giLCJhZGRTZWxlY3RPcHRpb24iLCJfZ2V0QWRqdXN0ZWRTViIsImFwcFN0YXRlU1YiLCJ1c2VGTFBEZWZhdWx0VmFsdWVzIiwiYWRqdXN0ZWRTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJ0b0pTT05PYmplY3QiLCJhbHJlYWR5QXBwbGllZFNWIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImFwcGxpZWRTZWxPcHROYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwicmVkdWNlIiwic3ZDb3B5Iiwic2VsT3B0aW9uTmFtZSIsInN2U2VsT3B0cyIsInNlbGVjdE9wdGlvbnMiLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibmF2aWdhdGlvblBhcmFtZXRlciIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZmlsdGVyQmFyIiwic2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsInJlcVN0ZFZhcmlhbnQiLCJiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5Iiwic3ZEZWZhdWx0c09ubHkiLCJyZXNvbHZlIiwiY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9hY3RpdmVWYXJpYW50QW5kR2V0QXBwU3RhdGVPdmVycmlkZSIsInN2RGVmYXVsdHNBcmVQcmVzZW50Iiwic3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsInN2VG9TZXQiLCJzZXRTZWxlY3Rpb25WYXJpYW50IiwidmFyaWFudEtleSIsImdldElkIiwiX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYiLCJTdGF0ZVV0aWwiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJvRXh0ZXJuYWxTdGF0ZSIsIm9Db25kaXRpb24iLCJmaWx0ZXIiLCJmaWVsZCIsImNvbmRpdGlvbiIsIm9FcnJvciIsImFJdGVtcyIsIm9DbGVhckNvbmRpdGlvbnMiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBOYXZMaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBzdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBzdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IHN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHRnZXRLZXk6ICgpID0+IHN0cmluZztcbn07XG5cbnR5cGUgTmF2SGFuZGxlck5hdlBhcmFtcyA9IE5hdmlnYXRpb25QYXJhbWV0ZXIgJiB7XG5cdGJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBMUlZpZXdEYXRhID0ge1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBib29sZWFuO1xufTtcblxudHlwZSBWYXJpYW50SURzID0ge1xuXHRzUGFnZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzRmlsdGVyQmFyVmFyaWFudElkOiBzdHJpbmc7XG5cdHNUYWJsZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzQ2hhcnRWYXJpYW50SWQ6IHN0cmluZztcbn07XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlLFxuXHRESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUgPSBcIkRpc3BsYXlDdXJyZW5jeVwiO1xuXG5jb25zdCBWaWV3U3RhdGVPdmVycmlkZTogYW55ID0ge1xuXHRfYlNlYXJjaFRyaWdnZXJlZDogZmFsc2UsXG5cdGFwcGx5SW5pdGlhbFN0YXRlT25seTogZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXHRvbkJlZm9yZVN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVByb21pc2VzOiBhbnksIG5hdmlnYXRpb25UeXBlPzogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdFx0Ly9UaGlzIGlzIHJlcXVpcmVkIHRvIHJlbW92ZSBhbnkgZXhpc3Rpbmcgb3IgZGVmYXVsdCBmaWx0ZXIgY29uZGl0aW9ucyBiZWZvcmUgcmVzdG9yaW5nIHRoZSBmaWx0ZXIgYmFyIHN0YXRlIGluIGh5YnJpZCBuYXZpZ2F0aW9uIG1vZGUuXG5cdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkKSB7XG5cdFx0XHRcdHRoaXMuX2NsZWFyRmlsdGVyQ29uZGl0aW9ucyhvRmlsdGVyQmFyKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2gob1RhYmxlLmluaXRpYWxpemVkKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZGVsZXRlIHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdH0sXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuYmFzZS5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdGFWaWV3Q29udHJvbHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoKSxcblx0XHRcdGFDb250cm9sc1RvUmVmcmVzaCA9IEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpO1xuXG5cdFx0QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYUNvbnRyb2xzLCBhQ29udHJvbHNUb1JlZnJlc2gpO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpLFxuXHRcdFx0YkNvbnRyb2xWTSA9IG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w7XG5cblx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJWTSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyVk0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKSk7XG5cdFx0fVxuXHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRjb25zdCBvUXVpY2tGaWx0ZXIgPSBvVGFibGUuZ2V0UXVpY2tGaWx0ZXIoKTtcblx0XHRcdGlmIChvUXVpY2tGaWx0ZXIpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvUXVpY2tGaWx0ZXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUuZ2V0VmFyaWFudCgpKTtcblx0XHRcdH1cblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlKTtcblx0XHR9KTtcblx0XHRpZiAob0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikpIHtcblx0XHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRcdGlmIChiQ29udHJvbFZNKSB7XG5cdFx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQuZ2V0VmFyaWFudCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5KFwiL211bHRpRGltZW5zaW9uYWxHcmlkSWRzL3ZhcmlhbnRNYW5hZ2VtZW50SWRcIikpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvbXVsdGlEaW1lbnNpb25hbEdyaWRJZHMvdmFyaWFudE1hbmFnZW1lbnRJZFwiKSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuc2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLCBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50Vmlldyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VhcmNoIGNhbiBiZSB0cmlnZ2VyZWQgYXQgaW5pdGlhbCBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvbiBvciBub3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uVHlwZSBOYXZpZ2F0aW9uIFR5cGUgZHVyaW5nIHRoZSBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvblxuXHQgKiBAcmV0dXJucyBBIEJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciBTZWFyY2ggY2FuIGJlIHRyaWdnZXJlZCBvciBub3Rcblx0ICovXG5cdGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChuYXZpZ2F0aW9uVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0dmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0bGV0IGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IGZhbHNlLFxuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Ly8gRGV0ZXJtaW5pbmcgd2hldGhlciBpdCdzIENvbnRyb2wgdmFyaWFudE1hbmFnZW1lbnQgb3IgUGFnZSB2YXJpYW50TWFuYWdlbWVudFxuXHRcdGlmICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQuQ29udHJvbCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSBjb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCA9IHZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQ/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0Ly9UaGUgY2hlY2sgc2hhbGwgaGFwcGVuIGZvciAnaW50aWFsIGxvYWQnIGFuZCAnQXBwbHkgQXV0b21hdGljYWxseScgZm9yIGNvbGxhcHNpbmcgdGhlIGhlYWRlciBvclxuXHRcdC8vIGFsd2F5cyBiZSBjb2xsYXBzZWQgaWYgbmF2VHlwZSBpcyB4QXBwU3RhdGVcblx0XHQvLyBpbml0aWFsTG9hZCBBdXRvIG9yIERpc2FibGVkXG5cdFx0aWYgKG5hdmlnYXRpb25UeXBlID09PSBOYXZUeXBlLnhBcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIGlmICh2YXJpYW50TWFuYWdlbWVudCAmJiB2aWV3RGF0YS5pbml0aWFsTG9hZCAhPT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHtcblx0XHRcdC8vIEhlYWRlciBpcyBjb2xsYXBzZWQgaWYgcHJlc2V0IGZpbHRlcnMgYXJlIHNldCBmb3IgaW5pdGlhbCBsb2FkIEF1dG8sIEhlYWRlciBzaGFsbCByZW1haW4gZXhwYW5kZWQgaWYgaW5pdGlhbCBsb2FkIGlzIEF1dG8gd2l0aG91dCBwcmVzZXQgZmlsdGVycyBvciBpbnRpYWwgbG9hZCBpcyBkaXNhYmxlZFxuXHRcdFx0aWYgKGNvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKHRoaXMuX2dldEZpbHRlckJhclZNKHZpZXcpKSkge1xuXHRcdFx0XHRpc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpbml0aWFsTG9hZCBFbmFibGVkXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJlxuXHRcdFx0dmlld0RhdGEuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkICYmXG5cdFx0XHRjb250cm9sbGVyLl9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQodmFyaWFudE1hbmFnZW1lbnQsIGN1cnJlbnRWYXJpYW50S2V5KVxuXHRcdCkge1xuXHRcdFx0aXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZDtcblx0fSxcblxuXHRfZW5hYmxlRmlsdGVyQmFyOiBmdW5jdGlvbiAoZmlsdGVyQmFyQ29udHJvbDogRmlsdGVyQmFyLCBwcmV2ZW50SW5pdGlhbFNlYXJjaDogYm9vbGVhbikge1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhckNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdGNvbnN0IGZuT25TZWFyY2ggPSAoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gIXByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdH07XG5cblx0XHQvLyByZXNldCB0aGUgc3VzcGVuZCBzZWxlY3Rpb24gb24gZmlsdGVyIGJhciB0byBhbGxvdyBsb2FkaW5nIG9mIGRhdGEgd2hlbiBuZWVkZWQgKHdhcyBzZXQgb24gTFIgSW5pdClcblx0XHRpZiAoZmlsdGVyQmFyQ29udHJvbC5nZXRTdXNwZW5kU2VsZWN0aW9uKCkpIHtcblx0XHRcdC8vIE9ubHkgaWYgc2VhcmNoIGlzIGZpcmVkIHdlIHNldCBfYlNlYXJjaFRyaWdnZXJlZC5cblx0XHRcdC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBkdWUgdG8gcmVxdWlyZWQgZmlsdGVyZmllbGRzIGVtcHR5IG9yIG90aGVyIGlzc3VlcyB3ZSBza2lwIHNldHRpbmcgX2JTZWFyY2hUcmlnZ2VyZWQuXG5cdFx0XHRmaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnRPbmNlKFwic2VhcmNoXCIsIGZuT25TZWFyY2gpO1xuXHRcdFx0ZmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gc2VhcmNoIG1pZ2h0IGFscmVhZHkgYmUgdHJpZ2dlcmVkLlxuXHRcdFx0Zm5PblNlYXJjaCgpO1xuXHRcdH1cblx0fSxcblxuXHRfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRsZXQgYlByZXZlbnRJbml0aWFsU2VhcmNoID0gZmFsc2U7XG5cdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhclZNID0gdGhpcy5fZ2V0RmlsdGVyQmFyVk0ob1ZpZXcpO1xuXHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJDb250cm9sID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdFx0XHRpZiAob0ZpbHRlckJhckNvbnRyb2wpIHtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KG9OYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmluaXRpYWwgJiYgb05hdmlnYXRpb25QYXJhbWV0ZXIucmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQpIHx8XG5cdFx0XHRcdFx0XHRcdCghb0ZpbHRlckJhclZNICYmIG9WaWV3LmdldFZpZXdEYXRhKCkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkKSB8fFxuXHRcdFx0XHRcdFx0XHRvQ29udHJvbGxlci5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2gob0ZpbHRlckJhclZNKVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IG9GaWx0ZXJCYXJDb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdFx0XHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IHRoaXMuX3ByZXZlbnRJbml0aWFsU2VhcmNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvL2NvbGxhcHNlIG9yIGV4cGFuZCBzaGFsbCBiZSBhdmFpbGFibGUgb25seSBmb3Igbm9uLWRlc2t0b3Agc3lzdGVtc1xuXHRcdFx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3ApIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gdGhpcy5pc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpO1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWRcIiwgc2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLl9lbmFibGVGaWx0ZXJCYXIob0ZpbHRlckJhckNvbnRyb2wsIGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJWYXJpYW50IElEIGNhbm5vdCBiZSBhcHBsaWVkXCIpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0aGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvVXJsUGFyYW1zOiBhbnkpIHtcblx0XHRjb25zdCBhUGFnZVZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtdmFyaWFudC1pZFwiXSxcblx0XHRcdGFGaWx0ZXJCYXJWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWZpbHRlcmJhci12YXJpYW50LWlkXCJdLFxuXHRcdFx0YVRhYmxlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS10YWJsZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUNoYXJ0VmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS1jaGFydC12YXJpYW50LWlkXCJdO1xuXHRcdGxldCBvVmFyaWFudElEcztcblx0XHRpZiAoYVBhZ2VWYXJpYW50SWQgfHwgYUZpbHRlckJhclZhcmlhbnRJZCB8fCBhVGFibGVWYXJpYW50SWQgfHwgYUNoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRvVmFyaWFudElEcyA9IHtcblx0XHRcdFx0c1BhZ2VWYXJpYW50SWQ6IGFQYWdlVmFyaWFudElkICYmIGFQYWdlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzRmlsdGVyQmFyVmFyaWFudElkOiBhRmlsdGVyQmFyVmFyaWFudElkICYmIGFGaWx0ZXJCYXJWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNUYWJsZVZhcmlhbnRJZDogYVRhYmxlVmFyaWFudElkICYmIGFUYWJsZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0NoYXJ0VmFyaWFudElkOiBhQ2hhcnRWYXJpYW50SWQgJiYgYUNoYXJ0VmFyaWFudElkWzBdXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5faGFuZGxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcyk7XG5cdH0sXG5cblx0X2hhbmRsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9WYXJpYW50SURzOiBWYXJpYW50SURzKSB7XG5cdFx0bGV0IG9WTTogVmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXSA9IFtdO1xuXHRcdGNvbnN0IHNWYXJpYW50TWFuYWdlbWVudCA9IG9WaWV3LmdldFZpZXdEYXRhKCkudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0aWYgKG9WYXJpYW50SURzICYmIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkICYmIHNWYXJpYW50TWFuYWdlbWVudCA9PT0gXCJQYWdlXCIpIHtcblx0XHRcdG9WTSA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0dGhpcy5faGFuZGxlUGFnZVZhcmlhbnRJZChvVmFyaWFudElEcywgb1ZNLCBhUHJvbWlzZXMpO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0Lypcblx0ICogSGFuZGxlcyBwYWdlIGxldmVsIHZhcmlhbnQgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9WTSBjb250YWlucyB0aGUgdmFpcmFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIHBhZ2UgdmFyaWFudFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZVBhZ2VWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0b1ZNLmdldFZhcmlhbnRzKCk/LmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkLCBvVk0sIGFQcm9taXNlcywgdHJ1ZSk7XG5cdFx0fSk7XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIGZpbHRlciBiYXIgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9WTSBjb250YWlucyB0aGUgdmFpcmFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cblx0X2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0aWYgKG9WTSkge1xuXHRcdFx0b1ZNLmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkLCBvVk0sIGFQcm9taXNlcywgdHJ1ZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIHRhYmxlIGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBoYXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0Y29uc3QgYVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGFUYWJsZXMuZm9yRWFjaCgob1RhYmxlOiBUYWJsZSkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RhYmxlVmFyaWFudCA9IG9UYWJsZS5nZXRWYXJpYW50KCk7XG5cdFx0XHRpZiAob1RhYmxlICYmIG9UYWJsZVZhcmlhbnQpIHtcblx0XHRcdFx0b1RhYmxlVmFyaWFudC5nZXRWYXJpYW50cygpLmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQsIG9UYWJsZVZhcmlhbnQsIGFQcm9taXNlcyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdC8qXG5cdCAqIEhhbmRsZXMgY29udHJvbCBsZXZlbCB2YXJpYW50IGZvciBjaGFydCBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgaGFzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIG9iamVjdFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvQ29udHJvbGxlcjogTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdXG5cdCkge1xuXHRcdGNvbnN0IGFDaGFydHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKTtcblx0XHRhQ2hhcnRzLmZvckVhY2goKG9DaGFydDogQ2hhcnQpID0+IHtcblx0XHRcdGNvbnN0IG9DaGFydFZhcmlhbnQgPSBvQ2hhcnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgYVZhcmlhbnRzID0gb0NoYXJ0VmFyaWFudC5nZXRWYXJpYW50cygpO1xuXHRcdFx0aWYgKGFWYXJpYW50cykge1xuXHRcdFx0XHRhVmFyaWFudHMuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNDaGFydFZhcmlhbnRJZCwgb0NoYXJ0VmFyaWFudCwgYVByb21pc2VzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdC8qXG5cdCAqIE1hdGNoZXMgdGhlIHZhcmlhbnQgSUQgcHJvdmlkZWQgaW4gdGhlIHVybCB0byB0aGUgYXZhaWxhYmxlIHZhaXJhbnQgSURzIGFuZCBwdXNoZXMgdGhlIGFwcHJvcHJpYXRlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpYW50IGlzIGFuIG9iamVjdCBmb3IgYSBzcGVjaWZpYyB2YXJpYW50XG5cdCAqIEBwYXJhbSBzVmFyaWFudElkIGlzIHRoZSB2YXJpYW50IElEIHByb3ZpZGVkIGluIHRoZSB1cmxcblx0ICogQHBhcmFtIG9WTSBpcyB0aGUgdmFyaWFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIHNwZWNmaWMgdmFyaWFudFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIHByb21pc2VzXG5cdCAqIEBwYXJhbSBiRmlsdGVyVmFyaWFudEFwcGxpZWQgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHNldCB0byB0dXJlIGluIGNhc2UgdGhlIGZpbHRlciB2YXJpYW50IGlzIGFwcGxpZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2U6IGZ1bmN0aW9uIChcblx0XHQvL1RoaXMgZnVuY3Rpb24gZmluZHMgdGhlIHN1aXRhYmxlIHZhcmlhbnQgZm9yIHRoZSB2YXJpYW50SUQgcHJvdmlkZWQgaW4gdGhlIHVybCBhbmQgcHVzaGVzIHRoZW0gdG8gdGhlIHByb21pc2UgYXJyYXlcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QsXG5cdFx0c1ZhcmlhbnRJZDogU3RyaW5nLFxuXHRcdG9WTTogVmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdLFxuXHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZD86IGJvb2xlYW5cblx0KSB7XG5cdFx0aWYgKG9WYXJpYW50LmdldEtleSgpID09PSBzVmFyaWFudElkKSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9WTSwgc1ZhcmlhbnRJZCwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hcHBseUNvbnRyb2xWYXJpYW50OiBmdW5jdGlvbiAob1ZhcmlhbnQ6IGFueSwgc1ZhcmlhbnRJRDogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WYXJpYW50LCBzVmFyaWFudElEKSA/IHNWYXJpYW50SUQgOiBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRjb25zdCBvVk0gPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRlbGVtZW50OiBvVmFyaWFudCxcblx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9WTS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBiRmlsdGVyVmFyaWFudEFwcGxpZWQ7XG5cdFx0fSk7XG5cdH0sXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHByaXZhdGUgaGVscGVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdC8qKlxuXHQgKiBWYXJpYW50IG1hbmFnZW1lbnQgdXNlZCBieSBmaWx0ZXIgYmFyLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmlldyBWaWV3IG9mIHRoZSBMUiBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFZhcmlhbnRNYW5hZ2VtZW50IGlmIHVzZWRcblx0ICovXG5cdF9nZXRGaWx0ZXJCYXJWTTogKHZpZXc6IFZpZXcpOiBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0bGV0IHZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIExSVmlld0RhdGE7XG5cdFx0c3dpdGNoICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSB2aWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50ID0gKHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKS5fZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB2YXJpYW50TWFuYWdlbWVudCBhcyBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZDtcblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5nZXRLZXkoKSA9PT0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuICFvQ3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgRGlzcGxheUN1cnJlbmN5IGlzIG1hbmRhdG9yeSBmb3IgZmlsdGVyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsIE9kYXRhVjQgTWV0YU1vZGVsXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aCBMaXN0IFJlcG9ydCBjb250ZXh0IHBhdGguXG5cdCAqIEByZXR1cm5zIEJvb2xlYW5cblx0ICovXG5cdF9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZDogZnVuY3Rpb24gKG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGNvbnRleHRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChjb250ZXh0UGF0aCksXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFDb250ZXh0KSxcblx0XHRcdGVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgPyBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IDogdW5kZWZpbmVkLFxuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSByZXF1aXJlZFByb3BlcnRpZXMuc29tZShcblx0XHRcdFx0KHJlcXVpcmVkUHJvcGVydHkpID0+IHJlcXVpcmVkUHJvcGVydHkudmFsdWUgPT09IERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRVxuXHRcdFx0KTtcblxuXHRcdHJldHVybiBkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIERpc3BsYXlDdXJyZW5jeSB0byBTViBpZiBpdCBpcyBtYW5kYXRvcnkgYW5kIGV4aXN0cyBpbiBTViBkZWZhdWx0cy5cblx0ICpcblx0ICogQHBhcmFtIHZpZXcgVmlldyBvZiB0aGUgTFIgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc3YgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHlcblx0ICogQHBhcmFtIHN2RGVmYXVsdHMgU2VsZWN0aW9uIFZhcmlhbnQgZGVmYXVsdHNcblx0ICovXG5cdF9hZGREZWZhdWx0RGlzcGxheUN1cnJlbmN5VG9TVjogZnVuY3Rpb24gKHZpZXc6IFZpZXcsIHN2OiBTZWxlY3Rpb25WYXJpYW50LCBzdkRlZmF1bHRzPzogU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdGlmICghc3ZEZWZhdWx0cyB8fCBzdkRlZmF1bHRzPy5pc0VtcHR5KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBMUlZpZXdEYXRhLFxuXHRcdFx0bWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gdmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke3ZpZXdEYXRhLmVudGl0eVNldH1gLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSB0aGlzLl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZChtZXRhTW9kZWwsIGNvbnRleHRQYXRoKSBhcyBib29sZWFuO1xuXG5cdFx0aWYgKCFkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN2T3B0aW9ucyA9IHN2LmdldFNlbGVjdE9wdGlvbihESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUpLFxuXHRcdFx0ZGVmYXVsdFNWT3B0aW9ucyA9IHN2RGVmYXVsdHMuZ2V0U2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSksXG5cdFx0XHRkaXNwbGF5Q3VycmVuY3lEZWZhdWx0RXhpc3RzID0gISFkZWZhdWx0U1ZPcHRpb25zICYmIGRlZmF1bHRTVk9wdGlvbnMubGVuZ3RoID4gMCxcblx0XHRcdG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgPSAhc3ZPcHRpb25zIHx8ICFzdk9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0aWYgKG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgJiYgZGlzcGxheUN1cnJlbmN5RGVmYXVsdEV4aXN0cykge1xuXHRcdFx0Y29uc3QgZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uID0gZGVmYXVsdFNWT3B0aW9uc1swXSxcblx0XHRcdFx0c2lnbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIlNpZ25cIl0sXG5cdFx0XHRcdG9wdGlvbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIk9wdGlvblwiXSxcblx0XHRcdFx0bG93ID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiTG93XCJdLFxuXHRcdFx0XHRoaWdoID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiSGlnaFwiXTtcblxuXHRcdFx0c3YuYWRkU2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSwgc2lnbiwgb3B0aW9uLCBsb3csIGhpZ2gpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IGFkanVzdGVkIFNlbGVjdGlvbiBWYXJpYW50IGJhc2VkIG9uICd1c2VGTFBEZWZhdWx0VmFsdWVzJyBhbmQgJ2FscmVhZHkgYXBwbGllZCBTVicuXG5cdCAqXG5cdCAqIElmIHVzZUZMUERlZmF1bHRWYWx1ZXMgaXMgOlxuXHQgKiAxLiBGQUxTRSwgY29tYmluZSAnYXBwU2F0ZSBTVicgYW5kICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKiAyLiBUUlVFLCAnYXBwU2F0ZSBTVicgaXMgc2FtZSBhcyAnZGVmYXVsdCBTVicuIFNlbGVjdCBPcHRpb25zIG9mICdkZWZhdWx0IFNWJyB0YWtlcyBwcmlvcml0eSBvdmVyICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyQVBJIEZpbHRlckJhckFQSSB0byBmZXRjaCB0aGUgYXBwbGllZCBTVlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVTViBTZWxlY3Rpb24gVmFyaWFudCB0byBhcHBseSBmcm9tIGFwcFN0YXRlXG5cdCAqIEBwYXJhbSB1c2VGTFBEZWZhdWx0VmFsdWVzIFNob3VsZCBGTFAgZGVmYXVsdHMgYmUgdXNlZFxuXHQgKiBAcmV0dXJucyBBZGp1c3RlZCBTVlxuXHQgKi9cblx0X2dldEFkanVzdGVkU1Y6IGFzeW5jIChmaWx0ZXJCYXJBUEk6IEZpbHRlckJhckFQSSwgYXBwU3RhdGVTVjogU2VsZWN0aW9uVmFyaWFudCwgdXNlRkxQRGVmYXVsdFZhbHVlczogYm9vbGVhbikgPT4ge1xuXHRcdGxldCBhZGp1c3RlZFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoYXBwU3RhdGVTVi50b0pTT05PYmplY3QoKSk7XG5cdFx0Y29uc3QgYWxyZWFkeUFwcGxpZWRTViA9IGF3YWl0IGZpbHRlckJhckFQSS5nZXRTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0Y29uc3QgYXBwbGllZFNlbE9wdE5hbWVzID0gYWxyZWFkeUFwcGxpZWRTVj8uZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMoKSB8fCBbXTtcblx0XHRpZiAoYXBwbGllZFNlbE9wdE5hbWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIFdlIG1lcmdlICdhcHBsaWVkIFNWJyBhbmQgJ2FwcFN0YXRlIFNWJyBiYXNlZCBvbiAndXNlRkxQRGVmYXVsdFZhbHVlcycuXG5cdFx0XHRhZGp1c3RlZFNWID0gYXBwbGllZFNlbE9wdE5hbWVzLnJlZHVjZSgoc3ZDb3B5OiBTZWxlY3Rpb25WYXJpYW50LCBzZWxPcHRpb25OYW1lKSA9PiB7XG5cdFx0XHRcdC8vIChhcHBTdGF0ZVNWID0gYWRqdXN0ZWRTViA9IHN2Q29weSlcblx0XHRcdFx0Y29uc3Qgc3ZTZWxPcHRzID0gc3ZDb3B5LmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0Ly8gSWYgdXNlRkxQRGVmYXVsdFZhbHVlcyA9IHRydWUsIG1lYW5zIChhcHBTdGF0ZVNWID0gc3ZEZWZhdWx0cylcblx0XHRcdFx0aWYgKCh1c2VGTFBEZWZhdWx0VmFsdWVzICYmICFzdlNlbE9wdHM/Lmxlbmd0aCkgfHwgIXVzZUZMUERlZmF1bHRWYWx1ZXMpIHtcblx0XHRcdFx0XHQvLyBpZiBkZWZhdWx0IFNWIG5lZWRzIHRvIGJlIHVzZWQsIHRoZW4gc2VsZWN0IG9wdGlvbnMgZnJvbSBkZWZhdWx0IHNlbGVjdCBvcHRpb25zIHRha2UgcHJpb3JpdHkuXG5cdFx0XHRcdFx0Ly8gZWxzZSB3ZSBtZXJnZSBib3RoOiBhbHJlYWR5IGFwcGxpZWQgU1YgYW5kIFNWIGZyb20gbmF2UGFyYW1zLlxuXHRcdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBhbHJlYWR5QXBwbGllZFNWLmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0XHRzdkNvcHkubWFzc0FkZFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lLCBzZWxlY3RPcHRpb25zIHx8IFtdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3ZDb3B5O1xuXHRcdFx0fSwgYWRqdXN0ZWRTVik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFkanVzdGVkU1Y7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFwcGx5IFNlbGVjdGlvbiBWYXJpYW50IGZyb20gTmF2aWdhdGlvbiBQYXJhbWV0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3IFZpZXcgb2YgdGhlIExSIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG5hdmlnYXRpb25QYXJhbWV0ZXIgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHkgZnJvbSBhcHBTdGF0ZVxuXHQgKiBAcGFyYW0gZmlsdGVyVmFyaWFudEFwcGxpZWQgSXMgYSBmaWx0ZXIgdmFyaWFudCBhbGFyZWFkeSBhcHBsaWVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKi9cblx0X2FwcGx5U2VsZWN0aW9uVmFyaWFudDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHZpZXc6IFZpZXcsXG5cdFx0bmF2aWdhdGlvblBhcmFtZXRlcjogTmF2SGFuZGxlck5hdlBhcmFtcyxcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSAodmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Y29uc3Qge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogc3YsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IHN2RGVmYXVsdHMsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogcmVxU3RkVmFyaWFudCA9IGZhbHNlLFxuXHRcdFx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogc3ZEZWZhdWx0c09ubHkgPSBmYWxzZVxuXHRcdH0gPSBuYXZpZ2F0aW9uUGFyYW1ldGVyO1xuXG5cdFx0aWYgKCFmaWx0ZXJCYXIgfHwgIXN2KSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBjbGVhckZpbHRlcnNBbmRSZXBsYWNlV2l0aEFwcFN0YXRlID0gYXdhaXQgdGhpcy5fYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGUoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCxcblx0XHRcdHJlcVN0ZFZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZFxuXHRcdCk7XG5cblx0XHRpZiAoY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSkge1xuXHRcdFx0dGhpcy5fYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1Yodmlldywgc3YsIHN2RGVmYXVsdHMpO1xuXG5cdFx0XHQvLyBjaGVjayBpZiBGTFAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZXJlIGFuZCBpcyBpdCBzdGFuZGFyZCB2YXJpYW50XG5cdFx0XHRjb25zdCBzdkRlZmF1bHRzQXJlUHJlc2VudCA9IHN2RGVmYXVsdHMgPyBzdkRlZmF1bHRzLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCkubGVuZ3RoID4gMCA6IGZhbHNlO1xuXHRcdFx0Y29uc3Qgc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgPVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJiB2YXJpYW50TWFuYWdlbWVudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdGNvbnN0IHVzZUZMUERlZmF1bHRWYWx1ZXM6IGJvb2xlYW4gPVxuXHRcdFx0XHRzdkRlZmF1bHRzQXJlUHJlc2VudCAmJiAoc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgfHwgIXZhcmlhbnRNYW5hZ2VtZW50KSAmJiBzdkRlZmF1bHRzT25seTtcblxuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGxldCBzdlRvU2V0OiBTZWxlY3Rpb25WYXJpYW50ID0gc3Y7XG5cdFx0XHRpZiAoZmlsdGVyVmFyaWFudEFwcGxpZWQgfHwgdXNlRkxQRGVmYXVsdFZhbHVlcykge1xuXHRcdFx0XHRzdlRvU2V0ID0gYXdhaXQgdGhpcy5fZ2V0QWRqdXN0ZWRTVihmaWx0ZXJCYXJBUEksIHN2LCB1c2VGTFBEZWZhdWx0VmFsdWVzKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS5zZXRTZWxlY3Rpb25WYXJpYW50KHN2VG9TZXQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQWN0aXZhdGUgdmFyaWFudCBmcm9tIHZhcmlhbnQgbWFuYWdlbWVudCBhbmQgcmV0dXJuIGlmIGFwcFN0YXRlIG5lZWRzIHRvIGJlIGFwcGxpZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YXJpYW50TWFuYWdlbWVudCBWYXJpYW50TWFuYWdlbWVudCB1c2VkIGJ5IGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHJlcVN0ZFZhcmlhbnQgSWYgc3RhbmRhcmQgdmFyaWFudCBpcyByZXF1aXJlZCB0byBiZSB1c2VkXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYXJpYW50QXBwbGllZCBJcyBhIGZpbHRlciB2YXJpYW50IGFsYXJlYWR5IGFwcGxpZWRcblx0ICogQHJldHVybnMgUHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqL1xuXHRfYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGU6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnQgfCB1bmRlZmluZWQsXG5cdFx0cmVxU3RkVmFyaWFudDogYm9vbGVhbixcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAodmFyaWFudE1hbmFnZW1lbnQgJiYgIWZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgdmFyaWFudEtleSA9IHJlcVN0ZFZhcmlhbnQgPyB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IHZhcmlhbnRNYW5hZ2VtZW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAodmFyaWFudEtleSA9PT0gbnVsbCkge1xuXHRcdFx0XHR2YXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0SWQoKTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0ZWxlbWVudDogdmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHZhcmlhbnRLZXlcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlcVN0ZFZhcmlhbnQgfHwgdmFyaWFudE1hbmFnZW1lbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Lypcblx0ICogU2V0cyBmaWx0ZXJlZDogZmFsc2UgZmxhZyB0byBldmVyeSBmaWVsZCBzbyB0aGF0IGl0IGNhbiBiZSBjbGVhcmVkIG91dFxuXHQgKlxuXHQgKiBAcGFyYW0gb0ZpbHRlckJhciBmaWx0ZXJiYXIgY29udHJvbCBpcyB1c2VkIHRvIGRpc3BsYXkgZmlsdGVyIHByb3BlcnRpZXMgaW4gYSB1c2VyLWZyaWVuZGx5IG1hbm5lciB0byBwb3B1bGF0ZSB2YWx1ZXMgZm9yIGEgcXVlcnlcblx0ICogQHJldHVybnMgcHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXY6IGFzeW5jIGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBGaWx0ZXJCYXIpIHtcblx0XHRyZXR1cm4gU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyKVxuXHRcdFx0LnRoZW4oKG9FeHRlcm5hbFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0NvbmRpdGlvbiA9IG9FeHRlcm5hbFN0YXRlLmZpbHRlcjtcblx0XHRcdFx0Zm9yIChjb25zdCBmaWVsZCBpbiBvQ29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKGZpZWxkICE9PSBcIiRlZGl0U3RhdGVcIiAmJiBmaWVsZCAhPT0gXCIkc2VhcmNoXCIgJiYgb0NvbmRpdGlvbltmaWVsZF0pIHtcblx0XHRcdFx0XHRcdG9Db25kaXRpb25bZmllbGRdLmZvckVhY2goKGNvbmRpdGlvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uW1wiZmlsdGVyZWRcIl0gPSBmYWxzZTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb0NvbmRpdGlvbjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJldHJpZXZpbmcgdGhlIGV4dGVybmFsIHN0YXRlXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSxcblxuXHRfY2xlYXJGaWx0ZXJDb25kaXRpb25zOiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogRmlsdGVyQmFyKSB7XG5cdFx0Y29uc3QgYUl0ZW1zOiBQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NsZWFyQ29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYob0ZpbHRlckJhcik7XG5cdFx0XHRyZXR1cm4gU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyLCB7XG5cdFx0XHRcdGZpbHRlcjogb0NsZWFyQ29uZGl0aW9ucyxcblx0XHRcdFx0aXRlbXM6IGFJdGVtc1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpZXdTdGF0ZU92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztFQTREQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBTztJQUNqQ0UscUJBQXFCLEdBQUdDLFdBQVcsQ0FBQ0MsaUJBQWlCO0lBQ3JEQyxtQkFBbUIsR0FBR0YsV0FBVyxDQUFDRSxtQkFBbUI7SUFDckRDLGVBQWUsR0FBR0gsV0FBVyxDQUFDRyxlQUFlO0lBQzdDQyw4QkFBOEIsR0FBRyxpQkFBaUI7RUFFbkQsTUFBTUMsaUJBQXNCLEdBQUc7SUFDOUJDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJDLHFCQUFxQixFQUFFLFlBQVk7TUFDbEMsT0FBTyxJ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
|
|
@@ -37,6 +37,7 @@ type VariantObject = {
|
|
|
37
37
|
sharing: string;
|
|
38
38
|
title: string;
|
|
39
39
|
visible: boolean;
|
|
40
|
+
getKey: () => string;
|
|
40
41
|
};
|
|
41
42
|
|
|
42
43
|
type NavHandlerNavParams = NavigationParameter & {
|
|
@@ -441,7 +442,7 @@ const ViewStateOverride: any = {
|
|
|
441
442
|
aPromises: VariantManagement[],
|
|
442
443
|
bFilterVariantApplied?: boolean
|
|
443
444
|
) {
|
|
444
|
-
if (oVariant.
|
|
445
|
+
if (oVariant.getKey() === sVariantId) {
|
|
445
446
|
aPromises.push(this._applyControlVariant(oVM, sVariantId, bFilterVariantApplied));
|
|
446
447
|
}
|
|
447
448
|
},
|
|
@@ -36,7 +36,7 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
36
36
|
controls: [],
|
|
37
37
|
elements: [],
|
|
38
38
|
// eslint-disable-next-line no-template-curly-in-string
|
|
39
|
-
version: "1.120.
|
|
39
|
+
version: "1.120.20",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
});
|
|
42
42
|
if (!thisLib.ObjectPage) {
|
|
@@ -10,7 +10,7 @@ T_NEW_OBJECT=Nov\u00FD objekt
|
|
|
10
10
|
|
|
11
11
|
T_NEW_OBJECT_DEFAULT=Nov\u00FD objekt
|
|
12
12
|
|
|
13
|
-
T_ANNOTATION_HELPER_DEFAULT_OBJECT_PAGE_HEADER_TITLE=Nov\
|
|
13
|
+
T_ANNOTATION_HELPER_DEFAULT_OBJECT_PAGE_HEADER_TITLE=Nov\u00E9
|
|
14
14
|
|
|
15
15
|
C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_TITLE=Relace vypr\u0161ela
|
|
16
16
|
|