@sapui5/sap.fe.templates 1.136.17 → 1.136.18
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/ObjectPage/ObjectPageTemplating.js +4 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +3 -0
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.js +2 -2
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.tsx +1 -1
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +4 -3
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +4 -4
- package/src/sap/fe/templates/library.js +1 -1
package/package.json
CHANGED
|
@@ -441,6 +441,9 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/ManifestSet
|
|
|
441
441
|
*/
|
|
442
442
|
_exports.getBindingWithGroupIdFromConfig = getBindingWithGroupIdFromConfig;
|
|
443
443
|
const createBindingForAlternateAndSecondaryKeys = function (dataModelObjectPath) {
|
|
444
|
+
if (!dataModelObjectPath?.navigationProperties?.length) {
|
|
445
|
+
return undefined;
|
|
446
|
+
}
|
|
444
447
|
let binding;
|
|
445
448
|
const alternateAndSecondaryKeys = ModelHelper.getAlternateAndSecondaryKeys(dataModelObjectPath?.targetEntityType, dataModelObjectPath?.targetEntitySet);
|
|
446
449
|
if (alternateAndSecondaryKeys?.length) {
|
|
@@ -793,4 +796,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/ManifestSet
|
|
|
793
796
|
getFooterVisibilityExpression.requiresIContext = true;
|
|
794
797
|
return _exports;
|
|
795
798
|
}, false);
|
|
796
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwibUxpYnJhcnkiLCJnZXRFeHByZXNzaW9uRm9yVGl0bGUiLCJmdWxsQ29udGV4dFBhdGgiLCJ2aWV3RGF0YSIsImhlYWRlckluZm8iLCJnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJnZXRFeHByZXNzaW9uRm9yRGVzY3JpcHRpb24iLCJvSGVhZGVySW5mbyIsImRlc2NyaXB0aW9uQmluZGluZyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIkRlc2NyaXB0aW9uIiwiVmFsdWUiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiVUkiLCJUZXh0QXJyYW5nZW1lbnQiLCJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiZGVzY3JpcHRpb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImZvcm1hdFZhbHVlUmVjdXJzaXZlbHkiLCJnZXRFeHByZXNzaW9uRm9yU2F2ZUJ1dHRvbiIsIm9WaWV3RGF0YSIsInNhdmVCdXR0b25UZXh0IiwicmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJjcmVhdGVCdXR0b25UZXh0Iiwic2F2ZUV4cHJlc3Npb24iLCJzdGFydGluZ0VudGl0eVNldCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiaWZFbHNlIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldEV4cHJlc3Npb25Gb3JMYWJlbE9uSGVhZGVyRm9ybSIsImxhYmVsIiwiaXNNYW5pZmVzdEFjdGlvbiIsImFjdGlvbiIsIm5vbk1hbmlmZXN0QWN0aW9ucyIsImluY2x1ZGVzIiwidHlwZSIsImJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJkYXRhQ29udGV4dFBhdGgiLCJpZGVudGlmaWNhdGlvbiIsInRhcmdldEVudGl0eVR5cGUiLCJJZGVudGlmaWNhdGlvbiIsImRhdGFGaWVsZHNXaXRoQ3JpdGljYWxpdHkiLCJmaWx0ZXIiLCJkYXRhRmllbGQiLCIkVHlwZSIsIkNyaXRpY2FsaXR5IiwiZGF0YUZpZWxkc0JpbmRpbmdFeHByZXNzaW9ucyIsImxlbmd0aCIsIm1hcCIsImNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uIiwiYW5kIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJvciIsImNvbnN0YW50IiwiR2hvc3QiLCJFbXBoYXNpemVkIiwiZ2V0RWxlbWVudEJpbmRpbmciLCJzUGF0aCIsInNOYXZpZ2F0aW9uUGF0aCIsIk9EYXRhTW9kZWxBbm5vdGF0aW9uSGVscGVyIiwiZ2V0TmF2aWdhdGlvblBhdGgiLCJjaGVja0RyYWZ0U3RhdGUiLCJlbnRpdHlTZXQiLCJEcmFmdFJvb3QiLCJFZGl0QWN0aW9uIiwiY2hlY2tDb2xsYWJvcmF0aW9uRHJhZnRSb290IiwiU2hhcmVBY3Rpb24iLCJnZXRTd2l0Y2hUb0FjdGl2ZVZpc2liaWxpdHkiLCJwYXRoSW5Nb2RlbCIsIklzRWRpdGFibGUiLCJnZXRTd2l0Y2hUb0RyYWZ0VmlzaWJpbGl0eSIsImdldFN3aXRjaERyYWZ0QW5kQWN0aXZlVmlzaWJpbGl0eSIsIl9maW5kQWN0aW9uIiwiYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zIiwic0FjdGlvblR5cGUiLCJvQWN0aW9uIiwiZmluZCIsIm9IZWFkZXJBY3Rpb24iLCJnZXREZWxldGVDb21tYW5kRXhlY3V0aW9uRW5hYmxlZCIsIm9EZWxldGVBY3Rpb24iLCJlbmFibGVkIiwiZ2V0RGVsZXRlQ29tbWFuZEV4ZWN1dGlvblZpc2libGUiLCJ2aXNpYmxlIiwiZ2V0RWRpdENvbW1hbmRFeGVjdXRpb25WaXNpYmxlIiwib0VkaXRBY3Rpb24iLCJnZXRFZGl0Q29tbWFuZEV4ZWN1dGlvbkVuYWJsZWQiLCJnZXRFZGl0QWN0aW9uIiwib0VudGl0eVNldCIsImdldFBhdGgiLCJhUGF0aHMiLCJzcGxpdCIsInJvb3RFbnRpdHlTZXRQYXRoIiwicm9vdEVudGl0eVNldEFubm5vdGF0aW9ucyIsImdldE9iamVjdCIsImJEcmFmdFJvb3QiLCJoYXNPd25Qcm9wZXJ0eSIsImJEcmFmdE5vZGUiLCJiU3RpY2t5U2Vzc2lvbiIsInNBY3Rpb25OYW1lIiwiaXNSZWFkT25seUZyb21TdGF0aWNBbm5vdGF0aW9ucyIsIm9Bbm5vdGF0aW9ucyIsIm9GaWVsZENvbnRyb2wiLCJiQ29tcHV0ZWQiLCJiSW1tdXRhYmxlIiwiYlJlYWRPbmx5IiwiQm9vbCIsInJlYWRPbmx5RXhwcmVzc2lvbkZyb21EeW5hbWljQW5ub3RhdGlvbnMiLCJzSXNGaWVsZENvbnRyb2xQYXRoUmVhZE9ubHkiLCJiaW5kaW5nUGFyc2VyIiwiZ2V0RXhwcmVzc2lvbkZvck1pY3JvQ2hhcnRUaXRsZVByZXNzIiwib0NvbmZpZ3VyYXRpb24iLCJ0YXJnZXRBbm5vdGF0aW9uUGF0aCIsInRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3QiLCJvTWFuaWZlc3RPdXRib3VuZCIsInNDb2xsZWN0aW9uTmFtZSIsImdldE1pY3JvQ2hhcnRDb250cm9sQ29uZmlndXJhdGlvblBhdGgiLCJuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRNaWNyb0NoYXJ0VGl0bGVBc0xpbmsiLCJvQ29udHJvbENvbmZpZ3VyYXRpb24iLCJjb2xsZWN0aW9uTmFtZSIsInRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uIiwidGFyZ2V0T2JqZWN0IiwiVmlzdWFsaXphdGlvbnMiLCJ2YWx1ZSIsImdldEdyb3VwSWRGcm9tQ29uZmlnIiwib0NvbmZpZ3VyYXRpb25zIiwic0Fubm90YXRpb25QYXRoIiwic0RlZmF1bHRHcm91cElkIiwiYUF1dG9QYXR0ZXJucyIsInNHcm91cElkIiwicmVxdWVzdEdyb3VwSWQiLCJzb21lIiwiYXV0b1BhdHRlcm4iLCJnZXRHcm91cElkRnJvbUNvbmZpZ0Zvck1pY3JvQ2hhcnQiLCJ0YXJnZXRBbm5vdGF0aW9uUGF0aERhdGFNb2RlbE9iamVjdCIsImdldEJpbmRpbmdXaXRoR3JvdXBJZEZyb21Db25maWciLCJzS2V5Iiwic0JpbmRpbmciLCJjcmVhdGVCaW5kaW5nRm9yQWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJiaW5kaW5nIiwiYWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyIsIk1vZGVsSGVscGVyIiwiZ2V0QWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyIsInRhcmdldEVudGl0eVNldCIsInBhdGgiLCJwYXJhbWV0ZXJzIiwiJHNlbGVjdCIsImpvaW4iLCJkb2VzRmllbGRHcm91cENvbnRhaW5Pbmx5T25lTXVsdGlMaW5lRGF0YUZpZWxkIiwiYUZvcm1FbGVtZW50cyIsImlzVmFsdWVNdWx0aWxpbmVUZXh0IiwiZ2V0VmlzaWJsZUV4cHJlc3Npb25Gb3JCcmVhZGNydW1icyIsInNob3dCcmVhZENydW1icyIsImZjbEVuYWJsZWQiLCJnZXRTaGFyZUJ1dHRvblZpc2liaWxpdHkiLCJpc1NoYXJlQnV0dG9uVmlzaWJsZUZvck15SW5ib3giLCJzaGFyZUJ1dHRvblZpc2liaWxpdHlFeHAiLCJnZXRWaXNpYmxpdHlPZkhlYWRlckluZm8iLCJvVGl0bGVBbm5vdGF0aW9ucyIsIm9EZXNjcmlwdGlvbkFubm90YXRpb25zIiwib0ZpZWxkVGl0bGVGaWVsZENvbnRyb2wiLCJvRmllbGREZXNjcmlwdGlvbkZpZWxkQ29udHJvbCIsImJJc1RpdGxlUmVhZE9ubHkiLCJ0aXRsZUV4cHJlc3Npb24iLCJiSXNEZXNjcmlwdGlvblJlYWRPbmx5IiwiZGVzY3JpcHRpb25FeHByZXNzaW9uIiwiY29tYmluZVRpdGxlQW5kRGVzY3JpcHRpb25FeHByZXNzaW9uIiwib1RpdGxlRmllbGRDb250cm9sIiwib0Rlc2NyaXB0aW9uRmllbGRDb250cm9sIiwiZ2V0UHJlc3NFeHByZXNzaW9uRm9yRGVsZXRlIiwiZGVsZXRhYmxlQ29udGV4dHMiLCJ0aXRsZSIsInBhcmFtcyIsIkNvbW1vbkhlbHBlciIsImdlbmVyYXRlRnVuY3Rpb24iLCJvYmplY3RUb1N0cmluZyIsImdldFByZXNzRXhwcmVzc2lvbkZvckVkaXQiLCJvRGF0YUZpZWxkIiwic0VudGl0eVNldE5hbWUiLCJzRWRpdGFibGVDb250ZXh0cyIsImFkZFNpbmdsZVF1b3RlcyIsIkFjdGlvbiIsInNEYXRhRmllbGRFbnVtTWVtYmVyIiwiSW52b2NhdGlvbkdyb3VwaW5nIiwic0ludm9jYXRpb25Hcm91cCIsIm9QYXJhbXMiLCJjb250ZXh0cyIsImVudGl0eVNldE5hbWUiLCJpbnZvY2F0aW9uR3JvdXBpbmciLCJtb2RlbCIsIkxhYmVsIiwiaXNOYXZpZ2FibGUiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJnZXRQcmVzc0V4cHJlc3Npb25Gb3JGb290ZXJBbm5vdGF0aW9uQWN0aW9uIiwiZGF0YUZpZWxkTW9kZWxQYXRoIiwiaGVhZGVyQWN0aW9uIiwiYWN0aW9uQ29udGV4dHMiLCJnZXRQcmVzc0V4cHJlc3Npb25Gb3JQcmltYXJ5QWN0aW9uIiwicG9zaXRpdmVBY3Rpb25WaXNpYmxlIiwicG9zaXRpdmVBY3Rpb25FbmFibGVkIiwiZWRpdEFjdGlvblZpc2libGUiLCJlZGl0QWN0aW9uRW5hYmxlZCIsInNBY3Rpb25Db250ZXh0cyIsInRvU3RyaW5nIiwib0NvbmRpdGlvbnMiLCJnZXRTdGFzaGFibGVIQm94QmluZGluZyIsIm9IZWFkZXJGYWNldCIsIkZhY2V0IiwidGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJ0YXJnZXRBbm5vdGF0aW9uVmFsdWUiLCJnZXRIZWFkZXJGb3JtSGJveFJlbmRlclR5cGUiLCJnZXREZWZhdWx0QWN0aW9uSGFuZGxlciIsIm9DdHgiLCJvRGF0YUZpZWxkRm9yRGVmYXVsdEFjdGlvbiIsImRlZmF1bHRBY3Rpb25Db250ZXh0T3JFbnRpdHlTZXQiLCJkZWZhdWx0QWN0aW9uIiwiY29tbWFuZCIsInByZXNzIiwibm9XcmFwIiwiYnVpbGRBY3Rpb25XcmFwcGVyIiwiaWQiLCJpb0V4IiwiaXNWaXN1YWxpemF0aW9uSXNQYXJ0T2ZQcmV2aWV3Iiwic3ViU2VjdGlvbiIsImlzUGFydE9mUHJldmlldyIsInByZXNlbnRhdGlvbiIsInZpc3VhbGl6YXRpb25zIiwiZ2V0Rm9vdGVyVmlzaWJpbGl0eUV4cHJlc3Npb24iLCJjb250ZXh0IiwiZm9vdGVyQWN0aW9ucyIsIm1ldGFNb2RlbCIsImdldEludGVyZmFjZSIsImdldE1vZGVsIiwiX2dlbmVyYXRlQmluZGluZ3NGb3JBY3Rpb25zIiwiYWN0aW9ucyIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiZ2V0QWN0aW9uTW9kZWxQYXRoIiwiYW5ub3RhdGlvblBhdGgiLCJhY3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImRldGVybWluaW5nQWN0aW9ucyIsIkFjdGlvblR5cGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJtYW5pZmVzdEFjdGlvbkJpbmRpbmdzIiwiZGV0ZXJtaW5pbmdBY3Rpb25CaW5kaW5ncyIsImlzTm90SGlkZGVuRGV0ZXJtaW5pbmdBY3Rpb24iLCJhY3Rpb25Db250ZXh0TW9kZWxQYXRoIiwiZ2V0SGVhZGVyTGV2ZWwiLCJpc01vcmVDb250ZW50Iiwic2hvd1N1YlNlY3Rpb25UaXRsZSIsImxldmVsIiwiZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUiLCJyZXF1aXJlc0lDb250ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJPYmplY3RQYWdlVGVtcGxhdGluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGb3JtYXR0ZXJzIGZvciB0aGUgT2JqZWN0IFBhZ2VcbmltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5LCBTaW5nbGV0b24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0Q2hhcnQsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZERlZmF1bHQsXG5cdERhdGFGaWVsZEZvckFjdGlvbixcblx0RGF0YUZpZWxkVHlwZXMsXG5cdEZhY2V0LFxuXHRIZWFkZXJJbmZvVHlwZSxcblx0UHJlc2VudGF0aW9uVmFyaWFudFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhbmQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRjb25zdGFudCxcblx0ZXF1YWwsXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aWZFbHNlLFxuXHRub3QsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbCxcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmdcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IE1pY3JvQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlLCB0eXBlIENvbnRyb2xDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUFjdGlvbiwgQ3VzdG9tQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uRm9ybUVsZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZEdyb3VwRmFjZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL09iamVjdFBhZ2UvU3ViU2VjdGlvblwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVGl0bGVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHtcblx0YWRkVGV4dEFycmFuZ2VtZW50VG9CaW5kaW5nRXhwcmVzc2lvbixcblx0Zm9ybWF0VmFsdWVSZWN1cnNpdmVseSxcblx0Z2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IG1MaWJyYXJ5IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBiaW5kaW5nUGFyc2VyIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RPdXRib3VuZEVudHJ5IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgdHlwZSB7IElDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgT0RhdGFNb2RlbEFubm90YXRpb25IZWxwZXIgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Bbm5vdGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuXG5jb25zdCBCdXR0b25UeXBlID0gbUxpYnJhcnkuQnV0dG9uVHlwZTtcblxuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25Gb3JUaXRsZSA9IGZ1bmN0aW9uIChcblx0ZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdHZpZXdEYXRhOiBWaWV3RGF0YSxcblx0aGVhZGVySW5mbz86IEhlYWRlckluZm9UeXBlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdHJldHVybiBnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uKFxuXHRcdGZ1bGxDb250ZXh0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0XHRnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24sXG5cdFx0dW5kZWZpbmVkLFxuXHRcdGhlYWRlckluZm8sXG5cdFx0dmlld0RhdGFcblx0KTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBleHByZXNzaW9uIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgYW4gb2JqZWN0IHBhZ2UuXG4gKiBAcGFyYW0gZnVsbENvbnRleHRQYXRoIFRoZSBmdWxsIGNvbnRleHQgcGF0aCB1c2VkIHRvIHJlYWNoIHRoYXQgb2JqZWN0IHBhZ2VcbiAqIEBwYXJhbSBvSGVhZGVySW5mbyBUaGUgQFVJLkhlYWRlckluZm8gYW5ub3RhdGlvbiBjb250ZW50XG4gKiBAcGFyYW0gb0hlYWRlckluZm8uRGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBvYmplY3QgcGFnZSBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0RXhwcmVzc2lvbkZvckRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKFxuXHRmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RW50aXR5U2V0Pixcblx0b0hlYWRlckluZm8/OiBIZWFkZXJJbmZvVHlwZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRsZXQgZGVzY3JpcHRpb25CaW5kaW5nID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKChvSGVhZGVySW5mbz8uRGVzY3JpcHRpb24gYXMgRGF0YUZpZWxkVHlwZXMpPy5WYWx1ZSk7XG5cdGlmICgob0hlYWRlckluZm8/LkRlc2NyaXB0aW9uIGFzIERhdGFGaWVsZFR5cGVzKT8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQ/LmFubm90YXRpb25zPy5VST8uVGV4dEFycmFuZ2VtZW50KSB7XG5cdFx0Ly8gSW4gY2FzZSBhbiBleHBsaWNpdCB0ZXh0IGFycmFuZ2VtZW50IHdhcyBzZXQgd2UgbWFrZSB1c2Ugb2YgaXQgaW4gdGhlIGRlc2NyaXB0aW9uIGFzIHdlbGxcblx0XHRkZXNjcmlwdGlvbkJpbmRpbmcgPSBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uKGRlc2NyaXB0aW9uQmluZGluZywgZnVsbENvbnRleHRQYXRoKTtcblx0fVxuXHRjb25zdCBkZXNjcmlwdGlvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGZvcm1hdFZhbHVlUmVjdXJzaXZlbHkoZGVzY3JpcHRpb25CaW5kaW5nLCBmdWxsQ29udGV4dFBhdGgpKTtcblx0cmV0dXJuIGRlc2NyaXB0aW9uID09PSBcInVuZGVmaW5lZFwiID8gXCJcIiA6IGRlc2NyaXB0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4cHJlc3Npb24gZm9yIHRoZSBzYXZlIGJ1dHRvbi5cbiAqIEBwYXJhbSBvVmlld0RhdGEgVGhlIGN1cnJlbnQgdmlldyBkYXRhXG4gKiBAcGFyYW0gZnVsbENvbnRleHRQYXRoIFRoZSBwYXRoIHVzZWQgdXAgdW50aWwgaGVyZVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0aGF0IHNob3dzIHRoZSByaWdodCBzYXZlIGJ1dHRvbiB0ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHByZXNzaW9uRm9yU2F2ZUJ1dHRvbiA9IGZ1bmN0aW9uIChcblx0b1ZpZXdEYXRhOiBWaWV3RGF0YSxcblx0ZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3Qgc2F2ZUJ1dHRvblRleHQgPSBvVmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9TQVZFXCIpO1xuXHRjb25zdCBjcmVhdGVCdXR0b25UZXh0ID0gb1ZpZXdEYXRhLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfT1BfT0JKRUNUX1BBR0VfQ1JFQVRFXCIpO1xuXHRsZXQgc2F2ZUV4cHJlc3Npb247XG5cblx0aWYgKChmdWxsQ29udGV4dFBhdGguc3RhcnRpbmdFbnRpdHlTZXQgYXMgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5TZXNzaW9uPy5TdGlja3lTZXNzaW9uU3VwcG9ydGVkKSB7XG5cdFx0Ly8gSWYgd2UncmUgaW4gc3RpY2t5IG1vZGUgQU5EIHRoZSB1aSBpcyBpbiBjcmVhdGUgbW9kZSwgc2hvdyBDcmVhdGUsIGVsc2Ugc2hvdyBTYXZlXG5cdFx0c2F2ZUV4cHJlc3Npb24gPSBpZkVsc2UoVUkuSXNDcmVhdGVNb2RlLCBjcmVhdGVCdXR0b25UZXh0LCBzYXZlQnV0dG9uVGV4dCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgd2UncmUgaW4gZHJhZnQgQU5EIHRoZSBkcmFmdCBpcyBhIG5ldyBvYmplY3QgKCFJc0FjdGl2ZUVudGl0eSAmJiAhSGFzQWN0aXZlRW50aXR5KSwgc2hvdyBjcmVhdGUsIGVsc2Ugc2hvdyBzYXZlXG5cdFx0c2F2ZUV4cHJlc3Npb24gPSBpZkVsc2UoRHJhZnQuSXNOZXdPYmplY3QsIGNyZWF0ZUJ1dHRvblRleHQsIHNhdmVCdXR0b25UZXh0KTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc2F2ZUV4cHJlc3Npb24pO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4cHJlc3Npb24gb2YgdGhlIGxhYmVsIGZvciBhIGZpZWxkIGludG8gYSBoZWFkZXIgZm9ybS5cbiAqIEBwYXJhbSBsYWJlbCBUaGUgbGFiZWwgb2YgdGhlIGhlYWRlciBmb3JtIGluIGFuIG9iamVjdCBwYWdlLlxuICogQHBhcmFtIHZpZXdEYXRhIFRoZSBjdXJyZW50IHZpZXcgZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0cmFuc2xhdGVkIGxhYmVsIG9mIHRoZSBvZiB0aGUgaGVhZGVyIGZvcm0gaW4gYW4gb2JqZWN0IHBhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHByZXNzaW9uRm9yTGFiZWxPbkhlYWRlckZvcm0gPSBmdW5jdGlvbiAobGFiZWw6IFN0cmluZywgdmlld0RhdGE6IFZpZXdEYXRhKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gdmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiSEVBREVSX0ZPUk1fTEFCRUxcIiwgW2xhYmVsXSk7XG59O1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIFdoZXRoZXIgdGhlIGFjdGlvbiB0eXBlIGlzIG1hbmlmZXN0IG9yIG5vdC5cbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhY3Rpb24gaXMgY29taW5nIGZyb20gbWFuaWZlc3QsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc01hbmlmZXN0QWN0aW9uID0gZnVuY3Rpb24gKGFjdGlvbjogQmFzZUFjdGlvbiB8IEN1c3RvbUFjdGlvbik6IGFjdGlvbiBpcyBDdXN0b21BY3Rpb24ge1xuXHRjb25zdCBub25NYW5pZmVzdEFjdGlvbnMgPSBbXG5cdFx0XCJQcmltYXJ5XCIsXG5cdFx0XCJEZWZhdWx0QXBwbHlcIixcblx0XHRcIlNlY29uZGFyeVwiLFxuXHRcdFwiRm9yQWN0aW9uXCIsXG5cdFx0XCJGb3JOYXZpZ2F0aW9uXCIsXG5cdFx0XCJTd2l0Y2hUb0FjdGl2ZU9iamVjdFwiLFxuXHRcdFwiU3dpdGNoVG9EcmFmdE9iamVjdFwiLFxuXHRcdFwiRHJhZnRBY3Rpb25zXCIsXG5cdFx0XCJDb3B5XCIsXG5cdFx0XCJTdGFuZGFyZFwiXG5cdF07XG5cdHJldHVybiAhbm9uTWFuaWZlc3RBY3Rpb25zLmluY2x1ZGVzKGFjdGlvbi50eXBlID8/IFwiXCIpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgY29tcGlsZWQgZXhwcmVzc2lvbiB0byBkZXRlcm1pbmUgRW1waGFzaXplZCAgYnV0dG9uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHkgYWNyb3NzIGFsbCBhY3Rpb25zXG4gKiBJZiBjcml0aWNhbCBhY3Rpb24gaXMgcmVuZGVyZWQsIGl0cyBjb25zaWRlcmVkIHRvIGJlIHRoZSBwcmltYXJ5IGFjdGlvbi4gSGVuY2UgdGVtcGxhdGUncyBkZWZhdWx0IHByaW1hcnkgYWN0aW9uIGlzIHNldCBiYWNrIHRvIERlZmF1bHQuXG4gKiBAcGFyYW0gZGF0YUNvbnRleHRQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoIHJlbGF0ZWQgdG8gdGhlIGNvbnRleHRcbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGlmIGJ1dHRvbiB0eXBlIGlzIERlZmF1bHQgb3IgRW1waGFzaXplZFxuICovXG5leHBvcnQgY29uc3QgYnVpbGRFbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YUNvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFNpbmdsZXRvbj5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3QgaWRlbnRpZmljYXRpb24gPSBkYXRhQ29udGV4dFBhdGgudGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5JZGVudGlmaWNhdGlvbjtcblx0Y29uc3QgZGF0YUZpZWxkc1dpdGhDcml0aWNhbGl0eSA9XG5cdFx0aWRlbnRpZmljYXRpb24/LmZpbHRlcigoZGF0YUZpZWxkKSA9PiBkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbiAmJiBkYXRhRmllbGQuQ3JpdGljYWxpdHkpIHx8IFtdO1xuXG5cdGNvbnN0IGRhdGFGaWVsZHNCaW5kaW5nRXhwcmVzc2lvbnMgPSBkYXRhRmllbGRzV2l0aENyaXRpY2FsaXR5Lmxlbmd0aFxuXHRcdD8gZGF0YUZpZWxkc1dpdGhDcml0aWNhbGl0eS5tYXAoKGRhdGFGaWVsZCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjcml0aWNhbGl0eVZpc2libGVCaW5kaW5nRXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuQ3JpdGljYWxpdHkpO1xuXHRcdFx0XHRyZXR1cm4gYW5kKFxuXHRcdFx0XHRcdG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwoY3JpdGljYWxpdHlWaXNpYmxlQmluZGluZ0V4cHJlc3Npb24sIFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpLFxuXHRcdFx0XHRcdFx0ZXF1YWwoY3JpdGljYWxpdHlWaXNpYmxlQmluZGluZ0V4cHJlc3Npb24sIFwiMVwiKSxcblx0XHRcdFx0XHRcdGVxdWFsKGNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCAxKSxcblx0XHRcdFx0XHRcdGVxdWFsKGNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uLCBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSxcblx0XHRcdFx0XHRcdGVxdWFsKGNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uLCBcIjNcIiksXG5cdFx0XHRcdFx0XHRlcXVhbChjcml0aWNhbGl0eVZpc2libGVCaW5kaW5nRXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgMylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0ICB9KVxuXHRcdDogKFtjb25zdGFudChmYWxzZSldIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdKTtcblxuXHQvLyBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmlzaWJsZSBkYXRhRmllbGQgd2l0aCBjcml0aWNhbGl0eSBuZWdhdGl2ZSBvciBwb3NpdGl2ZSwgdGhlIHR5cGUgaXMgc2V0IGFzIEdob3N0XG5cdC8vIGVsc2UgaXQgaXMgZW1waGFzaXplZFxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKG9yKC4uLmRhdGFGaWVsZHNCaW5kaW5nRXhwcmVzc2lvbnMpLCBCdXR0b25UeXBlLkdob3N0LCBCdXR0b25UeXBlLkVtcGhhc2l6ZWQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50QmluZGluZyA9IGZ1bmN0aW9uIChzUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgc05hdmlnYXRpb25QYXRoID0gT0RhdGFNb2RlbEFubm90YXRpb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoc1BhdGgpO1xuXHRpZiAoc05hdmlnYXRpb25QYXRoKSB7XG5cdFx0cmV0dXJuIFwie3BhdGg6J1wiICsgc05hdmlnYXRpb25QYXRoICsgXCInfVwiO1xuXHR9IGVsc2Uge1xuXHRcdC8vbm8gbmF2aWdhdGlvbiBwcm9wZXJ0eSBuZWVkcyBlbXB0eSBvYmplY3Rcblx0XHRyZXR1cm4gXCJ7cGF0aDogJyd9XCI7XG5cdH1cbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2hlY2sgaWYgZHJhZnQgcGF0dGVybiBpcyBzdXBwb3J0ZWQuXG4gKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIGRyYWZ0IHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0RyYWZ0U3RhdGUgPSBmdW5jdGlvbiAoZW50aXR5U2V0OiBFbnRpdHlTZXQpOiBib29sZWFuIHtcblx0aWYgKGVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3Q/LkVkaXRBY3Rpb24pIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGVudGl0eVNldCBpcyBhIGRyYWZ0IHJvb3QgdGhhdCBzdXBwb3J0cyBjb2xsYWJvcmF0aW9uLlxuICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuICogQHJldHVybnMgUmV0dXJucyB0aGUgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiBkcmFmdCBzdGF0ZVxuICovXG5leHBvcnQgY29uc3QgY2hlY2tDb2xsYWJvcmF0aW9uRHJhZnRSb290ID0gZnVuY3Rpb24gKGVudGl0eVNldDogRW50aXR5U2V0KTogYm9vbGVhbiB7XG5cdGlmIChlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290Py5TaGFyZUFjdGlvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgdGhlIHZpc2liaWxpdHkgZm9yIHRoZSBTd2l0Y2hUb0FjdGl2ZSBidXR0b24gaW4gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlLlxuICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB0aGUgZHJhZnQgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFN3aXRjaFRvQWN0aXZlVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdGlmIChjaGVja0RyYWZ0U3RhdGUoZW50aXR5U2V0KSkge1xuXHRcdGlmIChjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChwYXRoSW5Nb2RlbChcIkhhc0FjdGl2ZUVudGl0eVwiKSwgVUkuSXNFZGl0YWJsZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGFuZChlcXVhbChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSwgdHJ1ZSksIFVJLklzRWRpdGFibGUsIG5vdChVSS5Jc0NyZWF0ZU1vZGUpKVxuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBmb3IgdGhlIFN3aXRjaFRvRHJhZnQgYnV0dG9uIGluIHRoZSBvYmplY3QgcGFnZSBvciBzdWJvYmplY3QgcGFnZS5cbiAqIEBwYXJhbSBlbnRpdHlTZXQgVGhlIGN1cnJlbnQgZW50aXR5IHNldC5cbiAqIEByZXR1cm5zIFJldHVybnMgZXhwcmVzc2lvbiBiaW5kaW5nIG9yIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gdGhlIGRyYWZ0IHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTd2l0Y2hUb0RyYWZ0VmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdGlmIChjaGVja0RyYWZ0U3RhdGUoZW50aXR5U2V0KSkge1xuXHRcdGlmIChjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpLCBub3QoVUkuSXNFZGl0YWJsZSkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0ZXF1YWwocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdElzQ3JlYXRlZEJ5TWVcIiksIHRydWUpLFxuXHRcdFx0XHRcdG5vdChVSS5Jc0VkaXRhYmxlKSxcblx0XHRcdFx0XHRub3QoVUkuSXNDcmVhdGVNb2RlKSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgdGhlIHZpc2liaWxpdHkgZm9yIHRoZSBTd2l0Y2hEcmFmdEFuZEFjdGl2ZSBidXR0b24gaW4gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlLlxuICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB0aGUgZHJhZnQgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFN3aXRjaERyYWZ0QW5kQWN0aXZlVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChlbnRpdHlTZXQ6IEVudGl0eVNldCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgYm9vbGVhbiB7XG5cdGlmIChjaGVja0RyYWZ0U3RhdGUoZW50aXR5U2V0KSkge1xuXHRcdGlmIChjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QoZW50aXR5U2V0KSkge1xuXHRcdFx0Ly8gc29tZWhvdyBjaGVja2luZyBoYXNEcmFmdEVudGl0eSBhbmQgaGFzQWN0aXZlRW50aXR5IGRvZXMgbm90IHdvcmssIHNvIHdlIGNoZWNrIElzQWN0aXZlRW50aXR5IGZpcnN0XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKHBhdGhJbk1vZGVsKFwiSXNBY3RpdmVFbnRpdHlcIiksIHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIiksIHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZXF1YWwocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdElzQ3JlYXRlZEJ5TWVcIiksIHRydWUpLCBub3QoVUkuSXNDcmVhdGVNb2RlKSkpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZmluZCBhbiBhY3Rpb24gZnJvbSB0aGUgYXJyYXkgb2YgaGVhZGVyIGFjdGlvbnMgaW4gdGhlIGNvbnZlcnRlciBjb250ZXh0LlxuICogQHBhcmFtIGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucyBBcnJheSBvZiAnaGVhZGVyJyBhY3Rpb25zIG9uIHRoZSBvYmplY3QgcGFnZS5cbiAqIEBwYXJhbSBzQWN0aW9uVHlwZSBUaGUgYWN0aW9uIHR5cGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gd2l0aCB0aGUgbWF0Y2hpbmcgYWN0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IGNvbnN0IF9maW5kQWN0aW9uID0gZnVuY3Rpb24gKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdLCBzQWN0aW9uVHlwZTogc3RyaW5nKTogQmFzZUFjdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGxldCBvQWN0aW9uOiBCYXNlQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRpZiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zICYmIGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucy5sZW5ndGgpIHtcblx0XHRvQWN0aW9uID0gYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLmZpbmQoZnVuY3Rpb24gKG9IZWFkZXJBY3Rpb246IEJhc2VBY3Rpb24pIHtcblx0XHRcdHJldHVybiBvSGVhZGVyQWN0aW9uLnR5cGUgPT09IHNBY3Rpb25UeXBlO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBvQWN0aW9uO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBmb3JtYXQgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBmb3IgdGhlIERlbGV0ZSBidXR0b24gb24gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlIGluIGNhc2Ugb2YgYSBDb21tYW5kIEV4ZWN1dGlvbi5cbiAqIEBwYXJhbSBhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMgQXJyYXkgb2YgaGVhZGVyIGFjdGlvbnMgb24gdGhlIG9iamVjdCBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbnZlcnRlciBvdXRwdXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERlbGV0ZUNvbW1hbmRFeGVjdXRpb25FbmFibGVkID0gZnVuY3Rpb24gKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgb0RlbGV0ZUFjdGlvbiA9IF9maW5kQWN0aW9uKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucywgXCJTZWNvbmRhcnlcIik7XG5cdHJldHVybiBvRGVsZXRlQWN0aW9uID8gb0RlbGV0ZUFjdGlvbi5lbmFibGVkIDogXCJmYWxzZVwiO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBmb3JtYXQgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBmb3IgdGhlIERlbGV0ZSBidXR0b24gb24gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlIGluIGNhc2Ugb2YgYSBDb21tYW5kIEV4ZWN1dGlvbi5cbiAqIEBwYXJhbSBhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMgQXJyYXkgb2YgaGVhZGVyIGFjdGlvbnMgb24gdGhlIG9iamVjdCBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbnZlcnRlciBvdXRwdXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERlbGV0ZUNvbW1hbmRFeGVjdXRpb25WaXNpYmxlID0gZnVuY3Rpb24gKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgb0RlbGV0ZUFjdGlvbiA9IF9maW5kQWN0aW9uKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucywgXCJTZWNvbmRhcnlcIik7XG5cdHJldHVybiBvRGVsZXRlQWN0aW9uID8gb0RlbGV0ZUFjdGlvbi52aXNpYmxlIDogXCJmYWxzZVwiO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBmb3JtYXQgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBmb3IgdGhlIEVkaXQgYnV0dG9uIG9uIHRoZSBvYmplY3QgcGFnZSBvciBzdWJvYmplY3QgcGFnZSBpbiBjYXNlIG9mIGEgQ29tbWFuZCBFeGVjdXRpb24uXG4gKiBAcGFyYW0gYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zIEFycmF5IG9mIGhlYWRlciBhY3Rpb25zIG9uIHRoZSBvYmplY3QgcGFnZVxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBmcm9tIHRoZSBjb252ZXJ0ZXIgb3V0cHV0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0Q29tbWFuZEV4ZWN1dGlvblZpc2libGUgPSBmdW5jdGlvbiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvRWRpdEFjdGlvbiA9IF9maW5kQWN0aW9uKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucywgXCJQcmltYXJ5XCIpO1xuXHRyZXR1cm4gb0VkaXRBY3Rpb24gPyBvRWRpdEFjdGlvbi52aXNpYmxlIDogXCJmYWxzZVwiO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBmb3JtYXQgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBmb3IgdGhlIEVkaXQgYnV0dG9uIG9uIHRoZSBvYmplY3QgcGFnZSBvciBzdWJvYmplY3QgcGFnZSBpbiBjYXNlIG9mIGEgQ29tbWFuZCBFeGVjdXRpb24uXG4gKiBAcGFyYW0gYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zIEFycmF5IG9mIGhlYWRlciBhY3Rpb25zIG9uIHRoZSBvYmplY3QgcGFnZVxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBmcm9tIHRoZSBjb252ZXJ0ZXIgb3V0cHV0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0Q29tbWFuZEV4ZWN1dGlvbkVuYWJsZWQgPSBmdW5jdGlvbiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvRWRpdEFjdGlvbiA9IF9maW5kQWN0aW9uKGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucywgXCJQcmltYXJ5XCIpO1xuXHRyZXR1cm4gb0VkaXRBY3Rpb24gPyBvRWRpdEFjdGlvbi5lbmFibGVkIDogXCJmYWxzZVwiO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgdGhlIEVkaXRBY3Rpb24gZnJvbSB0aGUgYmFzZWQgb24gYSBkcmFmdC1lbmFibGVkIGFwcGxpY2F0aW9uIG9yIGEgc3RpY2t5IGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIFtvRW50aXR5U2V0XSBUaGUgdmFsdWUgZnJvbSB0aGUgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIFJldHVybnMgZXhwcmVzc2lvbiBiaW5kaW5nIG9yIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gdlJhd1ZhbHVlICYgb0RyYWZ0Tm9kZVxuICovXG5leHBvcnQgY29uc3QgZ2V0RWRpdEFjdGlvbiA9IGZ1bmN0aW9uIChvRW50aXR5U2V0OiBDb250ZXh0KTogc3RyaW5nIHtcblx0Y29uc3Qgc1BhdGggPSBvRW50aXR5U2V0LmdldFBhdGgoKTtcblx0Y29uc3QgYVBhdGhzID0gc1BhdGguc3BsaXQoXCIvXCIpO1xuXHRjb25zdCByb290RW50aXR5U2V0UGF0aCA9IFwiL1wiICsgYVBhdGhzWzFdO1xuXHQvLyBnZXQgdGhlIGVkaXQgYWN0aW9uIGZyb20gcm9vdCBlbnRpdHkgc2V0c1xuXHRjb25zdCByb290RW50aXR5U2V0QW5ubm90YXRpb25zID0gb0VudGl0eVNldC5nZXRPYmplY3Qocm9vdEVudGl0eVNldFBhdGggKyBcIkBcIik7XG5cdGNvbnN0IGJEcmFmdFJvb3QgPSByb290RW50aXR5U2V0QW5ubm90YXRpb25zLmhhc093blByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RcIik7XG5cdGNvbnN0IGJEcmFmdE5vZGUgPSByb290RW50aXR5U2V0QW5ubm90YXRpb25zLmhhc093blByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVcIik7XG5cdGNvbnN0IGJTdGlja3lTZXNzaW9uID0gcm9vdEVudGl0eVNldEFubm5vdGF0aW9ucy5oYXNPd25Qcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRcIik7XG5cdGxldCBzQWN0aW9uTmFtZTtcblx0aWYgKGJEcmFmdFJvb3QpIHtcblx0XHRzQWN0aW9uTmFtZSA9IG9FbnRpdHlTZXQuZ2V0T2JqZWN0KGAke3Jvb3RFbnRpdHlTZXRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L0VkaXRBY3Rpb25gKTtcblx0fSBlbHNlIGlmIChiRHJhZnROb2RlKSB7XG5cdFx0c0FjdGlvbk5hbWUgPSBvRW50aXR5U2V0LmdldE9iamVjdChgJHtyb290RW50aXR5U2V0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZS9FZGl0QWN0aW9uYCk7XG5cdH0gZWxzZSBpZiAoYlN0aWNreVNlc3Npb24pIHtcblx0XHRzQWN0aW9uTmFtZSA9IG9FbnRpdHlTZXQuZ2V0T2JqZWN0KGAke3Jvb3RFbnRpdHlTZXRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvRWRpdEFjdGlvbmApO1xuXHR9XG5cdHJldHVybiAhc0FjdGlvbk5hbWUgPyBzQWN0aW9uTmFtZSA6IGAke3Jvb3RFbnRpdHlTZXRQYXRofS8ke3NBY3Rpb25OYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZWFkT25seUZyb21TdGF0aWNBbm5vdGF0aW9ucyA9IGZ1bmN0aW9uIChvQW5ub3RhdGlvbnM/OiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLCBvRmllbGRDb250cm9sPzogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGxldCBiQ29tcHV0ZWQsIGJJbW11dGFibGUsIGJSZWFkT25seTtcblxuXHRpZiAob0Fubm90YXRpb25zICYmIG9Bbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSkge1xuXHRcdGJDb21wdXRlZCA9IChvQW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRcIl0gYXMgeyBCb29sPzogc3RyaW5nIH0pLkJvb2xcblx0XHRcdD8gKG9Bbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSBhcyB7IEJvb2w/OiBzdHJpbmcgfSkuQm9vbCA9PSBcInRydWVcIlxuXHRcdFx0OiB0cnVlO1xuXHR9XG5cdGlmIChvQW5ub3RhdGlvbnMgJiYgb0Fubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSkge1xuXHRcdGJJbW11dGFibGUgPSAob0Fubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSBhcyB7IEJvb2w/OiBzdHJpbmcgfSkuQm9vbFxuXHRcdFx0PyAob0Fubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSBhcyB7IEJvb2w/OiBzdHJpbmcgfSkuQm9vbCA9PSBcInRydWVcIlxuXHRcdFx0OiB0cnVlO1xuXHR9XG5cdGJSZWFkT25seSA9IGJDb21wdXRlZCB8fCBiSW1tdXRhYmxlO1xuXG5cdGlmIChvRmllbGRDb250cm9sKSB7XG5cdFx0YlJlYWRPbmx5ID0gYlJlYWRPbmx5IHx8IG9GaWVsZENvbnRyb2wgPT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sVHlwZS9SZWFkT25seVwiO1xuXHR9XG5cdGlmIChiUmVhZE9ubHkpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCByZWFkT25seUV4cHJlc3Npb25Gcm9tRHluYW1pY0Fubm90YXRpb25zID0gZnVuY3Rpb24gKG9GaWVsZENvbnRyb2w/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgc0lzRmllbGRDb250cm9sUGF0aFJlYWRPbmx5O1xuXHRpZiAob0ZpZWxkQ29udHJvbCkge1xuXHRcdGlmIChiaW5kaW5nUGFyc2VyKG9GaWVsZENvbnRyb2wpKSB7XG5cdFx0XHRzSXNGaWVsZENvbnRyb2xQYXRoUmVhZE9ubHkgPSBcIiVcIiArIG9GaWVsZENvbnRyb2wgKyBcIiA9PT0gMSBcIjtcblx0XHR9XG5cdH1cblx0aWYgKHNJc0ZpZWxkQ29udHJvbFBhdGhSZWFkT25seSkge1xuXHRcdHJldHVybiBcIns9IFwiICsgc0lzRmllbGRDb250cm9sUGF0aFJlYWRPbmx5ICsgXCI/IGZhbHNlIDogdHJ1ZSB9XCI7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufTtcblxuLypcbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgZXhwcmVzc2lvbiBmb3IgY2hhcnQgVGl0bGUgUHJlc3NcbiAqXG4gKiBAZnVuY3Rpb253XG4gKiBAcGFyYW0ge29Db25maWd1cmF0aW9ufSBbb0NvbmZpZ3VyYXRpb25zXSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZnJvbSBtYW5pZmVzdFxuICogIEBwYXJhbSB7b01hbmlmZXN0fSBbb01hbmlmZXN0XSBPdXRib3VuZHMgZnJvbSBtYW5pZmVzdFxuICogcmV0dXJucyB7U3RyaW5nfSBbc0NvbGxlY3Rpb25OYW1lXSBDb2xsZWN0aW9uIE5hbWUgb2YgdGhlIE1pY3JvIENoYXJ0XG4gKlxuICogcmV0dXJucyB7U3RyaW5nfSBbRXhwcmVzc2lvbl0gSGFuZGxlciBFeHByZXNzaW9uIGZvciB0aGUgdGl0bGUgcHJlc3NcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHByZXNzaW9uRm9yTWljcm9DaGFydFRpdGxlUHJlc3MgPSBmdW5jdGlvbiAoXG5cdG9Db25maWd1cmF0aW9uOiBDb250cm9sQ29uZmlndXJhdGlvbixcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGg6IHN0cmluZyxcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGhEYXRNb2RlbE9iamVjdDogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRvTWFuaWZlc3RPdXRib3VuZDogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RPdXRib3VuZEVudHJ5Pixcblx0c0NvbGxlY3Rpb25OYW1lOiBzdHJpbmdcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHRhcmdldEFubm90YXRpb25QYXRoID0gZ2V0TWljcm9DaGFydENvbnRyb2xDb25maWd1cmF0aW9uUGF0aCh0YXJnZXRBbm5vdGF0aW9uUGF0aCwgdGFyZ2V0QW5ub3RhdGlvblBhdGhEYXRNb2RlbE9iamVjdCwgc0NvbGxlY3Rpb25OYW1lKTtcblx0Y29uc3QgbmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24gPSAob0NvbmZpZ3VyYXRpb24/Llt0YXJnZXRBbm5vdGF0aW9uUGF0aF0gYXMgTWljcm9DaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbik/LltcIm5hdmlnYXRpb25cIl07XG5cdGlmIChuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbikge1xuXHRcdGlmIChcblx0XHRcdChuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbltcInRhcmdldE91dGJvdW5kXCJdICYmIG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl1bXCJvdXRib3VuZFwiXSkgfHxcblx0XHRcdChuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbltcInRhcmdldE91dGJvdW5kXCJdICYmXG5cdFx0XHRcdG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl1bXCJvdXRib3VuZFwiXSAmJlxuXHRcdFx0XHRuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbltcInRhcmdldFNlY3Rpb25zXCJdKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XCIuaGFuZGxlcnMub25EYXRhUG9pbnRUaXRsZVByZXNzZWQoJGNvbnRyb2xsZXIsICR7JHNvdXJjZT4vfSwnXCIgK1xuXHRcdFx0XHRKU09OLnN0cmluZ2lmeShvTWFuaWZlc3RPdXRib3VuZCkgK1xuXHRcdFx0XHRcIicsJ1wiICtcblx0XHRcdFx0bmF2aWdhdGlvbkNvbmZpZ3VyYXRpb25bXCJ0YXJnZXRPdXRib3VuZFwiXVtcIm91dGJvdW5kXCJdICtcblx0XHRcdFx0XCInLCdcIiArXG5cdFx0XHRcdHNDb2xsZWN0aW9uTmFtZSArXG5cdFx0XHRcdFwiJyApXCJcblx0XHRcdCk7XG5cdFx0fSBlbHNlIGlmIChuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbltcInRhcmdldFNlY3Rpb25zXCJdKSB7XG5cdFx0XHRyZXR1cm4gXCIuaGFuZGxlcnMubmF2aWdhdGVUb1N1YlNlY3Rpb24oJGNvbnRyb2xsZXIsICdcIiArIEpTT04uc3RyaW5naWZ5KG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0U2VjdGlvbnNcIl0pICsgXCInKVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxufTtcblxuLypcbiAqIEZ1bmN0aW9uIHRvIHJlbmRlciBDaGFydCBUaXRsZSBhcyBMaW5rXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge29Db250cm9sQ29uZmlndXJhdGlvbn0gW29Db25maWd1cmF0aW9uc10gY29udHJvbCBjb25maWd1cmF0aW9uIGZyb20gbWFuaWZlc3RcbiAqIHJldHVybnMge1N0cmluZ30gW3NLZXldIEZvciB0aGUgVGFyZ2V0T3V0Ym91bmQgYW5kIFRhcmdldFNlY3Rpb25cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaWNyb0NoYXJ0VGl0bGVBc0xpbmsgPSBmdW5jdGlvbiAoXG5cdG9Db250cm9sQ29uZmlndXJhdGlvbjogQ29udHJvbENvbmZpZ3VyYXRpb24sXG5cdHRhcmdldEFubm90YXRpb25QYXRoOiBzdHJpbmcsXG5cdHRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3Q6IERhdGFNb2RlbE9iamVjdFBhdGg8Q2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50Pixcblx0Y29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuKTogc3RyaW5nIHtcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGggPSBnZXRNaWNyb0NoYXJ0Q29udHJvbENvbmZpZ3VyYXRpb25QYXRoKHRhcmdldEFubm90YXRpb25QYXRoLCB0YXJnZXRBbm5vdGF0aW9uUGF0aERhdE1vZGVsT2JqZWN0LCBjb2xsZWN0aW9uTmFtZSk7XG5cdGNvbnN0IHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uID0gKG9Db250cm9sQ29uZmlndXJhdGlvbj8uW3RhcmdldEFubm90YXRpb25QYXRoXSBhcyBNaWNyb0NoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uKT8uW1wibmF2aWdhdGlvblwiXTtcblx0aWYgKFxuXHRcdHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uICYmXG5cdFx0KHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl0gfHxcblx0XHRcdCh0YXJnZXRDb250cm9sQ29uZmlndXJhdGlvbltcInRhcmdldE91dGJvdW5kXCJdICYmIHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uW1widGFyZ2V0U2VjdGlvbnNcIl0pKVxuXHQpIHtcblx0XHRyZXR1cm4gXCJFeHRlcm5hbFwiO1xuXHR9IGVsc2UgaWYgKHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uICYmIHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uW1widGFyZ2V0U2VjdGlvbnNcIl0pIHtcblx0XHRyZXR1cm4gXCJJblBhZ2VcIjtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJOb25lXCI7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaWNyb0NoYXJ0Q29udHJvbENvbmZpZ3VyYXRpb25QYXRoID0gZnVuY3Rpb24gKFxuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aDogc3RyaW5nLFxuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aERhdE1vZGVsT2JqZWN0OiBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdGNvbGxlY3Rpb25OYW1lOiBzdHJpbmdcbik6IHN0cmluZyB7XG5cdGlmICh0YXJnZXRBbm5vdGF0aW9uUGF0aERhdE1vZGVsT2JqZWN0Py50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRUeXBlXCIpIHtcblx0XHR0YXJnZXRBbm5vdGF0aW9uUGF0aCA9IHRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3QudGFyZ2V0T2JqZWN0Py5WaXN1YWxpemF0aW9uc1swXT8udmFsdWU7XG5cdFx0dGFyZ2V0QW5ub3RhdGlvblBhdGggPSBjb2xsZWN0aW9uTmFtZSA/IGAke2NvbGxlY3Rpb25OYW1lfS8ke3RhcmdldEFubm90YXRpb25QYXRofWAgOiB0YXJnZXRBbm5vdGF0aW9uUGF0aDtcblx0fVxuXHRyZXR1cm4gdGFyZ2V0QW5ub3RhdGlvblBhdGg7XG59O1xuXG4vKiBHZXQgZ3JvdXBJZCBmcm9tIGNvbnRyb2wgY29uZmlndXJhdGlvblxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IFtvQ29uZmlndXJhdGlvbnNdIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmcm9tIG1hbmlmZXN0XG4gKiBAcGFyYW0ge1N0cmluZ30gW3NBbm5vdGF0aW9uUGF0aF0gQW5ub3RhdGlvbiBQYXRoIGZvciB0aGUgY29uZmlndXJhdGlvblxuICogQGRlc2NyaXB0aW9uIFVzZWQgdG8gZ2V0IHRoZSBncm91cElkIGZvciBEYXRhUG9pbnRzIGFuZCBNaWNyb0NoYXJ0cyBpbiB0aGUgSGVhZGVyLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEdyb3VwSWRGcm9tQ29uZmlnID0gZnVuY3Rpb24gKFxuXHRvQ29uZmlndXJhdGlvbnM6IENvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRzQW5ub3RhdGlvblBhdGg6IHN0cmluZyxcblx0c0RlZmF1bHRHcm91cElkPzogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvQ29uZmlndXJhdGlvbiA9IG9Db25maWd1cmF0aW9uc1tzQW5ub3RhdGlvblBhdGhdIGFzIE1pY3JvQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdFx0YUF1dG9QYXR0ZXJucyA9IFtcIkhlcm9lc1wiLCBcIkRlY29yYXRpb25cIiwgXCJXb3JrZXJzXCIsIFwiTG9uZ1J1bm5lcnNcIl07XG5cdGxldCBzR3JvdXBJZCA9IHNEZWZhdWx0R3JvdXBJZDtcblx0aWYgKFxuXHRcdG9Db25maWd1cmF0aW9uICYmXG5cdFx0b0NvbmZpZ3VyYXRpb24ucmVxdWVzdEdyb3VwSWQgJiZcblx0XHRhQXV0b1BhdHRlcm5zLnNvbWUoZnVuY3Rpb24gKGF1dG9QYXR0ZXJuOiBzdHJpbmcpIHtcblx0XHRcdHJldHVybiBhdXRvUGF0dGVybiA9PT0gb0NvbmZpZ3VyYXRpb24ucmVxdWVzdEdyb3VwSWQ7XG5cdFx0fSlcblx0KSB7XG5cdFx0c0dyb3VwSWQgPSBcIiRhdXRvLlwiICsgb0NvbmZpZ3VyYXRpb24ucmVxdWVzdEdyb3VwSWQ7XG5cdH1cblx0cmV0dXJuIHNHcm91cElkO1xufTtcblxuLyoqXG4gKiBHZXRzIGdyb3VwSWQgZnJvbSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIG1pY3JvIGNoYXJ0LlxuICogQHBhcmFtIG9Db250cm9sQ29uZmlndXJhdGlvbiBDb250cm9sIGNvbmZpZ3VyYXRpb24gZnJvbSBtYW5pZmVzdFxuICogQHBhcmFtIHRhcmdldEFubm90YXRpb25QYXRoIEFubm90YXRpb24gcGF0aCBmb3IgdGhlIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSB0YXJnZXRBbm5vdGF0aW9uUGF0aERhdGFNb2RlbE9iamVjdCBEYXRhTW9kZWxPYmplY3Qgb2YgQ2hhcnQgb3IgUHJlc2VudGF0aW9uVmFyaWFudFxuICogQHBhcmFtIGNvbGxlY3Rpb25OYW1lIENvbGxlY3Rpb24gTmFtZVxuICogQHBhcmFtIHNEZWZhdWx0R3JvdXBJZCBEZWZhdWx0IEdyb3VwSWRcbiAqIEByZXR1cm5zIEdyb3VwSWQgZm9yIG1pY3JvIGNoYXJ0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHcm91cElkRnJvbUNvbmZpZ0Zvck1pY3JvQ2hhcnQgPSBmdW5jdGlvbiAoXG5cdG9Db250cm9sQ29uZmlndXJhdGlvbjogQ29udHJvbENvbmZpZ3VyYXRpb24sXG5cdHRhcmdldEFubm90YXRpb25QYXRoOiBzdHJpbmcsXG5cdHRhcmdldEFubm90YXRpb25QYXRoRGF0YU1vZGVsT2JqZWN0OiBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsXG5cdHNEZWZhdWx0R3JvdXBJZD86IHN0cmluZ1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGggPSBnZXRNaWNyb0NoYXJ0Q29udHJvbENvbmZpZ3VyYXRpb25QYXRoKHRhcmdldEFubm90YXRpb25QYXRoLCB0YXJnZXRBbm5vdGF0aW9uUGF0aERhdGFNb2RlbE9iamVjdCwgY29sbGVjdGlvbk5hbWUpO1xuXHRyZXR1cm4gZ2V0R3JvdXBJZEZyb21Db25maWcob0NvbnRyb2xDb25maWd1cmF0aW9uLCB0YXJnZXRBbm5vdGF0aW9uUGF0aCwgc0RlZmF1bHRHcm91cElkKTtcbn07XG5cbi8qXG4gKiBHZXQgQ29udGV4dCBCaW5kaW5nIHdpdGggZ3JvdXBJZCBmcm9tIGNvbnRyb2wgY29uZmlndXJhdGlvblxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IFtvQ29uZmlndXJhdGlvbnNdIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmcm9tIG1hbmlmZXN0XG4gKiBAcGFyYW0ge1N0cmluZ30gW3NLZXldIEFubm90YXRpb24gUGF0aCBmb3Igb2YgdGhlIGNvbmZpZ3VyYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBVc2VkIHRvIGdldCB0aGUgYmluZGluZyBmb3IgRGF0YVBvaW50cyBpbiB0aGUgSGVhZGVyLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoR3JvdXBJZEZyb21Db25maWcgPSBmdW5jdGlvbiAob0NvbmZpZ3VyYXRpb25zOiBDb250cm9sQ29uZmlndXJhdGlvbiwgc0tleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgc0dyb3VwSWQgPSBnZXRHcm91cElkRnJvbUNvbmZpZyhvQ29uZmlndXJhdGlvbnMsIHNLZXkpO1xuXHRsZXQgc0JpbmRpbmc7XG5cdGlmIChzR3JvdXBJZCkge1xuXHRcdHNCaW5kaW5nID0gXCJ7IHBhdGggOiAnJywgcGFyYW1ldGVycyA6IHsgJCRncm91cElkIDogJ1wiICsgc0dyb3VwSWQgKyBcIicgfSB9XCI7XG5cdH1cblx0cmV0dXJuIHNCaW5kaW5nO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIERhdGFNb2RlbE9iamVjdFBhdGggb2YgdGhlIG5hdmlnYXRpb25QYXRoXG4gKiBAcmV0dXJucyBUaGUgQmluZGluZyBleHByZXNzaW9uIGluY2x1ZGluZyBwYXRoIGFuZCAkc2VsZWN0IHF1ZXJ5IGFzIHBhcmFtZXRlciBkZXBlbmRpbmcgb24gdGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUJpbmRpbmdGb3JBbHRlcm5hdGVBbmRTZWNvbmRhcnlLZXlzID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RmFjZXQ+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IGJpbmRpbmc6IFBhcnRpYWw8UGF0aEluTW9kZWxFeHByZXNzaW9uPHVuZGVmaW5lZD4+IHwgdW5kZWZpbmVkO1xuXHRjb25zdCBhbHRlcm5hdGVBbmRTZWNvbmRhcnlLZXlzID0gTW9kZWxIZWxwZXIuZ2V0QWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyhcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlLFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXRcblx0KTtcblxuXHRpZiAoYWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cz8ubGVuZ3RoKSB7XG5cdFx0YmluZGluZyA9IHtcblx0XHRcdHBhdGg6IFwiXCJcblx0XHR9O1xuXHRcdGJpbmRpbmcucGFyYW1ldGVycyA9IHsgJHNlbGVjdDogYWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cy5qb2luKFwiLFwiKSB8fCBcIlwiIH07XG5cdH1cblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KGJpbmRpbmcpO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBhIEZpZWxkR3JvdXAgY29uc2lzdHMgb2Ygb25seSAxIERhdGFGaWVsZCB3aXRoIE11bHRpTGluZSBUZXh0IGFubm90YXRpb24uXG4gKiBAcGFyYW0gYUZvcm1FbGVtZW50cyBBIGNvbGxlY3Rpb24gb2YgZm9ybSBlbGVtZW50cyB1c2VkIGluIHRoZSBjdXJyZW50IGZpZWxkIGdyb3VwXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgb25seSAxIGRhdGEgZmllbGQgd2l0aCBNdWx0aWxpbmUgVGV4dCBhbm5vdGF0aW9uIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGRvZXNGaWVsZEdyb3VwQ29udGFpbk9ubHlPbmVNdWx0aUxpbmVEYXRhRmllbGQgPSBmdW5jdGlvbiAoYUZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10pOiBib29sZWFuIHtcblx0cmV0dXJuIGFGb3JtRWxlbWVudHMgJiYgYUZvcm1FbGVtZW50cy5sZW5ndGggPT09IDEgJiYgISFhRm9ybUVsZW1lbnRzWzBdLmlzVmFsdWVNdWx0aWxpbmVUZXh0O1xufTtcblxuLypcbiAqIEdldCB2aXNpYmxpdHkgb2YgYnJlYWRjcnVtYnMuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gW29WaWV3RGF0YV0gVmlld0RhdGEgbW9kZWxcbiAqIHJldHVybnMgeyp9IEV4cHJlc3Npb24gb3IgQm9vbGVhbiB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZUV4cHJlc3Npb25Gb3JCcmVhZGNydW1icyA9IGZ1bmN0aW9uIChvVmlld0RhdGE6IFZpZXdEYXRhKTogc3RyaW5nIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBvVmlld0RhdGEuc2hvd0JyZWFkQ3J1bWJzICYmIG9WaWV3RGF0YS5mY2xFbmFibGVkICE9PSB1bmRlZmluZWQgPyBcIntmY2xoZWxwZXI+L2JyZWFkQ3J1bWJJc1Zpc2libGV9XCIgOiBvVmlld0RhdGEuc2hvd0JyZWFkQ3J1bWJzO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHZpZXdEYXRhIFNwZWNpZmllcyB0aGUgVmlld0RhdGEgbW9kZWxcbiAqIEByZXR1cm5zIEV4cHJlc3Npb24gb3IgQm9vbGVhbiB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZ2V0U2hhcmVCdXR0b25WaXNpYmlsaXR5ID0gZnVuY3Rpb24gKHZpZXdEYXRhOiBWaWV3RGF0YSk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0aWYgKHZpZXdEYXRhLmlzU2hhcmVCdXR0b25WaXNpYmxlRm9yTXlJbmJveCA9PT0gZmFsc2UpIHtcblx0XHRyZXR1cm4gXCJmYWxzZVwiO1xuXHR9XG5cdGNvbnN0IHNoYXJlQnV0dG9uVmlzaWJpbGl0eUV4cCA9IHZpZXdEYXRhLmZjbEVuYWJsZWRcblx0XHQ/IGFuZChwYXRoSW5Nb2RlbChcIi9zaG93U2hhcmVJY29uXCIsIFwiZmNsaGVscGVyXCIpLCBub3QoVUkuSXNDcmVhdGVNb2RlKSlcblx0XHQ6IG5vdChVSS5Jc0NyZWF0ZU1vZGUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc2hhcmVCdXR0b25WaXNpYmlsaXR5RXhwKTtcbn07XG5cbi8qXG4gKiBHZXRzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgaW5mbyBpbiBlZGl0IG1vZGVcbiAqXG4gKiBJZiBlaXRoZXIgdGhlIHRpdGxlIG9yIGRlc2NyaXB0aW9uIGZpZWxkIGZyb20gdGhlIGhlYWRlciBhbm5vdGF0aW9ucyBhcmUgZWRpdGFibGUsIHRoZW4gdGhlXG4gKiBlZGl0YWJsZSBoZWFkZXIgaW5mbyBpcyB2aXNpYmxlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtvYmplY3R9IFtvQW5ub3RhdGlvbnNdIEFubm90YXRpb25zIG9iamVjdCBmb3IgZ2l2ZW4gZW50aXR5IHNldFxuICogQHBhcmFtIHtvYmplY3R9IFtvRmllbGRDb250cm9sXSBmaWVsZCBjb250cm9sXG4gKiByZXR1cm5zIHsqfSAgYmluZGluZyBleHByZXNzaW9uIG9yIGJvb2xlYW4gdmFsdWUgcmVzb2x2ZWQgZm9ybSBmdW5jaXRvbnMgaXNSZWFkT25seUZyb21TdGF0aWNBbm5vdGF0aW9ucyBhbmQgaXNSZWFkT25seUZyb21EeW5hbWljQW5ub3RhdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFZpc2libGl0eU9mSGVhZGVySW5mbyA9IGZ1bmN0aW9uIChcblx0b1RpdGxlQW5ub3RhdGlvbnM6IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMsXG5cdG9EZXNjcmlwdGlvbkFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRvRmllbGRUaXRsZUZpZWxkQ29udHJvbD86IHN0cmluZyxcblx0b0ZpZWxkRGVzY3JpcHRpb25GaWVsZENvbnRyb2w/OiBzdHJpbmdcbik6IGJvb2xlYW4gfCBzdHJpbmcge1xuXHQvLyBDaGVjayBBbm5vdGF0aW9ucyBmb3IgVGl0bGUgRmllbGRcblx0Ly8gU2V0IHRvIHRydWUgYW5kIGRvbid0IHRha2UgaW50byBhY2NvdW50LCBpZiB0aGVyZSBhcmUgbm8gYW5ub3RhdGlvbnMsIGkuZS4gbm8gdGl0bGUgZXhpc3RzXG5cdGNvbnN0IGJJc1RpdGxlUmVhZE9ubHkgPSBvVGl0bGVBbm5vdGF0aW9ucyA/IGlzUmVhZE9ubHlGcm9tU3RhdGljQW5ub3RhdGlvbnMob1RpdGxlQW5ub3RhdGlvbnMsIG9GaWVsZFRpdGxlRmllbGRDb250cm9sKSA6IHRydWU7XG5cdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IHJlYWRPbmx5RXhwcmVzc2lvbkZyb21EeW5hbWljQW5ub3RhdGlvbnMob0ZpZWxkVGl0bGVGaWVsZENvbnRyb2wpO1xuXHQvLyBUaGVyZSBpcyBubyBleHByZXNzaW9uIGFuZCB0aGUgdGl0bGUgaXMgbm90IHJlYWR5IG9ubHksIHRoaXMgaXMgc3VmZmljaWVudCBmb3IgYW4gZWRpdGFibGUgaGVhZGVyXG5cdGlmICghYklzVGl0bGVSZWFkT25seSAmJiAhdGl0bGVFeHByZXNzaW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBDaGVjayBBbm5vdGF0aW9ucyBmb3IgRGVzY3JpcHRpb24gRmllbGRcblx0Ly8gU2V0IHRvIHRydWUgYW5kIGRvbid0IHRha2UgaW50byBhY2NvdW50LCBpZiB0aGVyZSBhcmUgbm8gYW5ub3RhdGlvbnMsIGkuZS4gbm8gZGVzY3JpcHRpb24gZXhpc3RzXG5cdGNvbnN0IGJJc0Rlc2NyaXB0aW9uUmVhZE9ubHkgPSBvRGVzY3JpcHRpb25Bbm5vdGF0aW9uc1xuXHRcdD8gaXNSZWFkT25seUZyb21TdGF0aWNBbm5vdGF0aW9ucyhvRGVzY3JpcHRpb25Bbm5vdGF0aW9ucywgb0ZpZWxkRGVzY3JpcHRpb25GaWVsZENvbnRyb2wpXG5cdFx0OiB0cnVlO1xuXHRjb25zdCBkZXNjcmlwdGlvbkV4cHJlc3Npb24gPSByZWFkT25seUV4cHJlc3Npb25Gcm9tRHluYW1pY0Fubm90YXRpb25zKG9GaWVsZERlc2NyaXB0aW9uRmllbGRDb250cm9sKTtcblx0Ly8gVGhlcmUgaXMgbm8gZXhwcmVzc2lvbiBhbmQgdGhlIGRlc2NyaXB0aW9uIGlzIG5vdCByZWFkeSBvbmx5LCB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yIGFuIGVkaXRhYmxlIGhlYWRlclxuXHRpZiAoIWJJc0Rlc2NyaXB0aW9uUmVhZE9ubHkgJiYgIWRlc2NyaXB0aW9uRXhwcmVzc2lvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gQm90aCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gYXJlIG5vdCBlZGl0YWJsZSBhbmQgdGhlcmUgYXJlIG5vIGR5bmFtaWMgYW5ub3RhdGlvbnNcblx0aWYgKGJJc1RpdGxlUmVhZE9ubHkgJiYgYklzRGVzY3JpcHRpb25SZWFkT25seSAmJiAhdGl0bGVFeHByZXNzaW9uICYmICFkZXNjcmlwdGlvbkV4cHJlc3Npb24pIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBOb3cgY29tYmluZSBleHByZXNzaW9uc1xuXHRpZiAodGl0bGVFeHByZXNzaW9uICYmICFkZXNjcmlwdGlvbkV4cHJlc3Npb24pIHtcblx0XHRyZXR1cm4gdGl0bGVFeHByZXNzaW9uO1xuXHR9IGVsc2UgaWYgKCF0aXRsZUV4cHJlc3Npb24gJiYgZGVzY3JpcHRpb25FeHByZXNzaW9uKSB7XG5cdFx0cmV0dXJuIGRlc2NyaXB0aW9uRXhwcmVzc2lvbjtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gY29tYmluZVRpdGxlQW5kRGVzY3JpcHRpb25FeHByZXNzaW9uKG9GaWVsZFRpdGxlRmllbGRDb250cm9sLCBvRmllbGREZXNjcmlwdGlvbkZpZWxkQ29udHJvbCk7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lVGl0bGVBbmREZXNjcmlwdGlvbkV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RpdGxlRmllbGRDb250cm9sPzogc3RyaW5nLCBvRGVzY3JpcHRpb25GaWVsZENvbnRyb2w/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyBJZiBib3RoIGhlYWRlciBhbmQgdGl0bGUgZmllbGQgYXJlIGJhc2VkIG9uIGR5bm1haWMgZmllbGQgY29udHJvbCwgdGhlIGVkaXRhYmxlIGhlYWRlclxuXHQvLyBpcyB2aXNpYmxlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBpcyBub3QgcmVhZHkgb25seVxuXHRyZXR1cm4gXCJ7PSAlXCIgKyBvVGl0bGVGaWVsZENvbnRyb2wgKyBcIiA9PT0gMSA/ICggJVwiICsgb0Rlc2NyaXB0aW9uRmllbGRDb250cm9sICsgXCIgPT09IDEgPyBmYWxzZSA6IHRydWUgKSA6IHRydWUgfVwiO1xufTtcblxuLypcbiAqIEdldCBFeHByZXNzaW9uIG9mIHByZXNzIGV2ZW50IGZvciB0aGUgZGVsZXRlIGJ1dHRvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSBlbnRpdHlTZXQgVGhlIGN1cnJlbnQgZW50aXR5IHNldFxuICogQHBhcmFtIGNvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSBUaGUgY3VycmVudCB0ZW1wbGF0aW5nIGNvbnRleHRcbiAqIHJldHVybnMgVGhlIGZ1bmN0aW9uIHN0cmluZyBnZW5lcmF0ZWQgZnJvbSB0aGUgQ29tbW9uSGVscGVyJ3MgbWV0aG9kIGdlbmVyYXRlRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFByZXNzRXhwcmVzc2lvbkZvckRlbGV0ZSA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuXHRjb25zdCBkZWxldGFibGVDb250ZXh0cyA9IFwiJHskdmlldz4vfS5nZXRCaW5kaW5nQ29udGV4dCgpXCIsXG5cdFx0dGl0bGUgPSBcIiR7JHZpZXc+L30uYnlJZCgnZmU6Ok9iamVjdFBhZ2UnKS5kYXRhKCdPYmplY3RQYWdlU3VidGl0bGUnKVwiLFxuXHRcdGRlc2NyaXB0aW9uID0gXCIkeyR2aWV3Pi99LmJ5SWQoJ2ZlOjpPYmplY3RQYWdlJykuZGF0YSgnT2JqZWN0UGFnZURlc2NyaXB0aW9uJylcIjtcblxuXHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvblxuXHR9O1xuXHRyZXR1cm4gQ29tbW9uSGVscGVyLmdlbmVyYXRlRnVuY3Rpb24oXCIuZWRpdEZsb3cuZGVsZXRlRG9jdW1lbnRcIiwgZGVsZXRhYmxlQ29udGV4dHMsIENvbW1vbkhlbHBlci5vYmplY3RUb1N0cmluZyhwYXJhbXMpKTtcbn07XG5cbi8qXG4gKiBHZXQgRXhwcmVzc2lvbiBvZiBwcmVzcyBldmVudCBvZiBFZGl0IGJ1dHRvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0RhdGFGaWVsZF0gRGF0YSBmaWVsZCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc0VudGl0eVNldE5hbWVdIEVudGl0eSBzZXQgbmFtZVxuICogQHBhcmFtIHtvYmplY3R9IFtvSGVhZGVyQWN0aW9uXSBIZWFkZXIgYWN0aW9uIG9iamVjdFxuICogcmV0dXJucyB7c3RyaW5nfSAgYmluZGluZyBleHByZXNzaW9uIC8gZnVuY3Rpb24gc3RyaW5nIGdlbmVyYXRlZCBmcm9tIGNvbW1hbmhlbHBlcidzIGZ1bmN0aW9uIGdlbmVyYXRlRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFByZXNzRXhwcmVzc2lvbkZvckVkaXQgPSBmdW5jdGlvbiAoXG5cdG9EYXRhRmllbGQ6IE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkRm9yQWN0aW9uPixcblx0c0VudGl0eVNldE5hbWU6IHN0cmluZyxcblx0b0hlYWRlckFjdGlvbj86IEJhc2VBY3Rpb25cbik6IHN0cmluZyB7XG5cdGNvbnN0IHNFZGl0YWJsZUNvbnRleHRzID0gQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhvRGF0YUZpZWxkICYmIG9EYXRhRmllbGQuQWN0aW9uISksXG5cdFx0c0RhdGFGaWVsZEVudW1NZW1iZXIgPVxuXHRcdFx0b0RhdGFGaWVsZCAmJlxuXHRcdFx0b0RhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgJiZcblx0XHRcdChvRGF0YUZpZWxkLkludm9jYXRpb25Hcm91cGluZyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pW1wiJEVudW1NZW1iZXJcIl0sXG5cdFx0c0ludm9jYXRpb25Hcm91cCA9IHNEYXRhRmllbGRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIiA/IFwiQ2hhbmdlU2V0XCIgOiBcIklzb2xhdGVkXCI7XG5cdGNvbnN0IG9QYXJhbXMgPSB7XG5cdFx0Y29udGV4dHM6IFwiJHskdmlldz4vfS5nZXRCaW5kaW5nQ29udGV4dCgpXCIsXG5cdFx0ZW50aXR5U2V0TmFtZTogQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzRW50aXR5U2V0TmFtZSksXG5cdFx0aW52b2NhdGlvbkdyb3VwaW5nOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKHNJbnZvY2F0aW9uR3JvdXApLFxuXHRcdG1vZGVsOiBcIiR7JHNvdXJjZT4vfS5nZXRNb2RlbCgpXCIsXG5cdFx0bGFiZWw6IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0RhdGFGaWVsZCAmJiBvRGF0YUZpZWxkLkxhYmVsISwgdHJ1ZSksXG5cdFx0aXNOYXZpZ2FibGU6IG9IZWFkZXJBY3Rpb24gJiYgb0hlYWRlckFjdGlvbi5pc05hdmlnYWJsZSxcblx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246XG5cdFx0XHRvSGVhZGVyQWN0aW9uICYmIG9IZWFkZXJBY3Rpb24uZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uID8gYCcke29IZWFkZXJBY3Rpb24uZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9ufSdgIDogdW5kZWZpbmVkXG5cdH07XG5cdHJldHVybiBDb21tb25IZWxwZXIuZ2VuZXJhdGVGdW5jdGlvbihcIi5oYW5kbGVycy5vbkNhbGxBY3Rpb25cIiwgXCIkeyR2aWV3Pi99XCIsIHNFZGl0YWJsZUNvbnRleHRzLCBDb21tb25IZWxwZXIub2JqZWN0VG9TdHJpbmcob1BhcmFtcykpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBleHByZXNzaW9uIGZvciB0aGUgJ3ByZXNzJyBldmVudCBpbiB0aGUgZm9vdGVyIGFubm90YXRpb24gYWN0aW9ucy5cbiAqIEBwYXJhbSBkYXRhRmllbGRNb2RlbFBhdGggVGhlIGRhdGEgbW9kZWwgcGF0aCBvZiB0aGUgZGF0YSBmaWVsZFxuICogQHBhcmFtIGVudGl0eVNldE5hbWUgVGhlIGVudGl0eSBzZXQgbmFtZVxuICogQHBhcmFtIGhlYWRlckFjdGlvbiBUaGUgaGVhZGVyIGFjdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zICBUaGUgYmluZGluZyBleHByZXNzaW9uIG9yIGZ1bmN0aW9uIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgZ2V0UHJlc3NFeHByZXNzaW9uRm9yRm9vdGVyQW5ub3RhdGlvbkFjdGlvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YUZpZWxkTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4sXG5cdGVudGl0eVNldE5hbWU6IHN0cmluZyxcblx0aGVhZGVyQWN0aW9uOiBDdXN0b21BY3Rpb25cbik6IHN0cmluZyB7XG5cdGNvbnN0IGRhdGFGaWVsZCA9IGRhdGFGaWVsZE1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkRm9yQWN0aW9uO1xuXHRjb25zdCBhY3Rpb25Db250ZXh0cyA9IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMoZGF0YUZpZWxkLkFjdGlvbiBhcyBzdHJpbmcpO1xuXHRjb25zdCBvUGFyYW1zID0ge1xuXHRcdGNvbnRleHRzOiBcIiR7JHZpZXc+L30uZ2V0QmluZGluZ0NvbnRleHQoKVwiLFxuXHRcdGVudGl0eVNldE5hbWU6IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMoZW50aXR5U2V0TmFtZSksXG5cdFx0aW52b2NhdGlvbkdyb3VwaW5nOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKFxuXHRcdFx0ZGF0YUZpZWxkLkludm9jYXRpb25Hcm91cGluZyA9PT0gXCJVSS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCIgPyBcIkNoYW5nZVNldFwiIDogXCJJc29sYXRlZFwiXG5cdFx0KSxcblx0XHRtb2RlbDogXCIkeyRzb3VyY2U+L30uZ2V0TW9kZWwoKVwiLFxuXHRcdGxhYmVsOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKGRhdGFGaWVsZC5MYWJlbCBhcyBzdHJpbmcsIHRydWUpLFxuXHRcdGlzTmF2aWdhYmxlOiBoZWFkZXJBY3Rpb24uaXNOYXZpZ2FibGUsXG5cdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBoZWFkZXJBY3Rpb24uZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uXG5cdFx0XHQ/IGAnJHtoZWFkZXJBY3Rpb24uZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9ufSdgXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXHR9O1xuXHRyZXR1cm4gQ29tbW9uSGVscGVyLmdlbmVyYXRlRnVuY3Rpb24oXCIuaGFuZGxlcnMub25DYWxsQWN0aW9uXCIsIFwiJHskdmlldz4vfVwiLCBhY3Rpb25Db250ZXh0cywgQ29tbW9uSGVscGVyLm9iamVjdFRvU3RyaW5nKG9QYXJhbXMpKTtcbn07XG5cbi8qXG4gKiBHZXQgRXhwcmVzc2lvbiBmb3IgZXhlY3V0aW5nIHRoZSBldmVudCBleHByZXNzaW9uIG9mIHRoZSBwcmltYXJ5IGFjdGlvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0RhdGFGaWVsZF0gRGF0YSBmaWVsZCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc0VudGl0eVNldE5hbWVdIEVudGl0eSBzZXQgbmFtZVxuICogQHBhcmFtIHtvYmplY3R9IFtvSGVhZGVyQWN0aW9uXSBIZWFkZXIgYWN0aW9uIG9iamVjdFxuICogQHBhcmFtIHtDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHN0cmluZ30gVGhlIHZpc2liaWxpdHkgb2Ygc2VtYXRpYyBwb3NpdGl2ZSBhY3Rpb25cbiAqIEBwYXJhbSB7Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmd9IFRoZSBlbmFibGVtZW50IG9mIHNlbWFudGljIHBvc2l0aXZlIGFjdGlvblxuICogQHBhcmFtIHtDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHN0cmluZ30gVGhlIEVkaXQgYnV0dG9uIHZpc2liaWxpdHlcbiAqIEBwYXJhbSB7Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmd9IFRoZSBlbmFibGVtZW50IG9mIEVkaXQgYnV0dG9uXG4gKiByZXR1cm5zIHtzdHJpbmd9ICBiaW5kaW5nIGV4cHJlc3Npb24gLyBmdW5jdGlvbiBzdHJpbmcgZ2VuZXJhdGVkIGZyb20gY29tbWFuaGVscGVyJ3MgZnVuY3Rpb24gZ2VuZXJhdGVGdW5jdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0UHJlc3NFeHByZXNzaW9uRm9yUHJpbWFyeUFjdGlvbiA9IGZ1bmN0aW9uIChcblx0b0RhdGFGaWVsZDogRGF0YUZpZWxkRm9yQWN0aW9uIHwgdW5kZWZpbmVkLFxuXHRzRW50aXR5U2V0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRvSGVhZGVyQWN0aW9uOiBCYXNlQWN0aW9uIHwgbnVsbCxcblx0cG9zaXRpdmVBY3Rpb25WaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHN0cmluZyxcblx0cG9zaXRpdmVBY3Rpb25FbmFibGVkOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHN0cmluZyxcblx0ZWRpdEFjdGlvblZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgc3RyaW5nLFxuXHRlZGl0QWN0aW9uRW5hYmxlZDogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmdcbik6IHN0cmluZyB7XG5cdGNvbnN0IHNBY3Rpb25Db250ZXh0cyA9IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0RhdGFGaWVsZD8uQWN0aW9uLnRvU3RyaW5nKCkgPz8gXCJcIiksXG5cdFx0c0RhdGFGaWVsZEVudW1NZW1iZXIgPVxuXHRcdFx0b0RhdGFGaWVsZCAmJlxuXHRcdFx0b0RhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgJiZcblx0XHRcdChvRGF0YUZpZWxkLkludm9jYXRpb25Hcm91cGluZyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pW1wiJEVudW1NZW1iZXJcIl0sXG5cdFx0c0ludm9jYXRpb25Hcm91cCA9IHNEYXRhRmllbGRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIiA/IFwiQ2hhbmdlU2V0XCIgOiBcIklzb2xhdGVkXCI7XG5cdGNvbnN0IG9QYXJhbXMgPSB7XG5cdFx0Y29udGV4dHM6IFwiJHskdmlldz4vfS5nZXRCaW5kaW5nQ29udGV4dCgpXCIsXG5cdFx0ZW50aXR5U2V0TmFtZTogc0VudGl0eVNldE5hbWUgPyBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKHNFbnRpdHlTZXROYW1lKSA6IFwiXCIsXG5cdFx0aW52b2NhdGlvbkdyb3VwaW5nOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKHNJbnZvY2F0aW9uR3JvdXApLFxuXHRcdG1vZGVsOiBcIiR7JHNvdXJjZT4vfS5nZXRNb2RlbCgpXCIsXG5cdFx0bGFiZWw6IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0RhdGFGaWVsZD8uTGFiZWw/LnRvU3RyaW5nKCkgPz8gXCJcIiwgdHJ1ZSksXG5cdFx0aXNOYXZpZ2FibGU6IG9IZWFkZXJBY3Rpb24/LmlzTmF2aWdhYmxlLFxuXHRcdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogb0hlYWRlckFjdGlvbj8uZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uXG5cdFx0XHQ/IGAnJHtvSGVhZGVyQWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbn0nYFxuXHRcdFx0OiB1bmRlZmluZWRcblx0fTtcblx0Y29uc3Qgb0NvbmRpdGlvbnMgPSB7XG5cdFx0cG9zaXRpdmVBY3Rpb25WaXNpYmxlLFxuXHRcdHBvc2l0aXZlQWN0aW9uRW5hYmxlZCxcblx0XHRlZGl0QWN0aW9uVmlzaWJsZSxcblx0XHRlZGl0QWN0aW9uRW5hYmxlZFxuXHR9O1xuXHRyZXR1cm4gQ29tbW9uSGVscGVyLmdlbmVyYXRlRnVuY3Rpb24oXG5cdFx0XCIuaGFuZGxlcnMub25QcmltYXJ5QWN0aW9uXCIsXG5cdFx0XCIkY29udHJvbGxlclwiLFxuXHRcdFwiJHskdmlldz4vfVwiLFxuXHRcdFwiJHskdmlldz4vfS5nZXRCaW5kaW5nQ29udGV4dCgpXCIsXG5cdFx0c0FjdGlvbkNvbnRleHRzLFxuXHRcdENvbW1vbkhlbHBlci5vYmplY3RUb1N0cmluZyhvUGFyYW1zKSxcblx0XHRDb21tb25IZWxwZXIub2JqZWN0VG9TdHJpbmcob0NvbmRpdGlvbnMpXG5cdCk7XG59O1xuXG4vKlxuICogR2V0cyB0aGUgYmluZGluZyBvZiB0aGUgY29udGFpbmVyIEhCb3ggZm9yIHRoZSBoZWFkZXIgZmFjZXQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gW29Db250cm9sQ29uZmlndXJhdGlvbl0gVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmb3JtIG9mIHRoZSB2aWV3RGF0YSBtb2RlbFxuICogQHBhcmFtIHtvYmplY3R9IFtvSGVhZGVyRmFjZXRdIFRoZSBvYmplY3Qgb2YgdGhlIGhlYWRlciBmYWNldFxuICogcmV0dXJucyB7Kn0gIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZnJvbSBmdW5jdGlvbiBnZXRCaW5kaW5nV2l0aEdyb3VwSWRGcm9tQ29uZmlnIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFN0YXNoYWJsZUhCb3hCaW5kaW5nID0gZnVuY3Rpb24gKFxuXHRvQ29udHJvbENvbmZpZ3VyYXRpb246IENvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRvSGVhZGVyRmFjZXQ6IHsgRmFjZXQ6IEZpZWxkR3JvdXBGYWNldCB9XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAob0hlYWRlckZhY2V0ICYmIG9IZWFkZXJGYWNldC5GYWNldCAmJiBvSGVhZGVyRmFjZXQuRmFjZXQudGFyZ2V0QW5ub3RhdGlvblR5cGUgPT09IFwiRGF0YVBvaW50XCIpIHtcblx0XHRyZXR1cm4gZ2V0QmluZGluZ1dpdGhHcm91cElkRnJvbUNvbmZpZyhvQ29udHJvbENvbmZpZ3VyYXRpb24sIG9IZWFkZXJGYWNldC5GYWNldC50YXJnZXRBbm5vdGF0aW9uVmFsdWUhKTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEhlYWRlckZvcm1IYm94UmVuZGVyVHlwZSA9IGZ1bmN0aW9uIChkYXRhRmllbGQ6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcz4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAoZGF0YUZpZWxkPy50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gXCJCYXJlXCI7XG59O1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGFjdGlvbiBncm91cCBoYW5kbGVyIHRoYXQgaXMgaW52b2tlZCB3aGVuIGFkZGluZyB0aGUgbWVudSBidXR0b24gaGFuZGxpbmcgYXBwcm9wcmlhdGVseS5cbiAqIEBwYXJhbSBvQ3R4IFRoZSBjdXJyZW50IGNvbnRleHQgaW4gd2hpY2ggdGhlIGhhbmRsZXIgaXMgY2FsbGVkXG4gKiBAcGFyYW0gb0FjdGlvbiBUaGUgY3VycmVudCBhY3Rpb24gY29udGV4dFxuICogQHBhcmFtIG9EYXRhRmllbGRGb3JEZWZhdWx0QWN0aW9uIFRoZSBjdXJyZW50IGRhdGFGaWVsZCBmb3IgdGhlIGRlZmF1bHQgYWN0aW9uXG4gKiBAcGFyYW0gZGVmYXVsdEFjdGlvbkNvbnRleHRPckVudGl0eVNldCBUaGUgY3VycmVudCBjb250ZXh0IGZvciB0aGUgZGVmYXVsdCBhY3Rpb25cbiAqIEByZXR1cm5zIFRoZSBhcHByb3ByaWF0ZSBleHByZXNzaW9uIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEFjdGlvbkhhbmRsZXIoXG5cdG9DdHg6IENvbnRleHQsXG5cdG9BY3Rpb246IEN1c3RvbUFjdGlvbixcblx0b0RhdGFGaWVsZEZvckRlZmF1bHRBY3Rpb246IE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkRGVmYXVsdD4sXG5cdGRlZmF1bHRBY3Rpb25Db250ZXh0T3JFbnRpdHlTZXQ6IHN0cmluZ1xuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRpZiAob0FjdGlvbi5kZWZhdWx0QWN0aW9uKSB7XG5cdFx0Y29uc3QgZGVmYXVsdEFjdGlvbiA9IG9BY3Rpb24uZGVmYXVsdEFjdGlvbiBhcyBDdXN0b21BY3Rpb247XG5cdFx0dHJ5IHtcblx0XHRcdHN3aXRjaCAoZGVmYXVsdEFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJGb3JBY3Rpb25cIjoge1xuXHRcdFx0XHRcdHJldHVybiBnZXRQcmVzc0V4cHJlc3Npb25Gb3JFZGl0KFxuXHRcdFx0XHRcdFx0b0RhdGFGaWVsZEZvckRlZmF1bHRBY3Rpb24gYXMgTWV0YU1vZGVsVHlwZTxEYXRhRmllbGRGb3JBY3Rpb24+LFxuXHRcdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbkNvbnRleHRPckVudGl0eVNldCxcblx0XHRcdFx0XHRcdG9BY3Rpb24uZGVmYXVsdEFjdGlvbiBhcyBCYXNlQWN0aW9uXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIFwiRm9yTmF2aWdhdGlvblwiOiB7XG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRBY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFwiY21kOlwiICsgZGVmYXVsdEFjdGlvbi5jb21tYW5kO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGVmYXVsdEFjdGlvbi5wcmVzcztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRcdGlmIChkZWZhdWx0QWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcImNtZDpcIiArIGRlZmF1bHRBY3Rpb24uY29tbWFuZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRBY3Rpb24ubm9XcmFwKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGVmYXVsdEFjdGlvbi5wcmVzcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIENvbW1vbkhlbHBlci5idWlsZEFjdGlvbldyYXBwZXIoZGVmYXVsdEFjdGlvbiwgeyBpZDogXCJmb3JUaGVPYmplY3RQYWdlXCIgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoaW9FeCkge1xuXHRcdFx0cmV0dXJuIFwiYmluZGluZyBmb3IgdGhlIGRlZmF1bHQgYWN0aW9uIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkXCI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHN1YiBzZWN0aW9uIHZpc3VhbGl6YXRpb24gaXMgcGFydCBvZiBwcmV2aWV3LlxuICogQHBhcmFtIHN1YlNlY3Rpb24gVGhlIHN1YiBzZWN0aW9uIHZpc3VhbGl6YXRpb25cbiAqIEByZXR1cm5zIEEgQm9vbGVhbiB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWaXN1YWxpemF0aW9uSXNQYXJ0T2ZQcmV2aWV3KHN1YlNlY3Rpb246IERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gc3ViU2VjdGlvbi5pc1BhcnRPZlByZXZpZXcgPT09IHRydWUgfHwgc3ViU2VjdGlvbi5wcmVzZW50YXRpb24udmlzdWFsaXphdGlvbnNbMF0udHlwZSAhPT0gXCJUYWJsZVwiO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGV4cHJlc3Npb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZvb3RlciBvZiB0aGUgb2JqZWN0IHBhZ2UgaXMgdG8gYmUgdmlzaWJsZSBvciBub3QuXG4gKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBmb3IgdGhlIGZvcm1hdHRlci5cbiAqIEBwYXJhbSBmb290ZXJBY3Rpb25zIFRoZSBsaXN0IG9mIGZvb3RlciBhY3Rpb25zLlxuICogQHJldHVybnMgQSBiaW5kaW5nIGV4cHJlc3Npb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZvb3RlclZpc2liaWxpdHlFeHByZXNzaW9uID0gZnVuY3Rpb24gKGNvbnRleHQ6IElDb250ZXh0LCBmb290ZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRleHQuZ2V0SW50ZXJmYWNlKDEpLmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3QgX2dlbmVyYXRlQmluZGluZ3NGb3JBY3Rpb25zID0gKGFjdGlvbnM6IEJhc2VBY3Rpb25bXSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdID0+IHtcblx0XHRpZiAoYWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiByZXNvbHZlQmluZGluZ1N0cmluZyhhY3Rpb24udmlzaWJsZSA/PyB0cnVlLCBcImJvb2xlYW5cIikpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdO1xuXHRcdH1cblx0XHRyZXR1cm4gW2NvbnN0YW50KGZhbHNlKV07XG5cdH07XG5cblx0Y29uc3QgZ2V0QWN0aW9uTW9kZWxQYXRoID0gKGFjdGlvbjogQmFzZUFjdGlvbik6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkRm9yQWN0aW9uPiB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSBhY3Rpb24uYW5ub3RhdGlvblBhdGg7XG5cdFx0aWYgKGFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRjb25zdCBhY3Rpb25Db250ZXh0ID0gbWV0YU1vZGVsLmdldENvbnRleHQoYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRGb3JBY3Rpb24+KGFjdGlvbkNvbnRleHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9O1xuXG5cdC8vIEFjdGlvbnMgYXJlIGNvbWluZyBmcm9tIHRoZSBjb252ZXJ0ZXIgc28gb25seSBkZXRlcm1pbmluZyBhY3Rpb25zIGFuZCBub3Qgc3RhdGljYWxseSBoaWRkZW4gYXJlIGxpc3RlZFxuXHRjb25zdCBkZXRlcm1pbmluZ0FjdGlvbnMgPSBmb290ZXJBY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24pO1xuXHRjb25zdCBtYW5pZmVzdEFjdGlvbkJpbmRpbmdzID0gX2dlbmVyYXRlQmluZGluZ3NGb3JBY3Rpb25zKGZvb3RlckFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGlzTWFuaWZlc3RBY3Rpb24oYWN0aW9uKSkpO1xuXHRjb25zdCBkZXRlcm1pbmluZ0FjdGlvbkJpbmRpbmdzID0gX2dlbmVyYXRlQmluZGluZ3NGb3JBY3Rpb25zKGRldGVybWluaW5nQWN0aW9ucyk7XG5cblx0Y29uc3QgaXNOb3RIaWRkZW5EZXRlcm1pbmluZ0FjdGlvbiA9ICEhZGV0ZXJtaW5pbmdBY3Rpb25zLmZpbmQoKGFjdGlvbikgPT4ge1xuXHRcdGNvbnN0IGFjdGlvbkNvbnRleHRNb2RlbFBhdGggPSBnZXRBY3Rpb25Nb2RlbFBhdGgoYWN0aW9uKTtcblx0XHRyZXR1cm4gIWFjdGlvbkNvbnRleHRNb2RlbFBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW47XG5cdH0pO1xuXG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRvcihcblx0XHRcdGlzTm90SGlkZGVuRGV0ZXJtaW5pbmdBY3Rpb24sXG5cdFx0XHRvciguLi5tYW5pZmVzdEFjdGlvbkJpbmRpbmdzKSxcblx0XHRcdGFuZChvcihVSS5Jc0VkaXRhYmxlLCBvciguLi5kZXRlcm1pbmluZ0FjdGlvbkJpbmRpbmdzKSksIG5vdChwYXRoSW5Nb2RlbChcImlzQ3JlYXRlRGlhbG9nT3BlblwiLCBcImludGVybmFsXCIpKSlcblx0XHQpXG5cdCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgc3Vic2VjdGlvbiBoZWFkZXIgbGV2ZWwuXG4gKiBAcGFyYW0gc3ViU2VjdGlvbiBUaGUgc3Vic2VjdGlvbiB2aXN1YWxpemF0aW9uXG4gKiBAcGFyYW0gaXNNb3JlQ29udGVudFxuICogQHJldHVybnMgQSBTdHJpbmcgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlckxldmVsKHN1YlNlY3Rpb246IERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiwgaXNNb3JlQ29udGVudDogYm9vbGVhbik6IHN0cmluZyB7XG5cdGlmIChpc01vcmVDb250ZW50KSB7XG5cdFx0aWYgKCFzdWJTZWN0aW9uLnNob3dTdWJTZWN0aW9uVGl0bGUpIHtcblx0XHRcdC8vIHdoZW5ldmVyIHRpdGxlIGlzIG1lcmdlZCBmb3Igc3ViLXNlY3Rpb24sIGxldmVsIHNob3VsZCBiZSBINFxuXHRcdFx0cmV0dXJuIFwiSDRcIjtcblx0XHR9IGVsc2UgaWYgKHN1YlNlY3Rpb24ubGV2ZWwgPT09IDIgJiYgc3ViU2VjdGlvbi5kYXRhVmlzdWFsaXphdGlvblRpdGxlVmlzaWJsZSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdC8vIHJldGFpbiBvbGQgbG9naWNcblx0XHRcdHJldHVybiBcIkg2XCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIkg1XCI7IC8vIHJldGFpbiBvbGQgbG9naWNcblx0XHR9XG5cdH0gZWxzZSBpZiAoIXN1YlNlY3Rpb24uc2hvd1N1YlNlY3Rpb25UaXRsZSkge1xuXHRcdC8vIHdoZW5ldmVyIHRpdGxlIGlzIG1lcmdlZCBmb3Igc2VjdGlvbiwgbGV2ZWwgc2hvdWxkIGJlIEgzXG5cdFx0cmV0dXJuIFwiSDNcIjtcblx0fSBlbHNlIGlmIChzdWJTZWN0aW9uLmxldmVsID09PSAyICYmIHN1YlNlY3Rpb24uZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUgPT09IFwidHJ1ZVwiKSB7XG5cdFx0Ly8gcmV0YWluIG9sZCBsb2dpY1xuXHRcdHJldHVybiBcIkg1XCI7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiSDRcIjsgLy8gcmV0YWluIG9sZCBsb2dpY1xuXHR9XG59XG5cbmdldEZvb3RlclZpc2liaWxpdHlFeHByZXNzaW9uLnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1REEsTUFBTUEsVUFBVSxHQUFHQyxRQUFRLENBQUNELFVBQVU7RUFFL0IsTUFBTUUscUJBQXFCLEdBQUcsU0FBQUEsQ0FDcENDLGVBQTJELEVBQzNEQyxRQUFrQixFQUNsQkMsVUFBMkIsRUFDUTtJQUNuQyxPQUFPQyx5QkFBeUIsQ0FDL0JILGVBQWUsRUFDZkksd0JBQXdCLEVBQ3hCQyxTQUFTLEVBQ1RILFVBQVUsRUFDVkQsUUFDRCxDQUFDO0VBQ0YsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BSyxRQUFBLENBQUFQLHFCQUFBLEdBQUFBLHFCQUFBO0VBT08sTUFBTVEsMkJBQTJCLEdBQUcsU0FBQUEsQ0FDMUNQLGVBQStDLEVBQy9DUSxXQUE0QixFQUNPO0lBQ25DLElBQUlDLGtCQUFrQixHQUFHQywyQkFBMkIsQ0FBRUYsV0FBVyxFQUFFRyxXQUFXLEVBQXFCQyxLQUFLLENBQUM7SUFDekcsSUFBS0osV0FBVyxFQUFFRyxXQUFXLEVBQXFCQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUYsV0FBVyxFQUFFRyxFQUFFLEVBQUVDLGVBQWUsRUFBRTtNQUM5SDtNQUNBVCxrQkFBa0IsR0FBR1UscUNBQXFDLENBQUNWLGtCQUFrQixFQUFFVCxlQUFlLENBQUM7SUFDaEc7SUFDQSxNQUFNb0IsV0FBVyxHQUFHQyxpQkFBaUIsQ0FBQ0Msc0JBQXNCLENBQUNiLGtCQUFrQixFQUFFVCxlQUFlLENBQUMsQ0FBQztJQUNsRyxPQUFPb0IsV0FB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NEIsR0FBRyxDQUFDLENBQUNMLGtCQUFrQixDQUFDeEssSUFBSSxDQUFFOUMsTUFBTSxJQUFLO01BQzFFLE1BQU00TixzQkFBc0IsR0FBR1gsa0JBQWtCLENBQUNqTixNQUFNLENBQUM7TUFDekQsT0FBTyxDQUFDNE4sc0JBQXNCLEVBQUUvSCxZQUFZLEVBQUV2SCxXQUFXLEVBQUVHLEVBQUUsRUFBRTRDLE1BQU07SUFDdEUsQ0FBQyxDQUFDO0lBRUYsT0FBT3hDLGlCQUFpQixDQUN2QnlDLEVBQUUsQ0FDRHFNLDRCQUE0QixFQUM1QnJNLEVBQUUsQ0FBQyxHQUFHbU0sc0JBQXNCLENBQUMsRUFDN0J2TSxHQUFHLENBQUNJLEVBQUUsQ0FBQzdDLEVBQUUsQ0FBQzhELFVBQVUsRUFBRWpCLEVBQUUsQ0FBQyxHQUFHb00seUJBQXlCLENBQUMsQ0FBQyxFQUFFdk0sR0FBRyxDQUFDbUIsV0FBVyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQzVHLENBQ0QsQ0FBQztFQUNGLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEF4RSxRQUFBLENBQUEwTyw2QkFBQSxHQUFBQSw2QkFBQTtFQU1PLFNBQVNxQixjQUFjQSxDQUFDekIsVUFBdUMsRUFBRTBCLGFBQXNCLEVBQVU7SUFDdkcsSUFBSUEsYUFBYSxFQUFFO01BQ2xCLElBQUksQ0FBQzFCLFVBQVUsQ0FBQzJCLG1CQUFtQixFQUFFO1FBQ3BDO1FBQ0EsT0FBTyxJQUFJO01BQ1osQ0FBQyxNQUFNLElBQUkzQixVQUFVLENBQUM0QixLQUFLLEtBQUssQ0FBQyxJQUFJNUIsVUFBVSxDQUFDNkIsNkJBQTZCLEtBQUssTUFBTSxFQUFFO1FBQ3pGO1FBQ0EsT0FBTyxJQUFJO01BQ1osQ0FBQyxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsQ0FBQztNQUNkO0lBQ0QsQ0FBQyxNQUFNLElBQUksQ0FBQzdCLFVBQVUsQ0FBQzJCLG1CQUFtQixFQUFFO01BQzNDO01BQ0EsT0FBTyxJQUFJO0lBQ1osQ0FBQyxNQUFNLElBQUkzQixVQUFVLENBQUM0QixLQUFLLEtBQUssQ0FBQyxJQUFJNUIsVUFBVSxDQUFDNkIsNkJBQTZCLEtBQUssTUFBTSxFQUFFO01BQ3pGO01BQ0EsT0FBTyxJQUFJO0lBQ1osQ0FBQyxNQUFNO01BQ04sT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNkO0VBQ0Q7RUFBQ25RLFFBQUEsQ0FBQStQLGNBQUEsR0FBQUEsY0FBQTtFQUVEckIsNkJBQTZCLENBQUMwQixnQkFBZ0IsR0FBRyxJQUFJO0VBQUMsT0FBQXBRLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
799
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwibUxpYnJhcnkiLCJnZXRFeHByZXNzaW9uRm9yVGl0bGUiLCJmdWxsQ29udGV4dFBhdGgiLCJ2aWV3RGF0YSIsImhlYWRlckluZm8iLCJnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJnZXRFeHByZXNzaW9uRm9yRGVzY3JpcHRpb24iLCJvSGVhZGVySW5mbyIsImRlc2NyaXB0aW9uQmluZGluZyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIkRlc2NyaXB0aW9uIiwiVmFsdWUiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiVUkiLCJUZXh0QXJyYW5nZW1lbnQiLCJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiZGVzY3JpcHRpb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImZvcm1hdFZhbHVlUmVjdXJzaXZlbHkiLCJnZXRFeHByZXNzaW9uRm9yU2F2ZUJ1dHRvbiIsIm9WaWV3RGF0YSIsInNhdmVCdXR0b25UZXh0IiwicmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJjcmVhdGVCdXR0b25UZXh0Iiwic2F2ZUV4cHJlc3Npb24iLCJzdGFydGluZ0VudGl0eVNldCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiaWZFbHNlIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldEV4cHJlc3Npb25Gb3JMYWJlbE9uSGVhZGVyRm9ybSIsImxhYmVsIiwiaXNNYW5pZmVzdEFjdGlvbiIsImFjdGlvbiIsIm5vbk1hbmlmZXN0QWN0aW9ucyIsImluY2x1ZGVzIiwidHlwZSIsImJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJkYXRhQ29udGV4dFBhdGgiLCJpZGVudGlmaWNhdGlvbiIsInRhcmdldEVudGl0eVR5cGUiLCJJZGVudGlmaWNhdGlvbiIsImRhdGFGaWVsZHNXaXRoQ3JpdGljYWxpdHkiLCJmaWx0ZXIiLCJkYXRhRmllbGQiLCIkVHlwZSIsIkNyaXRpY2FsaXR5IiwiZGF0YUZpZWxkc0JpbmRpbmdFeHByZXNzaW9ucyIsImxlbmd0aCIsIm1hcCIsImNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uIiwiYW5kIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJvciIsImNvbnN0YW50IiwiR2hvc3QiLCJFbXBoYXNpemVkIiwiZ2V0RWxlbWVudEJpbmRpbmciLCJzUGF0aCIsInNOYXZpZ2F0aW9uUGF0aCIsIk9EYXRhTW9kZWxBbm5vdGF0aW9uSGVscGVyIiwiZ2V0TmF2aWdhdGlvblBhdGgiLCJjaGVja0RyYWZ0U3RhdGUiLCJlbnRpdHlTZXQiLCJEcmFmdFJvb3QiLCJFZGl0QWN0aW9uIiwiY2hlY2tDb2xsYWJvcmF0aW9uRHJhZnRSb290IiwiU2hhcmVBY3Rpb24iLCJnZXRTd2l0Y2hUb0FjdGl2ZVZpc2liaWxpdHkiLCJwYXRoSW5Nb2RlbCIsIklzRWRpdGFibGUiLCJnZXRTd2l0Y2hUb0RyYWZ0VmlzaWJpbGl0eSIsImdldFN3aXRjaERyYWZ0QW5kQWN0aXZlVmlzaWJpbGl0eSIsIl9maW5kQWN0aW9uIiwiYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zIiwic0FjdGlvblR5cGUiLCJvQWN0aW9uIiwiZmluZCIsIm9IZWFkZXJBY3Rpb24iLCJnZXREZWxldGVDb21tYW5kRXhlY3V0aW9uRW5hYmxlZCIsIm9EZWxldGVBY3Rpb24iLCJlbmFibGVkIiwiZ2V0RGVsZXRlQ29tbWFuZEV4ZWN1dGlvblZpc2libGUiLCJ2aXNpYmxlIiwiZ2V0RWRpdENvbW1hbmRFeGVjdXRpb25WaXNpYmxlIiwib0VkaXRBY3Rpb24iLCJnZXRFZGl0Q29tbWFuZEV4ZWN1dGlvbkVuYWJsZWQiLCJnZXRFZGl0QWN0aW9uIiwib0VudGl0eVNldCIsImdldFBhdGgiLCJhUGF0aHMiLCJzcGxpdCIsInJvb3RFbnRpdHlTZXRQYXRoIiwicm9vdEVudGl0eVNldEFubm5vdGF0aW9ucyIsImdldE9iamVjdCIsImJEcmFmdFJvb3QiLCJoYXNPd25Qcm9wZXJ0eSIsImJEcmFmdE5vZGUiLCJiU3RpY2t5U2Vzc2lvbiIsInNBY3Rpb25OYW1lIiwiaXNSZWFkT25seUZyb21TdGF0aWNBbm5vdGF0aW9ucyIsIm9Bbm5vdGF0aW9ucyIsIm9GaWVsZENvbnRyb2wiLCJiQ29tcHV0ZWQiLCJiSW1tdXRhYmxlIiwiYlJlYWRPbmx5IiwiQm9vbCIsInJlYWRPbmx5RXhwcmVzc2lvbkZyb21EeW5hbWljQW5ub3RhdGlvbnMiLCJzSXNGaWVsZENvbnRyb2xQYXRoUmVhZE9ubHkiLCJiaW5kaW5nUGFyc2VyIiwiZ2V0RXhwcmVzc2lvbkZvck1pY3JvQ2hhcnRUaXRsZVByZXNzIiwib0NvbmZpZ3VyYXRpb24iLCJ0YXJnZXRBbm5vdGF0aW9uUGF0aCIsInRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3QiLCJvTWFuaWZlc3RPdXRib3VuZCIsInNDb2xsZWN0aW9uTmFtZSIsImdldE1pY3JvQ2hhcnRDb250cm9sQ29uZmlndXJhdGlvblBhdGgiLCJuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRNaWNyb0NoYXJ0VGl0bGVBc0xpbmsiLCJvQ29udHJvbENvbmZpZ3VyYXRpb24iLCJjb2xsZWN0aW9uTmFtZSIsInRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uIiwidGFyZ2V0T2JqZWN0IiwiVmlzdWFsaXphdGlvbnMiLCJ2YWx1ZSIsImdldEdyb3VwSWRGcm9tQ29uZmlnIiwib0NvbmZpZ3VyYXRpb25zIiwic0Fubm90YXRpb25QYXRoIiwic0RlZmF1bHRHcm91cElkIiwiYUF1dG9QYXR0ZXJucyIsInNHcm91cElkIiwicmVxdWVzdEdyb3VwSWQiLCJzb21lIiwiYXV0b1BhdHRlcm4iLCJnZXRHcm91cElkRnJvbUNvbmZpZ0Zvck1pY3JvQ2hhcnQiLCJ0YXJnZXRBbm5vdGF0aW9uUGF0aERhdGFNb2RlbE9iamVjdCIsImdldEJpbmRpbmdXaXRoR3JvdXBJZEZyb21Db25maWciLCJzS2V5Iiwic0JpbmRpbmciLCJjcmVhdGVCaW5kaW5nRm9yQWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsImJpbmRpbmciLCJhbHRlcm5hdGVBbmRTZWNvbmRhcnlLZXlzIiwiTW9kZWxIZWxwZXIiLCJnZXRBbHRlcm5hdGVBbmRTZWNvbmRhcnlLZXlzIiwidGFyZ2V0RW50aXR5U2V0IiwicGF0aCIsInBhcmFtZXRlcnMiLCIkc2VsZWN0Iiwiam9pbiIsImRvZXNGaWVsZEdyb3VwQ29udGFpbk9ubHlPbmVNdWx0aUxpbmVEYXRhRmllbGQiLCJhRm9ybUVsZW1lbnRzIiwiaXNWYWx1ZU11bHRpbGluZVRleHQiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbkZvckJyZWFkY3J1bWJzIiwic2hvd0JyZWFkQ3J1bWJzIiwiZmNsRW5hYmxlZCIsImdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eSIsImlzU2hhcmVCdXR0b25WaXNpYmxlRm9yTXlJbmJveCIsInNoYXJlQnV0dG9uVmlzaWJpbGl0eUV4cCIsImdldFZpc2libGl0eU9mSGVhZGVySW5mbyIsIm9UaXRsZUFubm90YXRpb25zIiwib0Rlc2NyaXB0aW9uQW5ub3RhdGlvbnMiLCJvRmllbGRUaXRsZUZpZWxkQ29udHJvbCIsIm9GaWVsZERlc2NyaXB0aW9uRmllbGRDb250cm9sIiwiYklzVGl0bGVSZWFkT25seSIsInRpdGxlRXhwcmVzc2lvbiIsImJJc0Rlc2NyaXB0aW9uUmVhZE9ubHkiLCJkZXNjcmlwdGlvbkV4cHJlc3Npb24iLCJjb21iaW5lVGl0bGVBbmREZXNjcmlwdGlvbkV4cHJlc3Npb24iLCJvVGl0bGVGaWVsZENvbnRyb2wiLCJvRGVzY3JpcHRpb25GaWVsZENvbnRyb2wiLCJnZXRQcmVzc0V4cHJlc3Npb25Gb3JEZWxldGUiLCJkZWxldGFibGVDb250ZXh0cyIsInRpdGxlIiwicGFyYW1zIiwiQ29tbW9uSGVscGVyIiwiZ2VuZXJhdGVGdW5jdGlvbiIsIm9iamVjdFRvU3RyaW5nIiwiZ2V0UHJlc3NFeHByZXNzaW9uRm9yRWRpdCIsIm9EYXRhRmllbGQiLCJzRW50aXR5U2V0TmFtZSIsInNFZGl0YWJsZUNvbnRleHRzIiwiYWRkU2luZ2xlUXVvdGVzIiwiQWN0aW9uIiwic0RhdGFGaWVsZEVudW1NZW1iZXIiLCJJbnZvY2F0aW9uR3JvdXBpbmciLCJzSW52b2NhdGlvbkdyb3VwIiwib1BhcmFtcyIsImNvbnRleHRzIiwiZW50aXR5U2V0TmFtZSIsImludm9jYXRpb25Hcm91cGluZyIsIm1vZGVsIiwiTGFiZWwiLCJpc05hdmlnYWJsZSIsImRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiIsImdldFByZXNzRXhwcmVzc2lvbkZvckZvb3RlckFubm90YXRpb25BY3Rpb24iLCJkYXRhRmllbGRNb2RlbFBhdGgiLCJoZWFkZXJBY3Rpb24iLCJhY3Rpb25Db250ZXh0cyIsImdldFByZXNzRXhwcmVzc2lvbkZvclByaW1hcnlBY3Rpb24iLCJwb3NpdGl2ZUFjdGlvblZpc2libGUiLCJwb3NpdGl2ZUFjdGlvbkVuYWJsZWQiLCJlZGl0QWN0aW9uVmlzaWJsZSIsImVkaXRBY3Rpb25FbmFibGVkIiwic0FjdGlvbkNvbnRleHRzIiwidG9TdHJpbmciLCJvQ29uZGl0aW9ucyIsImdldFN0YXNoYWJsZUhCb3hCaW5kaW5nIiwib0hlYWRlckZhY2V0IiwiRmFjZXQiLCJ0YXJnZXRBbm5vdGF0aW9uVHlwZSIsInRhcmdldEFubm90YXRpb25WYWx1ZSIsImdldEhlYWRlckZvcm1IYm94UmVuZGVyVHlwZSIsImdldERlZmF1bHRBY3Rpb25IYW5kbGVyIiwib0N0eCIsIm9EYXRhRmllbGRGb3JEZWZhdWx0QWN0aW9uIiwiZGVmYXVsdEFjdGlvbkNvbnRleHRPckVudGl0eVNldCIsImRlZmF1bHRBY3Rpb24iLCJjb21tYW5kIiwicHJlc3MiLCJub1dyYXAiLCJidWlsZEFjdGlvbldyYXBwZXIiLCJpZCIsImlvRXgiLCJpc1Zpc3VhbGl6YXRpb25Jc1BhcnRPZlByZXZpZXciLCJzdWJTZWN0aW9uIiwiaXNQYXJ0T2ZQcmV2aWV3IiwicHJlc2VudGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRGb290ZXJWaXNpYmlsaXR5RXhwcmVzc2lvbiIsImNvbnRleHQiLCJmb290ZXJBY3Rpb25zIiwibWV0YU1vZGVsIiwiZ2V0SW50ZXJmYWNlIiwiZ2V0TW9kZWwiLCJfZ2VuZXJhdGVCaW5kaW5nc0ZvckFjdGlvbnMiLCJhY3Rpb25zIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJnZXRBY3Rpb25Nb2RlbFBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsImFjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZGV0ZXJtaW5pbmdBY3Rpb25zIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsIm1hbmlmZXN0QWN0aW9uQmluZGluZ3MiLCJkZXRlcm1pbmluZ0FjdGlvbkJpbmRpbmdzIiwiaXNOb3RIaWRkZW5EZXRlcm1pbmluZ0FjdGlvbiIsImFjdGlvbkNvbnRleHRNb2RlbFBhdGgiLCJnZXRIZWFkZXJMZXZlbCIsImlzTW9yZUNvbnRlbnQiLCJzaG93U3ViU2VjdGlvblRpdGxlIiwibGV2ZWwiLCJkYXRhVmlzdWFsaXphdGlvblRpdGxlVmlzaWJsZSIsInJlcXVpcmVzSUNvbnRleHQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk9iamVjdFBhZ2VUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEZvcm1hdHRlcnMgZm9yIHRoZSBPYmplY3QgUGFnZVxuaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHksIFNpbmdsZXRvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRDaGFydCxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRGVmYXVsdCxcblx0RGF0YUZpZWxkRm9yQWN0aW9uLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RmFjZXQsXG5cdEhlYWRlckluZm9UeXBlLFxuXHRQcmVzZW50YXRpb25WYXJpYW50XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdG5vdCxcblx0b3IsXG5cdHBhdGhJbk1vZGVsLFxuXHRyZXNvbHZlQmluZGluZ1N0cmluZ1xufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgTWljcm9DaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIHR5cGUgQ29udHJvbENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uLCBDdXN0b21BY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEFubm90YXRpb25Gb3JtRWxlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9Gb3JtXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkR3JvdXBGYWNldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL09iamVjdFBhZ2UvSGVhZGVyRmFjZXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9TdWJTZWN0aW9uXCI7XG5pbXBvcnQgeyBEcmFmdCwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdldFRpdGxlQmluZGluZ0V4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UaXRsZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQge1xuXHRhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uLFxuXHRmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5LFxuXHRnZXRUZXh0QmluZGluZ0V4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgbUxpYnJhcnkgZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB7IGJpbmRpbmdQYXJzZXIgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdE91dGJvdW5kRW50cnkgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCB0eXBlIHsgSUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBPRGF0YU1vZGVsQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbmNvbnN0IEJ1dHRvblR5cGUgPSBtTGlicmFyeS5CdXR0b25UeXBlO1xuXG5leHBvcnQgY29uc3QgZ2V0RXhwcmVzc2lvbkZvclRpdGxlID0gZnVuY3Rpb24gKFxuXHRmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0dmlld0RhdGE6IFZpZXdEYXRhLFxuXHRoZWFkZXJJbmZvPzogSGVhZGVySW5mb1R5cGVcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0cmV0dXJuIGdldFRpdGxlQmluZGluZ0V4cHJlc3Npb24oXG5cdFx0ZnVsbENvbnRleHRQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRcdGdldFRleHRCaW5kaW5nRXhwcmVzc2lvbixcblx0XHR1bmRlZmluZWQsXG5cdFx0aGVhZGVySW5mbyxcblx0XHR2aWV3RGF0YVxuXHQpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGV4cHJlc3Npb24gZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3QgcGFnZS5cbiAqIEBwYXJhbSBmdWxsQ29udGV4dFBhdGggVGhlIGZ1bGwgY29udGV4dCBwYXRoIHVzZWQgdG8gcmVhY2ggdGhhdCBvYmplY3QgcGFnZVxuICogQHBhcmFtIG9IZWFkZXJJbmZvIFRoZSBAVUkuSGVhZGVySW5mbyBhbm5vdGF0aW9uIGNvbnRlbnRcbiAqIEBwYXJhbSBvSGVhZGVySW5mby5EZXNjcmlwdGlvblxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIG9iamVjdCBwYWdlIGRlc2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHByZXNzaW9uRm9yRGVzY3JpcHRpb24gPSBmdW5jdGlvbiAoXG5cdGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxFbnRpdHlTZXQ+LFxuXHRvSGVhZGVySW5mbz86IEhlYWRlckluZm9UeXBlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGxldCBkZXNjcmlwdGlvbkJpbmRpbmcgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKG9IZWFkZXJJbmZvPy5EZXNjcmlwdGlvbiBhcyBEYXRhRmllbGRUeXBlcyk/LlZhbHVlKTtcblx0aWYgKChvSGVhZGVySW5mbz8uRGVzY3JpcHRpb24gYXMgRGF0YUZpZWxkVHlwZXMpPy5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dD8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQpIHtcblx0XHQvLyBJbiBjYXNlIGFuIGV4cGxpY2l0IHRleHQgYXJyYW5nZW1lbnQgd2FzIHNldCB3ZSBtYWtlIHVzZSBvZiBpdCBpbiB0aGUgZGVzY3JpcHRpb24gYXMgd2VsbFxuXHRcdGRlc2NyaXB0aW9uQmluZGluZyA9IGFkZFRleHRBcnJhbmdlbWVudFRvQmluZGluZ0V4cHJlc3Npb24oZGVzY3JpcHRpb25CaW5kaW5nLCBmdWxsQ29udGV4dFBhdGgpO1xuXHR9XG5cdGNvbnN0IGRlc2NyaXB0aW9uID0gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0VmFsdWVSZWN1cnNpdmVseShkZXNjcmlwdGlvbkJpbmRpbmcsIGZ1bGxDb250ZXh0UGF0aCkpO1xuXHRyZXR1cm4gZGVzY3JpcHRpb24gPT09IFwidW5kZWZpbmVkXCIgPyBcIlwiIDogZGVzY3JpcHRpb247XG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgZXhwcmVzc2lvbiBmb3IgdGhlIHNhdmUgYnV0dG9uLlxuICogQHBhcmFtIG9WaWV3RGF0YSBUaGUgY3VycmVudCB2aWV3IGRhdGFcbiAqIEBwYXJhbSBmdWxsQ29udGV4dFBhdGggVGhlIHBhdGggdXNlZCB1cCB1bnRpbCBoZXJlXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHRoYXQgc2hvd3MgdGhlIHJpZ2h0IHNhdmUgYnV0dG9uIHRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25Gb3JTYXZlQnV0dG9uID0gZnVuY3Rpb24gKFxuXHRvVmlld0RhdGE6IFZpZXdEYXRhLFxuXHRmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RW50aXR5U2V0PlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBzYXZlQnV0dG9uVGV4dCA9IG9WaWV3RGF0YS5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX09QX09CSkVDVF9QQUdFX1NBVkVcIik7XG5cdGNvbnN0IGNyZWF0ZUJ1dHRvblRleHQgPSBvVmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9DUkVBVEVcIik7XG5cdGxldCBzYXZlRXhwcmVzc2lvbjtcblxuXHRpZiAoKGZ1bGxDb250ZXh0UGF0aC5zdGFydGluZ0VudGl0eVNldCBhcyBFbnRpdHlTZXQpLmFubm90YXRpb25zLlNlc3Npb24/LlN0aWNreVNlc3Npb25TdXBwb3J0ZWQpIHtcblx0XHQvLyBJZiB3ZSdyZSBpbiBzdGlja3kgbW9kZSBBTkQgdGhlIHVpIGlzIGluIGNyZWF0ZSBtb2RlLCBzaG93IENyZWF0ZSwgZWxzZSBzaG93IFNhdmVcblx0XHRzYXZlRXhwcmVzc2lvbiA9IGlmRWxzZShVSS5Jc0NyZWF0ZU1vZGUsIGNyZWF0ZUJ1dHRvblRleHQsIHNhdmVCdXR0b25UZXh0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBJZiB3ZSdyZSBpbiBkcmFmdCBBTkQgdGhlIGRyYWZ0IGlzIGEgbmV3IG9iamVjdCAoIUlzQWN0aXZlRW50aXR5ICYmICFIYXNBY3RpdmVFbnRpdHkpLCBzaG93IGNyZWF0ZSwgZWxzZSBzaG93IHNhdmVcblx0XHRzYXZlRXhwcmVzc2lvbiA9IGlmRWxzZShEcmFmdC5Jc05ld09iamVjdCwgY3JlYXRlQnV0dG9uVGV4dCwgc2F2ZUJ1dHRvblRleHQpO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihzYXZlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgZXhwcmVzc2lvbiBvZiB0aGUgbGFiZWwgZm9yIGEgZmllbGQgaW50byBhIGhlYWRlciBmb3JtLlxuICogQHBhcmFtIGxhYmVsIFRoZSBsYWJlbCBvZiB0aGUgaGVhZGVyIGZvcm0gaW4gYW4gb2JqZWN0IHBhZ2UuXG4gKiBAcGFyYW0gdmlld0RhdGEgVGhlIGN1cnJlbnQgdmlldyBkYXRhLlxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRyYW5zbGF0ZWQgbGFiZWwgb2YgdGhlIG9mIHRoZSBoZWFkZXIgZm9ybSBpbiBhbiBvYmplY3QgcGFnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25Gb3JMYWJlbE9uSGVhZGVyRm9ybSA9IGZ1bmN0aW9uIChsYWJlbDogU3RyaW5nLCB2aWV3RGF0YTogVmlld0RhdGEpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdHJldHVybiB2aWV3RGF0YS5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJIRUFERVJfRk9STV9MQUJFTFwiLCBbbGFiZWxdKTtcbn07XG5cbi8qKlxuICogTWV0aG9kIHJldHVybnMgV2hldGhlciB0aGUgYWN0aW9uIHR5cGUgaXMgbWFuaWZlc3Qgb3Igbm90LlxuICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIG9iamVjdFxuICogQHJldHVybnMgYHRydWVgIGlmIGFjdGlvbiBpcyBjb21pbmcgZnJvbSBtYW5pZmVzdCwgYGZhbHNlYCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTWFuaWZlc3RBY3Rpb24gPSBmdW5jdGlvbiAoYWN0aW9uOiBCYXNlQWN0aW9uIHwgQ3VzdG9tQWN0aW9uKTogYWN0aW9uIGlzIEN1c3RvbUFjdGlvbiB7XG5cdGNvbnN0IG5vbk1hbmlmZXN0QWN0aW9ucyA9IFtcblx0XHRcIlByaW1hcnlcIixcblx0XHRcIkRlZmF1bHRBcHBseVwiLFxuXHRcdFwiU2Vjb25kYXJ5XCIsXG5cdFx0XCJGb3JBY3Rpb25cIixcblx0XHRcIkZvck5hdmlnYXRpb25cIixcblx0XHRcIlN3aXRjaFRvQWN0aXZlT2JqZWN0XCIsXG5cdFx0XCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIsXG5cdFx0XCJEcmFmdEFjdGlvbnNcIixcblx0XHRcIkNvcHlcIixcblx0XHRcIlN0YW5kYXJkXCJcblx0XTtcblx0cmV0dXJuICFub25NYW5pZmVzdEFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uLnR5cGUgPz8gXCJcIik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBjb21waWxlZCBleHByZXNzaW9uIHRvIGRldGVybWluZSBFbXBoYXNpemVkICBidXR0b24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eSBhY3Jvc3MgYWxsIGFjdGlvbnNcbiAqIElmIGNyaXRpY2FsIGFjdGlvbiBpcyByZW5kZXJlZCwgaXRzIGNvbnNpZGVyZWQgdG8gYmUgdGhlIHByaW1hcnkgYWN0aW9uLiBIZW5jZSB0ZW1wbGF0ZSdzIGRlZmF1bHQgcHJpbWFyeSBhY3Rpb24gaXMgc2V0IGJhY2sgdG8gRGVmYXVsdC5cbiAqIEBwYXJhbSBkYXRhQ29udGV4dFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGggcmVsYXRlZCB0byB0aGUgY29udGV4dFxuICogQHJldHVybnMgQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgaWYgYnV0dG9uIHR5cGUgaXMgRGVmYXVsdCBvciBFbXBoYXNpemVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRkYXRhQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RW50aXR5U2V0IHwgTmF2aWdhdGlvblByb3BlcnR5IHwgU2luZ2xldG9uPlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBpZGVudGlmaWNhdGlvbiA9IGRhdGFDb250ZXh0UGF0aC50YXJnZXRFbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LklkZW50aWZpY2F0aW9uO1xuXHRjb25zdCBkYXRhRmllbGRzV2l0aENyaXRpY2FsaXR5ID1cblx0XHRpZGVudGlmaWNhdGlvbj8uZmlsdGVyKChkYXRhRmllbGQpID0+IGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uICYmIGRhdGFGaWVsZC5Dcml0aWNhbGl0eSkgfHwgW107XG5cblx0Y29uc3QgZGF0YUZpZWxkc0JpbmRpbmdFeHByZXNzaW9ucyA9IGRhdGFGaWVsZHNXaXRoQ3JpdGljYWxpdHkubGVuZ3RoXG5cdFx0PyBkYXRhRmllbGRzV2l0aENyaXRpY2FsaXR5Lm1hcCgoZGF0YUZpZWxkKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5Dcml0aWNhbGl0eSk7XG5cdFx0XHRcdHJldHVybiBhbmQoXG5cdFx0XHRcdFx0bm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSksXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChjcml0aWNhbGl0eVZpc2libGVCaW5kaW5nRXhwcmVzc2lvbiwgXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIiksXG5cdFx0XHRcdFx0XHRlcXVhbChjcml0aWNhbGl0eVZpc2libGVCaW5kaW5nRXhwcmVzc2lvbiwgXCIxXCIpLFxuXHRcdFx0XHRcdFx0ZXF1YWwoY3JpdGljYWxpdHlWaXNpYmxlQmluZGluZ0V4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIDEpLFxuXHRcdFx0XHRcdFx0ZXF1YWwoY3JpdGljYWxpdHlWaXNpYmxlQmluZGluZ0V4cHJlc3Npb24sIFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpLFxuXHRcdFx0XHRcdFx0ZXF1YWwoY3JpdGljYWxpdHlWaXNpYmxlQmluZGluZ0V4cHJlc3Npb24sIFwiM1wiKSxcblx0XHRcdFx0XHRcdGVxdWFsKGNyaXRpY2FsaXR5VmlzaWJsZUJpbmRpbmdFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCAzKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHQgIH0pXG5cdFx0OiAoW2NvbnN0YW50KGZhbHNlKV0gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10pO1xuXG5cdC8vIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB2aXNpYmxlIGRhdGFGaWVsZCB3aXRoIGNyaXRpY2FsaXR5IG5lZ2F0aXZlIG9yIHBvc2l0aXZlLCB0aGUgdHlwZSBpcyBzZXQgYXMgR2hvc3Rcblx0Ly8gZWxzZSBpdCBpcyBlbXBoYXNpemVkXG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2Uob3IoLi4uZGF0YUZpZWxkc0JpbmRpbmdFeHByZXNzaW9ucyksIEJ1dHRvblR5cGUuR2hvc3QsIEJ1dHRvblR5cGUuRW1waGFzaXplZCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRCaW5kaW5nID0gZnVuY3Rpb24gKHNQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBzTmF2aWdhdGlvblBhdGggPSBPRGF0YU1vZGVsQW5ub3RhdGlvbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChzUGF0aCk7XG5cdGlmIChzTmF2aWdhdGlvblBhdGgpIHtcblx0XHRyZXR1cm4gXCJ7cGF0aDonXCIgKyBzTmF2aWdhdGlvblBhdGggKyBcIid9XCI7XG5cdH0gZWxzZSB7XG5cdFx0Ly9ubyBuYXZpZ2F0aW9uIHByb3BlcnR5IG5lZWRzIGVtcHR5IG9iamVjdFxuXHRcdHJldHVybiBcIntwYXRoOiAnJ31cIjtcblx0fVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBjaGVjayBpZiBkcmFmdCBwYXR0ZXJuIGlzIHN1cHBvcnRlZC5cbiAqIEBwYXJhbSBlbnRpdHlTZXQgVGhlIGN1cnJlbnQgZW50aXR5IHNldC5cbiAqIEByZXR1cm5zIFJldHVybnMgdGhlIEJvb2xlYW4gdmFsdWUgYmFzZWQgb24gZHJhZnQgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRHJhZnRTdGF0ZSA9IGZ1bmN0aW9uIChlbnRpdHlTZXQ6IEVudGl0eVNldCk6IGJvb2xlYW4ge1xuXHRpZiAoZW50aXR5U2V0LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdD8uRWRpdEFjdGlvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZW50aXR5U2V0IGlzIGEgZHJhZnQgcm9vdCB0aGF0IHN1cHBvcnRzIGNvbGxhYm9yYXRpb24uXG4gKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIGRyYWZ0IHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0NvbGxhYm9yYXRpb25EcmFmdFJvb3QgPSBmdW5jdGlvbiAoZW50aXR5U2V0OiBFbnRpdHlTZXQpOiBib29sZWFuIHtcblx0aWYgKGVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBmb3IgdGhlIFN3aXRjaFRvQWN0aXZlIGJ1dHRvbiBpbiB0aGUgb2JqZWN0IHBhZ2Ugb3Igc3Vib2JqZWN0IHBhZ2UuXG4gKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIHRoZSBkcmFmdCBzdGF0ZVxuICovXG5leHBvcnQgY29uc3QgZ2V0U3dpdGNoVG9BY3RpdmVWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGVudGl0eVNldDogRW50aXR5U2V0KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBib29sZWFuIHtcblx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0aWYgKGNoZWNrQ29sbGFib3JhdGlvbkRyYWZ0Um9vdChlbnRpdHlTZXQpKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpLCBVSS5Jc0VkaXRhYmxlKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0YW5kKGVxdWFsKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRJc0NyZWF0ZWRCeU1lXCIpLCB0cnVlKSwgVUkuSXNFZGl0YWJsZSwgbm90KFVJLklzQ3JlYXRlTW9kZSkpXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IGZvciB0aGUgU3dpdGNoVG9EcmFmdCBidXR0b24gaW4gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlLlxuICogQHBhcmFtIGVudGl0eVNldCBUaGUgY3VycmVudCBlbnRpdHkgc2V0LlxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB0aGUgZHJhZnQgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFN3aXRjaFRvRHJhZnRWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGVudGl0eVNldDogRW50aXR5U2V0KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBib29sZWFuIHtcblx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0aWYgKGNoZWNrQ29sbGFib3JhdGlvbkRyYWZ0Um9vdChlbnRpdHlTZXQpKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIiksIG5vdChVSS5Jc0VkaXRhYmxlKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGFuZChcblx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSwgdHJ1ZSksXG5cdFx0XHRcdFx0bm90KFVJLklzRWRpdGFibGUpLFxuXHRcdFx0XHRcdG5vdChVSS5Jc0NyZWF0ZU1vZGUpLFxuXHRcdFx0XHRcdHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBmb3IgdGhlIFN3aXRjaERyYWZ0QW5kQWN0aXZlIGJ1dHRvbiBpbiB0aGUgb2JqZWN0IHBhZ2Ugb3Igc3Vib2JqZWN0IHBhZ2UuXG4gKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGJhc2VkIG9uIHRoZSBkcmFmdCBzdGF0ZVxuICovXG5leHBvcnQgY29uc3QgZ2V0U3dpdGNoRHJhZnRBbmRBY3RpdmVWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGVudGl0eVNldDogRW50aXR5U2V0KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBib29sZWFuIHtcblx0aWYgKGNoZWNrRHJhZnRTdGF0ZShlbnRpdHlTZXQpKSB7XG5cdFx0aWYgKGNoZWNrQ29sbGFib3JhdGlvbkRyYWZ0Um9vdChlbnRpdHlTZXQpKSB7XG5cdFx0XHQvLyBzb21laG93IGNoZWNraW5nIGhhc0RyYWZ0RW50aXR5IGFuZCBoYXNBY3RpdmVFbnRpdHkgZG9lcyBub3Qgd29yaywgc28gd2UgY2hlY2sgSXNBY3RpdmVFbnRpdHkgZmlyc3Rcblx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UocGF0aEluTW9kZWwoXCJJc0FjdGl2ZUVudGl0eVwiKSwgcGF0aEluTW9kZWwoXCJIYXNEcmFmdEVudGl0eVwiKSwgcGF0aEluTW9kZWwoXCJIYXNBY3RpdmVFbnRpdHlcIikpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChlcXVhbChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSwgdHJ1ZSksIG5vdChVSS5Jc0NyZWF0ZU1vZGUpKSk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBmaW5kIGFuIGFjdGlvbiBmcm9tIHRoZSBhcnJheSBvZiBoZWFkZXIgYWN0aW9ucyBpbiB0aGUgY29udmVydGVyIGNvbnRleHQuXG4gKiBAcGFyYW0gYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zIEFycmF5IG9mICdoZWFkZXInIGFjdGlvbnMgb24gdGhlIG9iamVjdCBwYWdlLlxuICogQHBhcmFtIHNBY3Rpb25UeXBlIFRoZSBhY3Rpb24gdHlwZVxuICogQHJldHVybnMgVGhlIGFjdGlvbiB3aXRoIHRoZSBtYXRjaGluZyBhY3Rpb24gdHlwZVxuICovXG5leHBvcnQgY29uc3QgX2ZpbmRBY3Rpb24gPSBmdW5jdGlvbiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10sIHNBY3Rpb25UeXBlOiBzdHJpbmcpOiBCYXNlQWN0aW9uIHwgdW5kZWZpbmVkIHtcblx0bGV0IG9BY3Rpb246IEJhc2VBY3Rpb24gfCB1bmRlZmluZWQ7XG5cdGlmIChhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMgJiYgYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLmxlbmd0aCkge1xuXHRcdG9BY3Rpb24gPSBhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMuZmluZChmdW5jdGlvbiAob0hlYWRlckFjdGlvbjogQmFzZUFjdGlvbikge1xuXHRcdFx0cmV0dXJuIG9IZWFkZXJBY3Rpb24udHlwZSA9PT0gc0FjdGlvblR5cGU7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIG9BY3Rpb247XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IGZvciB0aGUgRGVsZXRlIGJ1dHRvbiBvbiB0aGUgb2JqZWN0IHBhZ2Ugb3Igc3Vib2JqZWN0IHBhZ2UgaW4gY2FzZSBvZiBhIENvbW1hbmQgRXhlY3V0aW9uLlxuICogQHBhcmFtIGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucyBBcnJheSBvZiBoZWFkZXIgYWN0aW9ucyBvbiB0aGUgb2JqZWN0IHBhZ2VcbiAqIEByZXR1cm5zIFJldHVybnMgZXhwcmVzc2lvbiBiaW5kaW5nIG9yIEJvb2xlYW4gdmFsdWUgZnJvbSB0aGUgY29udmVydGVyIG91dHB1dFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGVsZXRlQ29tbWFuZEV4ZWN1dGlvbkVuYWJsZWQgPSBmdW5jdGlvbiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvRGVsZXRlQWN0aW9uID0gX2ZpbmRBY3Rpb24oYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLCBcIlNlY29uZGFyeVwiKTtcblx0cmV0dXJuIG9EZWxldGVBY3Rpb24gPyBvRGVsZXRlQWN0aW9uLmVuYWJsZWQgOiBcImZhbHNlXCI7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IGZvciB0aGUgRGVsZXRlIGJ1dHRvbiBvbiB0aGUgb2JqZWN0IHBhZ2Ugb3Igc3Vib2JqZWN0IHBhZ2UgaW4gY2FzZSBvZiBhIENvbW1hbmQgRXhlY3V0aW9uLlxuICogQHBhcmFtIGFDb252ZXJ0ZXJDb250ZXh0SGVhZGVyQWN0aW9ucyBBcnJheSBvZiBoZWFkZXIgYWN0aW9ucyBvbiB0aGUgb2JqZWN0IHBhZ2VcbiAqIEByZXR1cm5zIFJldHVybnMgZXhwcmVzc2lvbiBiaW5kaW5nIG9yIEJvb2xlYW4gdmFsdWUgZnJvbSB0aGUgY29udmVydGVyIG91dHB1dFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGVsZXRlQ29tbWFuZEV4ZWN1dGlvblZpc2libGUgPSBmdW5jdGlvbiAoYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvRGVsZXRlQWN0aW9uID0gX2ZpbmRBY3Rpb24oYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLCBcIlNlY29uZGFyeVwiKTtcblx0cmV0dXJuIG9EZWxldGVBY3Rpb24gPyBvRGVsZXRlQWN0aW9uLnZpc2libGUgOiBcImZhbHNlXCI7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IGZvciB0aGUgRWRpdCBidXR0b24gb24gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlIGluIGNhc2Ugb2YgYSBDb21tYW5kIEV4ZWN1dGlvbi5cbiAqIEBwYXJhbSBhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMgQXJyYXkgb2YgaGVhZGVyIGFjdGlvbnMgb24gdGhlIG9iamVjdCBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbnZlcnRlciBvdXRwdXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRDb21tYW5kRXhlY3V0aW9uVmlzaWJsZSA9IGZ1bmN0aW9uIChhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG9FZGl0QWN0aW9uID0gX2ZpbmRBY3Rpb24oYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLCBcIlByaW1hcnlcIik7XG5cdHJldHVybiBvRWRpdEFjdGlvbiA/IG9FZGl0QWN0aW9uLnZpc2libGUgOiBcImZhbHNlXCI7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IGZvciB0aGUgRWRpdCBidXR0b24gb24gdGhlIG9iamVjdCBwYWdlIG9yIHN1Ym9iamVjdCBwYWdlIGluIGNhc2Ugb2YgYSBDb21tYW5kIEV4ZWN1dGlvbi5cbiAqIEBwYXJhbSBhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnMgQXJyYXkgb2YgaGVhZGVyIGFjdGlvbnMgb24gdGhlIG9iamVjdCBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGV4cHJlc3Npb24gYmluZGluZyBvciBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbnZlcnRlciBvdXRwdXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRDb21tYW5kRXhlY3V0aW9uRW5hYmxlZCA9IGZ1bmN0aW9uIChhQ29udmVydGVyQ29udGV4dEhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG9FZGl0QWN0aW9uID0gX2ZpbmRBY3Rpb24oYUNvbnZlcnRlckNvbnRleHRIZWFkZXJBY3Rpb25zLCBcIlByaW1hcnlcIik7XG5cdHJldHVybiBvRWRpdEFjdGlvbiA/IG9FZGl0QWN0aW9uLmVuYWJsZWQgOiBcImZhbHNlXCI7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgRWRpdEFjdGlvbiBmcm9tIHRoZSBiYXNlZCBvbiBhIGRyYWZ0LWVuYWJsZWQgYXBwbGljYXRpb24gb3IgYSBzdGlja3kgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0gW29FbnRpdHlTZXRdIFRoZSB2YWx1ZSBmcm9tIHRoZSBleHByZXNzaW9uLlxuICogQHJldHVybnMgUmV0dXJucyBleHByZXNzaW9uIGJpbmRpbmcgb3IgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB2UmF3VmFsdWUgJiBvRHJhZnROb2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0QWN0aW9uID0gZnVuY3Rpb24gKG9FbnRpdHlTZXQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRjb25zdCBzUGF0aCA9IG9FbnRpdHlTZXQuZ2V0UGF0aCgpO1xuXHRjb25zdCBhUGF0aHMgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdGNvbnN0IHJvb3RFbnRpdHlTZXRQYXRoID0gXCIvXCIgKyBhUGF0aHNbMV07XG5cdC8vIGdldCB0aGUgZWRpdCBhY3Rpb24gZnJvbSByb290IGVudGl0eSBzZXRzXG5cdGNvbnN0IHJvb3RFbnRpdHlTZXRBbm5ub3RhdGlvbnMgPSBvRW50aXR5U2V0LmdldE9iamVjdChyb290RW50aXR5U2V0UGF0aCArIFwiQFwiKTtcblx0Y29uc3QgYkRyYWZ0Um9vdCA9IHJvb3RFbnRpdHlTZXRBbm5ub3RhdGlvbnMuaGFzT3duUHJvcGVydHkoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiKTtcblx0Y29uc3QgYkRyYWZ0Tm9kZSA9IHJvb3RFbnRpdHlTZXRBbm5ub3RhdGlvbnMuaGFzT3duUHJvcGVydHkoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiKTtcblx0Y29uc3QgYlN0aWNreVNlc3Npb24gPSByb290RW50aXR5U2V0QW5ubm90YXRpb25zLmhhc093blByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFwiKTtcblx0bGV0IHNBY3Rpb25OYW1lO1xuXHRpZiAoYkRyYWZ0Um9vdCkge1xuXHRcdHNBY3Rpb25OYW1lID0gb0VudGl0eVNldC5nZXRPYmplY3QoYCR7cm9vdEVudGl0eVNldFBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3QvRWRpdEFjdGlvbmApO1xuXHR9IGVsc2UgaWYgKGJEcmFmdE5vZGUpIHtcblx0XHRzQWN0aW9uTmFtZSA9IG9FbnRpdHlTZXQuZ2V0T2JqZWN0KGAke3Jvb3RFbnRpdHlTZXRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlL0VkaXRBY3Rpb25gKTtcblx0fSBlbHNlIGlmIChiU3RpY2t5U2Vzc2lvbikge1xuXHRcdHNBY3Rpb25OYW1lID0gb0VudGl0eVNldC5nZXRPYmplY3QoYCR7cm9vdEVudGl0eVNldFBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZC9FZGl0QWN0aW9uYCk7XG5cdH1cblx0cmV0dXJuICFzQWN0aW9uTmFtZSA/IHNBY3Rpb25OYW1lIDogYCR7cm9vdEVudGl0eVNldFBhdGh9LyR7c0FjdGlvbk5hbWV9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JlYWRPbmx5RnJvbVN0YXRpY0Fubm90YXRpb25zID0gZnVuY3Rpb24gKG9Bbm5vdGF0aW9ucz86IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMsIG9GaWVsZENvbnRyb2w/OiBzdHJpbmcpOiBib29sZWFuIHtcblx0bGV0IGJDb21wdXRlZCwgYkltbXV0YWJsZSwgYlJlYWRPbmx5O1xuXG5cdGlmIChvQW5ub3RhdGlvbnMgJiYgb0Fubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkXCJdKSB7XG5cdFx0YkNvbXB1dGVkID0gKG9Bbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSBhcyB7IEJvb2w/OiBzdHJpbmcgfSkuQm9vbFxuXHRcdFx0PyAob0Fubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkXCJdIGFzIHsgQm9vbD86IHN0cmluZyB9KS5Cb29sID09IFwidHJ1ZVwiXG5cdFx0XHQ6IHRydWU7XG5cdH1cblx0aWYgKG9Bbm5vdGF0aW9ucyAmJiBvQW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNvcmUuVjEuSW1tdXRhYmxlXCJdKSB7XG5cdFx0YkltbXV0YWJsZSA9IChvQW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNvcmUuVjEuSW1tdXRhYmxlXCJdIGFzIHsgQm9vbD86IHN0cmluZyB9KS5Cb29sXG5cdFx0XHQ/IChvQW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNvcmUuVjEuSW1tdXRhYmxlXCJdIGFzIHsgQm9vbD86IHN0cmluZyB9KS5Cb29sID09IFwidHJ1ZVwiXG5cdFx0XHQ6IHRydWU7XG5cdH1cblx0YlJlYWRPbmx5ID0gYkNvbXB1dGVkIHx8IGJJbW11dGFibGU7XG5cblx0aWYgKG9GaWVsZENvbnRyb2wpIHtcblx0XHRiUmVhZE9ubHkgPSBiUmVhZE9ubHkgfHwgb0ZpZWxkQ29udHJvbCA9PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWVsZENvbnRyb2xUeXBlL1JlYWRPbmx5XCI7XG5cdH1cblx0aWYgKGJSZWFkT25seSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IHJlYWRPbmx5RXhwcmVzc2lvbkZyb21EeW5hbWljQW5ub3RhdGlvbnMgPSBmdW5jdGlvbiAob0ZpZWxkQ29udHJvbD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBzSXNGaWVsZENvbnRyb2xQYXRoUmVhZE9ubHk7XG5cdGlmIChvRmllbGRDb250cm9sKSB7XG5cdFx0aWYgKGJpbmRpbmdQYXJzZXIob0ZpZWxkQ29udHJvbCkpIHtcblx0XHRcdHNJc0ZpZWxkQ29udHJvbFBhdGhSZWFkT25seSA9IFwiJVwiICsgb0ZpZWxkQ29udHJvbCArIFwiID09PSAxIFwiO1xuXHRcdH1cblx0fVxuXHRpZiAoc0lzRmllbGRDb250cm9sUGF0aFJlYWRPbmx5KSB7XG5cdFx0cmV0dXJuIFwiez0gXCIgKyBzSXNGaWVsZENvbnRyb2xQYXRoUmVhZE9ubHkgKyBcIj8gZmFsc2UgOiB0cnVlIH1cIjtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59O1xuXG4vKlxuICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBleHByZXNzaW9uIGZvciBjaGFydCBUaXRsZSBQcmVzc1xuICpcbiAqIEBmdW5jdGlvbndcbiAqIEBwYXJhbSB7b0NvbmZpZ3VyYXRpb259IFtvQ29uZmlndXJhdGlvbnNdIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmcm9tIG1hbmlmZXN0XG4gKiAgQHBhcmFtIHtvTWFuaWZlc3R9IFtvTWFuaWZlc3RdIE91dGJvdW5kcyBmcm9tIG1hbmlmZXN0XG4gKiByZXR1cm5zIHtTdHJpbmd9IFtzQ29sbGVjdGlvbk5hbWVdIENvbGxlY3Rpb24gTmFtZSBvZiB0aGUgTWljcm8gQ2hhcnRcbiAqXG4gKiByZXR1cm5zIHtTdHJpbmd9IFtFeHByZXNzaW9uXSBIYW5kbGVyIEV4cHJlc3Npb24gZm9yIHRoZSB0aXRsZSBwcmVzc1xuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25Gb3JNaWNyb0NoYXJ0VGl0bGVQcmVzcyA9IGZ1bmN0aW9uIChcblx0b0NvbmZpZ3VyYXRpb246IENvbnRyb2xDb25maWd1cmF0aW9uLFxuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aDogc3RyaW5nLFxuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aERhdE1vZGVsT2JqZWN0OiBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdG9NYW5pZmVzdE91dGJvdW5kOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdE91dGJvdW5kRW50cnk+LFxuXHRzQ29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGggPSBnZXRNaWNyb0NoYXJ0Q29udHJvbENvbmZpZ3VyYXRpb25QYXRoKHRhcmdldEFubm90YXRpb25QYXRoLCB0YXJnZXRBbm5vdGF0aW9uUGF0aERhdE1vZGVsT2JqZWN0LCBzQ29sbGVjdGlvbk5hbWUpO1xuXHRjb25zdCBuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbiA9IChvQ29uZmlndXJhdGlvbj8uW3RhcmdldEFubm90YXRpb25QYXRoXSBhcyBNaWNyb0NoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uKT8uW1wibmF2aWdhdGlvblwiXTtcblx0aWYgKG5hdmlnYXRpb25Db25maWd1cmF0aW9uKSB7XG5cdFx0aWYgKFxuXHRcdFx0KG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl0gJiYgbmF2aWdhdGlvbkNvbmZpZ3VyYXRpb25bXCJ0YXJnZXRPdXRib3VuZFwiXVtcIm91dGJvdW5kXCJdKSB8fFxuXHRcdFx0KG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl0gJiZcblx0XHRcdFx0bmF2aWdhdGlvbkNvbmZpZ3VyYXRpb25bXCJ0YXJnZXRPdXRib3VuZFwiXVtcIm91dGJvdW5kXCJdICYmXG5cdFx0XHRcdG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0U2VjdGlvbnNcIl0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcIi5oYW5kbGVycy5vbkRhdGFQb2ludFRpdGxlUHJlc3NlZCgkY29udHJvbGxlciwgJHskc291cmNlPi99LCdcIiArXG5cdFx0XHRcdEpTT04uc3RyaW5naWZ5KG9NYW5pZmVzdE91dGJvdW5kKSArXG5cdFx0XHRcdFwiJywnXCIgK1xuXHRcdFx0XHRuYXZpZ2F0aW9uQ29uZmlndXJhdGlvbltcInRhcmdldE91dGJvdW5kXCJdW1wib3V0Ym91bmRcIl0gK1xuXHRcdFx0XHRcIicsJ1wiICtcblx0XHRcdFx0c0NvbGxlY3Rpb25OYW1lICtcblx0XHRcdFx0XCInIClcIlxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKG5hdmlnYXRpb25Db25maWd1cmF0aW9uW1widGFyZ2V0U2VjdGlvbnNcIl0pIHtcblx0XHRcdHJldHVybiBcIi5oYW5kbGVycy5uYXZpZ2F0ZVRvU3ViU2VjdGlvbigkY29udHJvbGxlciwgJ1wiICsgSlNPTi5zdHJpbmdpZnkobmF2aWdhdGlvbkNvbmZpZ3VyYXRpb25bXCJ0YXJnZXRTZWN0aW9uc1wiXSkgKyBcIicpXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG59O1xuXG4vKlxuICogRnVuY3Rpb24gdG8gcmVuZGVyIENoYXJ0IFRpdGxlIGFzIExpbmtcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7b0NvbnRyb2xDb25maWd1cmF0aW9ufSBbb0NvbmZpZ3VyYXRpb25zXSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZnJvbSBtYW5pZmVzdFxuICogcmV0dXJucyB7U3RyaW5nfSBbc0tleV0gRm9yIHRoZSBUYXJnZXRPdXRib3VuZCBhbmQgVGFyZ2V0U2VjdGlvblxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pY3JvQ2hhcnRUaXRsZUFzTGluayA9IGZ1bmN0aW9uIChcblx0b0NvbnRyb2xDb25maWd1cmF0aW9uOiBDb250cm9sQ29uZmlndXJhdGlvbixcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGg6IHN0cmluZyxcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGhEYXRNb2RlbE9iamVjdDogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb2xsZWN0aW9uTmFtZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aCA9IGdldE1pY3JvQ2hhcnRDb250cm9sQ29uZmlndXJhdGlvblBhdGgodGFyZ2V0QW5ub3RhdGlvblBhdGgsIHRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3QsIGNvbGxlY3Rpb25OYW1lKTtcblx0Y29uc3QgdGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24gPSAob0NvbnRyb2xDb25maWd1cmF0aW9uPy5bdGFyZ2V0QW5ub3RhdGlvblBhdGhdIGFzIE1pY3JvQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24pPy5bXCJuYXZpZ2F0aW9uXCJdO1xuXHRpZiAoXG5cdFx0dGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24gJiZcblx0XHQodGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb25bXCJ0YXJnZXRPdXRib3VuZFwiXSB8fFxuXHRcdFx0KHRhcmdldENvbnRyb2xDb25maWd1cmF0aW9uW1widGFyZ2V0T3V0Ym91bmRcIl0gJiYgdGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb25bXCJ0YXJnZXRTZWN0aW9uc1wiXSkpXG5cdCkge1xuXHRcdHJldHVybiBcIkV4dGVybmFsXCI7XG5cdH0gZWxzZSBpZiAodGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24gJiYgdGFyZ2V0Q29udHJvbENvbmZpZ3VyYXRpb25bXCJ0YXJnZXRTZWN0aW9uc1wiXSkge1xuXHRcdHJldHVybiBcIkluUGFnZVwiO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIk5vbmVcIjtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pY3JvQ2hhcnRDb250cm9sQ29uZmlndXJhdGlvblBhdGggPSBmdW5jdGlvbiAoXG5cdHRhcmdldEFubm90YXRpb25QYXRoOiBzdHJpbmcsXG5cdHRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3Q6IERhdGFNb2RlbE9iamVjdFBhdGg8Q2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50Pixcblx0Y29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuKTogc3RyaW5nIHtcblx0aWYgKHRhcmdldEFubm90YXRpb25QYXRoRGF0TW9kZWxPYmplY3Q/LnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFR5cGVcIikge1xuXHRcdHRhcmdldEFubm90YXRpb25QYXRoID0gdGFyZ2V0QW5ub3RhdGlvblBhdGhEYXRNb2RlbE9iamVjdC50YXJnZXRPYmplY3Q/LlZpc3VhbGl6YXRpb25zWzBdPy52YWx1ZTtcblx0XHR0YXJnZXRBbm5vdGF0aW9uUGF0aCA9IGNvbGxlY3Rpb25OYW1lID8gYCR7Y29sbGVjdGlvbk5hbWV9LyR7dGFyZ2V0QW5ub3RhdGlvblBhdGh9YCA6IHRhcmdldEFubm90YXRpb25QYXRoO1xuXHR9XG5cdHJldHVybiB0YXJnZXRBbm5vdGF0aW9uUGF0aDtcbn07XG5cbi8qIEdldCBncm91cElkIGZyb20gY29udHJvbCBjb25maWd1cmF0aW9uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gW29Db25maWd1cmF0aW9uc10gY29udHJvbCBjb25maWd1cmF0aW9uIGZyb20gbWFuaWZlc3RcbiAqIEBwYXJhbSB7U3RyaW5nfSBbc0Fubm90YXRpb25QYXRoXSBBbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBjb25maWd1cmF0aW9uXG4gKiBAZGVzY3JpcHRpb24gVXNlZCB0byBnZXQgdGhlIGdyb3VwSWQgZm9yIERhdGFQb2ludHMgYW5kIE1pY3JvQ2hhcnRzIGluIHRoZSBIZWFkZXIuXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBJZEZyb21Db25maWcgPSBmdW5jdGlvbiAoXG5cdG9Db25maWd1cmF0aW9uczogQ29udHJvbENvbmZpZ3VyYXRpb24sXG5cdHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nLFxuXHRzRGVmYXVsdEdyb3VwSWQ/OiBzdHJpbmdcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG9Db25maWd1cmF0aW9uID0gb0NvbmZpZ3VyYXRpb25zW3NBbm5vdGF0aW9uUGF0aF0gYXMgTWljcm9DaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0XHRhQXV0b1BhdHRlcm5zID0gW1wiSGVyb2VzXCIsIFwiRGVjb3JhdGlvblwiLCBcIldvcmtlcnNcIiwgXCJMb25nUnVubmVyc1wiXTtcblx0bGV0IHNHcm91cElkID0gc0RlZmF1bHRHcm91cElkO1xuXHRpZiAoXG5cdFx0b0NvbmZpZ3VyYXRpb24gJiZcblx0XHRvQ29uZmlndXJhdGlvbi5yZXF1ZXN0R3JvdXBJZCAmJlxuXHRcdGFBdXRvUGF0dGVybnMuc29tZShmdW5jdGlvbiAoYXV0b1BhdHRlcm46IHN0cmluZykge1xuXHRcdFx0cmV0dXJuIGF1dG9QYXR0ZXJuID09PSBvQ29uZmlndXJhdGlvbi5yZXF1ZXN0R3JvdXBJZDtcblx0XHR9KVxuXHQpIHtcblx0XHRzR3JvdXBJZCA9IFwiJGF1dG8uXCIgKyBvQ29uZmlndXJhdGlvbi5yZXF1ZXN0R3JvdXBJZDtcblx0fVxuXHRyZXR1cm4gc0dyb3VwSWQ7XG59O1xuXG4vKipcbiAqIEdldHMgZ3JvdXBJZCBmcm9tIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmb3IgbWljcm8gY2hhcnQuXG4gKiBAcGFyYW0gb0NvbnRyb2xDb25maWd1cmF0aW9uIENvbnRyb2wgY29uZmlndXJhdGlvbiBmcm9tIG1hbmlmZXN0XG4gKiBAcGFyYW0gdGFyZ2V0QW5ub3RhdGlvblBhdGggQW5ub3RhdGlvbiBwYXRoIGZvciB0aGUgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHRhcmdldEFubm90YXRpb25QYXRoRGF0YU1vZGVsT2JqZWN0IERhdGFNb2RlbE9iamVjdCBvZiBDaGFydCBvciBQcmVzZW50YXRpb25WYXJpYW50XG4gKiBAcGFyYW0gY29sbGVjdGlvbk5hbWUgQ29sbGVjdGlvbiBOYW1lXG4gKiBAcGFyYW0gc0RlZmF1bHRHcm91cElkIERlZmF1bHQgR3JvdXBJZFxuICogQHJldHVybnMgR3JvdXBJZCBmb3IgbWljcm8gY2hhcnRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEdyb3VwSWRGcm9tQ29uZmlnRm9yTWljcm9DaGFydCA9IGZ1bmN0aW9uIChcblx0b0NvbnRyb2xDb25maWd1cmF0aW9uOiBDb250cm9sQ29uZmlndXJhdGlvbixcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGg6IHN0cmluZyxcblx0dGFyZ2V0QW5ub3RhdGlvblBhdGhEYXRhTW9kZWxPYmplY3Q6IERhdGFNb2RlbE9iamVjdFBhdGg8Q2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50Pixcblx0Y29sbGVjdGlvbk5hbWU6IHN0cmluZyxcblx0c0RlZmF1bHRHcm91cElkPzogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHR0YXJnZXRBbm5vdGF0aW9uUGF0aCA9IGdldE1pY3JvQ2hhcnRDb250cm9sQ29uZmlndXJhdGlvblBhdGgodGFyZ2V0QW5ub3RhdGlvblBhdGgsIHRhcmdldEFubm90YXRpb25QYXRoRGF0YU1vZGVsT2JqZWN0LCBjb2xsZWN0aW9uTmFtZSk7XG5cdHJldHVybiBnZXRHcm91cElkRnJvbUNvbmZpZyhvQ29udHJvbENvbmZpZ3VyYXRpb24sIHRhcmdldEFubm90YXRpb25QYXRoLCBzRGVmYXVsdEdyb3VwSWQpO1xufTtcblxuLypcbiAqIEdldCBDb250ZXh0IEJpbmRpbmcgd2l0aCBncm91cElkIGZyb20gY29udHJvbCBjb25maWd1cmF0aW9uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gW29Db25maWd1cmF0aW9uc10gY29udHJvbCBjb25maWd1cmF0aW9uIGZyb20gbWFuaWZlc3RcbiAqIEBwYXJhbSB7U3RyaW5nfSBbc0tleV0gQW5ub3RhdGlvbiBQYXRoIGZvciBvZiB0aGUgY29uZmlndXJhdGlvblxuICogQGRlc2NyaXB0aW9uIFVzZWQgdG8gZ2V0IHRoZSBiaW5kaW5nIGZvciBEYXRhUG9pbnRzIGluIHRoZSBIZWFkZXIuXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhHcm91cElkRnJvbUNvbmZpZyA9IGZ1bmN0aW9uIChvQ29uZmlndXJhdGlvbnM6IENvbnRyb2xDb25maWd1cmF0aW9uLCBzS2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBzR3JvdXBJZCA9IGdldEdyb3VwSWRGcm9tQ29uZmlnKG9Db25maWd1cmF0aW9ucywgc0tleSk7XG5cdGxldCBzQmluZGluZztcblx0aWYgKHNHcm91cElkKSB7XG5cdFx0c0JpbmRpbmcgPSBcInsgcGF0aCA6ICcnLCBwYXJhbWV0ZXJzIDogeyAkJGdyb3VwSWQgOiAnXCIgKyBzR3JvdXBJZCArIFwiJyB9IH1cIjtcblx0fVxuXHRyZXR1cm4gc0JpbmRpbmc7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgYmluZGluZyBleHByZXNzaW9uLlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggRGF0YU1vZGVsT2JqZWN0UGF0aCBvZiB0aGUgbmF2aWdhdGlvblBhdGhcbiAqIEByZXR1cm5zIFRoZSBCaW5kaW5nIGV4cHJlc3Npb24gaW5jbHVkaW5nIHBhdGggYW5kICRzZWxlY3QgcXVlcnkgYXMgcGFyYW1ldGVyIGRlcGVuZGluZyBvbiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQmluZGluZ0ZvckFsdGVybmF0ZUFuZFNlY29uZGFyeUtleXMgPSBmdW5jdGlvbiAoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxGYWNldD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGg/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGxldCBiaW5kaW5nOiBQYXJ0aWFsPFBhdGhJbk1vZGVsRXhwcmVzc2lvbjx1bmRlZmluZWQ+PiB8IHVuZGVmaW5lZDtcblx0Y29uc3QgYWx0ZXJuYXRlQW5kU2Vjb25kYXJ5S2V5cyA9IE1vZGVsSGVscGVyLmdldEFsdGVybmF0ZUFuZFNlY29uZGFyeUtleXMoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0RW50aXR5VHlwZSxcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0XG5cdCk7XG5cblx0aWYgKGFsdGVybmF0ZUFuZFNlY29uZGFyeUtleXM/Lmxlbmd0aCkge1xuXHRcdGJpbmRpbmcgPSB7XG5cdFx0XHRwYXRoOiBcIlwiXG5cdFx0fTtcblx0XHRiaW5kaW5nLnBhcmFtZXRlcnMgPSB7ICRzZWxlY3Q6IGFsdGVybmF0ZUFuZFNlY29uZGFyeUtleXMuam9pbihcIixcIikgfHwgXCJcIiB9O1xuXHR9XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShiaW5kaW5nKTtcbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgYSBGaWVsZEdyb3VwIGNvbnNpc3RzIG9mIG9ubHkgMSBEYXRhRmllbGQgd2l0aCBNdWx0aUxpbmUgVGV4dCBhbm5vdGF0aW9uLlxuICogQHBhcmFtIGFGb3JtRWxlbWVudHMgQSBjb2xsZWN0aW9uIG9mIGZvcm0gZWxlbWVudHMgdXNlZCBpbiB0aGUgY3VycmVudCBmaWVsZCBncm91cFxuICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIG9ubHkgMSBkYXRhIGZpZWxkIHdpdGggTXVsdGlsaW5lIFRleHQgYW5ub3RhdGlvbiBleGlzdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBkb2VzRmllbGRHcm91cENvbnRhaW5Pbmx5T25lTXVsdGlMaW5lRGF0YUZpZWxkID0gZnVuY3Rpb24gKGFGb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdKTogYm9vbGVhbiB7XG5cdHJldHVybiBhRm9ybUVsZW1lbnRzICYmIGFGb3JtRWxlbWVudHMubGVuZ3RoID09PSAxICYmICEhYUZvcm1FbGVtZW50c1swXS5pc1ZhbHVlTXVsdGlsaW5lVGV4dDtcbn07XG5cbi8qXG4gKiBHZXQgdmlzaWJsaXR5IG9mIGJyZWFkY3J1bWJzLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IFtvVmlld0RhdGFdIFZpZXdEYXRhIG1vZGVsXG4gKiByZXR1cm5zIHsqfSBFeHByZXNzaW9uIG9yIEJvb2xlYW4gdmFsdWVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFZpc2libGVFeHByZXNzaW9uRm9yQnJlYWRjcnVtYnMgPSBmdW5jdGlvbiAob1ZpZXdEYXRhOiBWaWV3RGF0YSk6IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gb1ZpZXdEYXRhLnNob3dCcmVhZENydW1icyAmJiBvVmlld0RhdGEuZmNsRW5hYmxlZCAhPT0gdW5kZWZpbmVkID8gXCJ7ZmNsaGVscGVyPi9icmVhZENydW1iSXNWaXNpYmxlfVwiIDogb1ZpZXdEYXRhLnNob3dCcmVhZENydW1icztcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2aWV3RGF0YSBTcGVjaWZpZXMgdGhlIFZpZXdEYXRhIG1vZGVsXG4gKiBAcmV0dXJucyBFeHByZXNzaW9uIG9yIEJvb2xlYW4gdmFsdWVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eSA9IGZ1bmN0aW9uICh2aWV3RGF0YTogVmlld0RhdGEpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGlmICh2aWV3RGF0YS5pc1NoYXJlQnV0dG9uVmlzaWJsZUZvck15SW5ib3ggPT09IGZhbHNlKSB7XG5cdFx0cmV0dXJuIFwiZmFsc2VcIjtcblx0fVxuXHRjb25zdCBzaGFyZUJ1dHRvblZpc2liaWxpdHlFeHAgPSB2aWV3RGF0YS5mY2xFbmFibGVkXG5cdFx0PyBhbmQocGF0aEluTW9kZWwoXCIvc2hvd1NoYXJlSWNvblwiLCBcImZjbGhlbHBlclwiKSwgbm90KFVJLklzQ3JlYXRlTW9kZSkpXG5cdFx0OiBub3QoVUkuSXNDcmVhdGVNb2RlKTtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHNoYXJlQnV0dG9uVmlzaWJpbGl0eUV4cCk7XG59O1xuXG4vKlxuICogR2V0cyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgaGVhZGVyIGluZm8gaW4gZWRpdCBtb2RlXG4gKlxuICogSWYgZWl0aGVyIHRoZSB0aXRsZSBvciBkZXNjcmlwdGlvbiBmaWVsZCBmcm9tIHRoZSBoZWFkZXIgYW5ub3RhdGlvbnMgYXJlIGVkaXRhYmxlLCB0aGVuIHRoZVxuICogZWRpdGFibGUgaGVhZGVyIGluZm8gaXMgdmlzaWJsZS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0Fubm90YXRpb25zXSBBbm5vdGF0aW9ucyBvYmplY3QgZm9yIGdpdmVuIGVudGl0eSBzZXRcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0ZpZWxkQ29udHJvbF0gZmllbGQgY29udHJvbFxuICogcmV0dXJucyB7Kn0gIGJpbmRpbmcgZXhwcmVzc2lvbiBvciBib29sZWFuIHZhbHVlIHJlc29sdmVkIGZvcm0gZnVuY2l0b25zIGlzUmVhZE9ubHlGcm9tU3RhdGljQW5ub3RhdGlvbnMgYW5kIGlzUmVhZE9ubHlGcm9tRHluYW1pY0Fubm90YXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWaXNpYmxpdHlPZkhlYWRlckluZm8gPSBmdW5jdGlvbiAoXG5cdG9UaXRsZUFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRvRGVzY3JpcHRpb25Bbm5vdGF0aW9uczogTWV0YU1vZGVsUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0b0ZpZWxkVGl0bGVGaWVsZENvbnRyb2w/OiBzdHJpbmcsXG5cdG9GaWVsZERlc2NyaXB0aW9uRmllbGRDb250cm9sPzogc3RyaW5nXG4pOiBib29sZWFuIHwgc3RyaW5nIHtcblx0Ly8gQ2hlY2sgQW5ub3RhdGlvbnMgZm9yIFRpdGxlIEZpZWxkXG5cdC8vIFNldCB0byB0cnVlIGFuZCBkb24ndCB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlcmUgYXJlIG5vIGFubm90YXRpb25zLCBpLmUuIG5vIHRpdGxlIGV4aXN0c1xuXHRjb25zdCBiSXNUaXRsZVJlYWRPbmx5ID0gb1RpdGxlQW5ub3RhdGlvbnMgPyBpc1JlYWRPbmx5RnJvbVN0YXRpY0Fubm90YXRpb25zKG9UaXRsZUFubm90YXRpb25zLCBvRmllbGRUaXRsZUZpZWxkQ29udHJvbCkgOiB0cnVlO1xuXHRjb25zdCB0aXRsZUV4cHJlc3Npb24gPSByZWFkT25seUV4cHJlc3Npb25Gcm9tRHluYW1pY0Fubm90YXRpb25zKG9GaWVsZFRpdGxlRmllbGRDb250cm9sKTtcblx0Ly8gVGhlcmUgaXMgbm8gZXhwcmVzc2lvbiBhbmQgdGhlIHRpdGxlIGlzIG5vdCByZWFkeSBvbmx5LCB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yIGFuIGVkaXRhYmxlIGhlYWRlclxuXHRpZiAoIWJJc1RpdGxlUmVhZE9ubHkgJiYgIXRpdGxlRXhwcmVzc2lvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gQ2hlY2sgQW5ub3RhdGlvbnMgZm9yIERlc2NyaXB0aW9uIEZpZWxkXG5cdC8vIFNldCB0byB0cnVlIGFuZCBkb24ndCB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlcmUgYXJlIG5vIGFubm90YXRpb25zLCBpLmUuIG5vIGRlc2NyaXB0aW9uIGV4aXN0c1xuXHRjb25zdCBiSXNEZXNjcmlwdGlvblJlYWRPbmx5ID0gb0Rlc2NyaXB0aW9uQW5ub3RhdGlvbnNcblx0XHQ/IGlzUmVhZE9ubHlGcm9tU3RhdGljQW5ub3RhdGlvbnMob0Rlc2NyaXB0aW9uQW5ub3RhdGlvbnMsIG9GaWVsZERlc2NyaXB0aW9uRmllbGRDb250cm9sKVxuXHRcdDogdHJ1ZTtcblx0Y29uc3QgZGVzY3JpcHRpb25FeHByZXNzaW9uID0gcmVhZE9ubHlFeHByZXNzaW9uRnJvbUR5bmFtaWNBbm5vdGF0aW9ucyhvRmllbGREZXNjcmlwdGlvbkZpZWxkQ29udHJvbCk7XG5cdC8vIFRoZXJlIGlzIG5vIGV4cHJlc3Npb24gYW5kIHRoZSBkZXNjcmlwdGlvbiBpcyBub3QgcmVhZHkgb25seSwgdGhpcyBpcyBzdWZmaWNpZW50IGZvciBhbiBlZGl0YWJsZSBoZWFkZXJcblx0aWYgKCFiSXNEZXNjcmlwdGlvblJlYWRPbmx5ICYmICFkZXNjcmlwdGlvbkV4cHJlc3Npb24pIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8vIEJvdGggdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGFyZSBub3QgZWRpdGFibGUgYW5kIHRoZXJlIGFyZSBubyBkeW5hbWljIGFubm90YXRpb25zXG5cdGlmIChiSXNUaXRsZVJlYWRPbmx5ICYmIGJJc0Rlc2NyaXB0aW9uUmVhZE9ubHkgJiYgIXRpdGxlRXhwcmVzc2lvbiAmJiAhZGVzY3JpcHRpb25FeHByZXNzaW9uKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gTm93IGNvbWJpbmUgZXhwcmVzc2lvbnNcblx0aWYgKHRpdGxlRXhwcmVzc2lvbiAmJiAhZGVzY3JpcHRpb25FeHByZXNzaW9uKSB7XG5cdFx0cmV0dXJuIHRpdGxlRXhwcmVzc2lvbjtcblx0fSBlbHNlIGlmICghdGl0bGVFeHByZXNzaW9uICYmIGRlc2NyaXB0aW9uRXhwcmVzc2lvbikge1xuXHRcdHJldHVybiBkZXNjcmlwdGlvbkV4cHJlc3Npb247XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbWJpbmVUaXRsZUFuZERlc2NyaXB0aW9uRXhwcmVzc2lvbihvRmllbGRUaXRsZUZpZWxkQ29udHJvbCwgb0ZpZWxkRGVzY3JpcHRpb25GaWVsZENvbnRyb2wpO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZVRpdGxlQW5kRGVzY3JpcHRpb25FeHByZXNzaW9uID0gZnVuY3Rpb24gKG9UaXRsZUZpZWxkQ29udHJvbD86IHN0cmluZywgb0Rlc2NyaXB0aW9uRmllbGRDb250cm9sPzogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gSWYgYm90aCBoZWFkZXIgYW5kIHRpdGxlIGZpZWxkIGFyZSBiYXNlZCBvbiBkeW5tYWljIGZpZWxkIGNvbnRyb2wsIHRoZSBlZGl0YWJsZSBoZWFkZXJcblx0Ly8gaXMgdmlzaWJsZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlc2UgaXMgbm90IHJlYWR5IG9ubHlcblx0cmV0dXJuIFwiez0gJVwiICsgb1RpdGxlRmllbGRDb250cm9sICsgXCIgPT09IDEgPyAoICVcIiArIG9EZXNjcmlwdGlvbkZpZWxkQ29udHJvbCArIFwiID09PSAxID8gZmFsc2UgOiB0cnVlICkgOiB0cnVlIH1cIjtcbn07XG5cbi8qXG4gKiBHZXQgRXhwcmVzc2lvbiBvZiBwcmVzcyBldmVudCBmb3IgdGhlIGRlbGV0ZSBidXR0b24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0gZW50aXR5U2V0IFRoZSBjdXJyZW50IGVudGl0eSBzZXRcbiAqIEBwYXJhbSBjb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UgVGhlIGN1cnJlbnQgdGVtcGxhdGluZyBjb250ZXh0XG4gKiByZXR1cm5zIFRoZSBmdW5jdGlvbiBzdHJpbmcgZ2VuZXJhdGVkIGZyb20gdGhlIENvbW1vbkhlbHBlcidzIG1ldGhvZCBnZW5lcmF0ZUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcmVzc0V4cHJlc3Npb25Gb3JEZWxldGUgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcblx0Y29uc3QgZGVsZXRhYmxlQ29udGV4dHMgPSBcIiR7JHZpZXc+L30uZ2V0QmluZGluZ0NvbnRleHQoKVwiLFxuXHRcdHRpdGxlID0gXCIkeyR2aWV3Pi99LmJ5SWQoJ2ZlOjpPYmplY3RQYWdlJykuZGF0YSgnT2JqZWN0UGFnZVN1YnRpdGxlJylcIixcblx0XHRkZXNjcmlwdGlvbiA9IFwiJHskdmlldz4vfS5ieUlkKCdmZTo6T2JqZWN0UGFnZScpLmRhdGEoJ09iamVjdFBhZ2VEZXNjcmlwdGlvbicpXCI7XG5cblx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdHRpdGxlOiB0aXRsZSxcblx0XHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25cblx0fTtcblx0cmV0dXJuIENvbW1vbkhlbHBlci5nZW5lcmF0ZUZ1bmN0aW9uKFwiLmVkaXRGbG93LmRlbGV0ZURvY3VtZW50XCIsIGRlbGV0YWJsZUNvbnRleHRzLCBDb21tb25IZWxwZXIub2JqZWN0VG9TdHJpbmcocGFyYW1zKSk7XG59O1xuXG4vKlxuICogR2V0IEV4cHJlc3Npb24gb2YgcHJlc3MgZXZlbnQgb2YgRWRpdCBidXR0b24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gW29EYXRhRmllbGRdIERhdGEgZmllbGQgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gW3NFbnRpdHlTZXROYW1lXSBFbnRpdHkgc2V0IG5hbWVcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0hlYWRlckFjdGlvbl0gSGVhZGVyIGFjdGlvbiBvYmplY3RcbiAqIHJldHVybnMge3N0cmluZ30gIGJpbmRpbmcgZXhwcmVzc2lvbiAvIGZ1bmN0aW9uIHN0cmluZyBnZW5lcmF0ZWQgZnJvbSBjb21tYW5oZWxwZXIncyBmdW5jdGlvbiBnZW5lcmF0ZUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcmVzc0V4cHJlc3Npb25Gb3JFZGl0ID0gZnVuY3Rpb24gKFxuXHRvRGF0YUZpZWxkOiBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZEZvckFjdGlvbj4sXG5cdHNFbnRpdHlTZXROYW1lOiBzdHJpbmcsXG5cdG9IZWFkZXJBY3Rpb24/OiBCYXNlQWN0aW9uXG4pOiBzdHJpbmcge1xuXHRjb25zdCBzRWRpdGFibGVDb250ZXh0cyA9IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0RhdGFGaWVsZCAmJiBvRGF0YUZpZWxkLkFjdGlvbiEpLFxuXHRcdHNEYXRhRmllbGRFbnVtTWVtYmVyID1cblx0XHRcdG9EYXRhRmllbGQgJiZcblx0XHRcdG9EYXRhRmllbGQuSW52b2NhdGlvbkdyb3VwaW5nICYmXG5cdFx0XHQob0RhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KVtcIiRFbnVtTWVtYmVyXCJdLFxuXHRcdHNJbnZvY2F0aW9uR3JvdXAgPSBzRGF0YUZpZWxkRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCIgPyBcIkNoYW5nZVNldFwiIDogXCJJc29sYXRlZFwiO1xuXHRjb25zdCBvUGFyYW1zID0ge1xuXHRcdGNvbnRleHRzOiBcIiR7JHZpZXc+L30uZ2V0QmluZGluZ0NvbnRleHQoKVwiLFxuXHRcdGVudGl0eVNldE5hbWU6IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMoc0VudGl0eVNldE5hbWUpLFxuXHRcdGludm9jYXRpb25Hcm91cGluZzogQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzSW52b2NhdGlvbkdyb3VwKSxcblx0XHRtb2RlbDogXCIkeyRzb3VyY2U+L30uZ2V0TW9kZWwoKVwiLFxuXHRcdGxhYmVsOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKG9EYXRhRmllbGQgJiYgb0RhdGFGaWVsZC5MYWJlbCEsIHRydWUpLFxuXHRcdGlzTmF2aWdhYmxlOiBvSGVhZGVyQWN0aW9uICYmIG9IZWFkZXJBY3Rpb24uaXNOYXZpZ2FibGUsXG5cdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOlxuXHRcdFx0b0hlYWRlckFjdGlvbiAmJiBvSGVhZGVyQWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiA/IGAnJHtvSGVhZGVyQWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbn0nYCA6IHVuZGVmaW5lZFxuXHR9O1xuXHRyZXR1cm4gQ29tbW9uSGVscGVyLmdlbmVyYXRlRnVuY3Rpb24oXCIuaGFuZGxlcnMub25DYWxsQWN0aW9uXCIsIFwiJHskdmlldz4vfVwiLCBzRWRpdGFibGVDb250ZXh0cywgQ29tbW9uSGVscGVyLm9iamVjdFRvU3RyaW5nKG9QYXJhbXMpKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgZXhwcmVzc2lvbiBmb3IgdGhlICdwcmVzcycgZXZlbnQgaW4gdGhlIGZvb3RlciBhbm5vdGF0aW9uIGFjdGlvbnMuXG4gKiBAcGFyYW0gZGF0YUZpZWxkTW9kZWxQYXRoIFRoZSBkYXRhIG1vZGVsIHBhdGggb2YgdGhlIGRhdGEgZmllbGRcbiAqIEBwYXJhbSBlbnRpdHlTZXROYW1lIFRoZSBlbnRpdHkgc2V0IG5hbWVcbiAqIEBwYXJhbSBoZWFkZXJBY3Rpb24gVGhlIGhlYWRlciBhY3Rpb24gb2JqZWN0XG4gKiBAcmV0dXJucyAgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBvciBmdW5jdGlvbiBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFByZXNzRXhwcmVzc2lvbkZvckZvb3RlckFubm90YXRpb25BY3Rpb24gPSBmdW5jdGlvbiAoXG5cdGRhdGFGaWVsZE1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRGb3JBY3Rpb24+LFxuXHRlbnRpdHlTZXROYW1lOiBzdHJpbmcsXG5cdGhlYWRlckFjdGlvbjogQ3VzdG9tQWN0aW9uXG4pOiBzdHJpbmcge1xuXHRjb25zdCBkYXRhRmllbGQgPSBkYXRhRmllbGRNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZEZvckFjdGlvbjtcblx0Y29uc3QgYWN0aW9uQ29udGV4dHMgPSBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKGRhdGFGaWVsZC5BY3Rpb24gYXMgc3RyaW5nKTtcblx0Y29uc3Qgb1BhcmFtcyA9IHtcblx0XHRjb250ZXh0czogXCIkeyR2aWV3Pi99LmdldEJpbmRpbmdDb250ZXh0KClcIixcblx0XHRlbnRpdHlTZXROYW1lOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKGVudGl0eVNldE5hbWUpLFxuXHRcdGludm9jYXRpb25Hcm91cGluZzogQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3Rlcyhcblx0XHRcdGRhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgPT09IFwiVUkuT3BlcmF0aW9uR3JvdXBpbmdUeXBlL0NoYW5nZVNldFwiID8gXCJDaGFuZ2VTZXRcIiA6IFwiSXNvbGF0ZWRcIlxuXHRcdCksXG5cdFx0bW9kZWw6IFwiJHskc291cmNlPi99LmdldE1vZGVsKClcIixcblx0XHRsYWJlbDogQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhkYXRhRmllbGQuTGFiZWwgYXMgc3RyaW5nLCB0cnVlKSxcblx0XHRpc05hdmlnYWJsZTogaGVhZGVyQWN0aW9uLmlzTmF2aWdhYmxlLFxuXHRcdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogaGVhZGVyQWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvblxuXHRcdFx0PyBgJyR7aGVhZGVyQWN0aW9uLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbn0nYFxuXHRcdFx0OiB1bmRlZmluZWRcblx0fTtcblx0cmV0dXJuIENvbW1vbkhlbHBlci5nZW5lcmF0ZUZ1bmN0aW9uKFwiLmhhbmRsZXJzLm9uQ2FsbEFjdGlvblwiLCBcIiR7JHZpZXc+L31cIiwgYWN0aW9uQ29udGV4dHMsIENvbW1vbkhlbHBlci5vYmplY3RUb1N0cmluZyhvUGFyYW1zKSk7XG59O1xuXG4vKlxuICogR2V0IEV4cHJlc3Npb24gZm9yIGV4ZWN1dGluZyB0aGUgZXZlbnQgZXhwcmVzc2lvbiBvZiB0aGUgcHJpbWFyeSBhY3Rpb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gW29EYXRhRmllbGRdIERhdGEgZmllbGQgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gW3NFbnRpdHlTZXROYW1lXSBFbnRpdHkgc2V0IG5hbWVcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0hlYWRlckFjdGlvbl0gSGVhZGVyIGFjdGlvbiBvYmplY3RcbiAqIEBwYXJhbSB7Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmd9IFRoZSB2aXNpYmlsaXR5IG9mIHNlbWF0aWMgcG9zaXRpdmUgYWN0aW9uXG4gKiBAcGFyYW0ge0NvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgc3RyaW5nfSBUaGUgZW5hYmxlbWVudCBvZiBzZW1hbnRpYyBwb3NpdGl2ZSBhY3Rpb25cbiAqIEBwYXJhbSB7Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmd9IFRoZSBFZGl0IGJ1dHRvbiB2aXNpYmlsaXR5XG4gKiBAcGFyYW0ge0NvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgc3RyaW5nfSBUaGUgZW5hYmxlbWVudCBvZiBFZGl0IGJ1dHRvblxuICogcmV0dXJucyB7c3RyaW5nfSAgYmluZGluZyBleHByZXNzaW9uIC8gZnVuY3Rpb24gc3RyaW5nIGdlbmVyYXRlZCBmcm9tIGNvbW1hbmhlbHBlcidzIGZ1bmN0aW9uIGdlbmVyYXRlRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFByZXNzRXhwcmVzc2lvbkZvclByaW1hcnlBY3Rpb24gPSBmdW5jdGlvbiAoXG5cdG9EYXRhRmllbGQ6IERhdGFGaWVsZEZvckFjdGlvbiB8IHVuZGVmaW5lZCxcblx0c0VudGl0eVNldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0b0hlYWRlckFjdGlvbjogQmFzZUFjdGlvbiB8IG51bGwsXG5cdHBvc2l0aXZlQWN0aW9uVmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmcsXG5cdHBvc2l0aXZlQWN0aW9uRW5hYmxlZDogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBzdHJpbmcsXG5cdGVkaXRBY3Rpb25WaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHN0cmluZyxcblx0ZWRpdEFjdGlvbkVuYWJsZWQ6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgc3RyaW5nXG4pOiBzdHJpbmcge1xuXHRjb25zdCBzQWN0aW9uQ29udGV4dHMgPSBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKG9EYXRhRmllbGQ/LkFjdGlvbi50b1N0cmluZygpID8/IFwiXCIpLFxuXHRcdHNEYXRhRmllbGRFbnVtTWVtYmVyID1cblx0XHRcdG9EYXRhRmllbGQgJiZcblx0XHRcdG9EYXRhRmllbGQuSW52b2NhdGlvbkdyb3VwaW5nICYmXG5cdFx0XHQob0RhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KVtcIiRFbnVtTWVtYmVyXCJdLFxuXHRcdHNJbnZvY2F0aW9uR3JvdXAgPSBzRGF0YUZpZWxkRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCIgPyBcIkNoYW5nZVNldFwiIDogXCJJc29sYXRlZFwiO1xuXHRjb25zdCBvUGFyYW1zID0ge1xuXHRcdGNvbnRleHRzOiBcIiR7JHZpZXc+L30uZ2V0QmluZGluZ0NvbnRleHQoKVwiLFxuXHRcdGVudGl0eVNldE5hbWU6IHNFbnRpdHlTZXROYW1lID8gQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzRW50aXR5U2V0TmFtZSkgOiBcIlwiLFxuXHRcdGludm9jYXRpb25Hcm91cGluZzogQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzSW52b2NhdGlvbkdyb3VwKSxcblx0XHRtb2RlbDogXCIkeyRzb3VyY2U+L30uZ2V0TW9kZWwoKVwiLFxuXHRcdGxhYmVsOiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKG9EYXRhRmllbGQ/LkxhYmVsPy50b1N0cmluZygpID8/IFwiXCIsIHRydWUpLFxuXHRcdGlzTmF2aWdhYmxlOiBvSGVhZGVyQWN0aW9uPy5pc05hdmlnYWJsZSxcblx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IG9IZWFkZXJBY3Rpb24/LmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvblxuXHRcdFx0PyBgJyR7b0hlYWRlckFjdGlvbi5kZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb259J2Bcblx0XHRcdDogdW5kZWZpbmVkXG5cdH07XG5cdGNvbnN0IG9Db25kaXRpb25zID0ge1xuXHRcdHBvc2l0aXZlQWN0aW9uVmlzaWJsZSxcblx0XHRwb3NpdGl2ZUFjdGlvbkVuYWJsZWQsXG5cdFx0ZWRpdEFjdGlvblZpc2libGUsXG5cdFx0ZWRpdEFjdGlvbkVuYWJsZWRcblx0fTtcblx0cmV0dXJuIENvbW1vbkhlbHBlci5nZW5lcmF0ZUZ1bmN0aW9uKFxuXHRcdFwiLmhhbmRsZXJzLm9uUHJpbWFyeUFjdGlvblwiLFxuXHRcdFwiJGNvbnRyb2xsZXJcIixcblx0XHRcIiR7JHZpZXc+L31cIixcblx0XHRcIiR7JHZpZXc+L30uZ2V0QmluZGluZ0NvbnRleHQoKVwiLFxuXHRcdHNBY3Rpb25Db250ZXh0cyxcblx0XHRDb21tb25IZWxwZXIub2JqZWN0VG9TdHJpbmcob1BhcmFtcyksXG5cdFx0Q29tbW9uSGVscGVyLm9iamVjdFRvU3RyaW5nKG9Db25kaXRpb25zKVxuXHQpO1xufTtcblxuLypcbiAqIEdldHMgdGhlIGJpbmRpbmcgb2YgdGhlIGNvbnRhaW5lciBIQm94IGZvciB0aGUgaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtvYmplY3R9IFtvQ29udHJvbENvbmZpZ3VyYXRpb25dIFRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9ybSBvZiB0aGUgdmlld0RhdGEgbW9kZWxcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb0hlYWRlckZhY2V0XSBUaGUgb2JqZWN0IG9mIHRoZSBoZWFkZXIgZmFjZXRcbiAqIHJldHVybnMgeyp9ICBUaGUgYmluZGluZyBleHByZXNzaW9uIGZyb20gZnVuY3Rpb24gZ2V0QmluZGluZ1dpdGhHcm91cElkRnJvbUNvbmZpZyBvciB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdGFzaGFibGVIQm94QmluZGluZyA9IGZ1bmN0aW9uIChcblx0b0NvbnRyb2xDb25maWd1cmF0aW9uOiBDb250cm9sQ29uZmlndXJhdGlvbixcblx0b0hlYWRlckZhY2V0OiB7IEZhY2V0OiBGaWVsZEdyb3VwRmFjZXQgfVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKG9IZWFkZXJGYWNldCAmJiBvSGVhZGVyRmFjZXQuRmFjZXQgJiYgb0hlYWRlckZhY2V0LkZhY2V0LnRhcmdldEFubm90YXRpb25UeXBlID09PSBcIkRhdGFQb2ludFwiKSB7XG5cdFx0cmV0dXJuIGdldEJpbmRpbmdXaXRoR3JvdXBJZEZyb21Db25maWcob0NvbnRyb2xDb25maWd1cmF0aW9uLCBvSGVhZGVyRmFjZXQuRmFjZXQudGFyZ2V0QW5ub3RhdGlvblZhbHVlISk7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIZWFkZXJGb3JtSGJveFJlbmRlclR5cGUgPSBmdW5jdGlvbiAoZGF0YUZpZWxkOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEFic3RyYWN0VHlwZXM+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGRhdGFGaWVsZD8udGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIFwiQmFyZVwiO1xufTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBhY3Rpb24gZ3JvdXAgaGFuZGxlciB0aGF0IGlzIGludm9rZWQgd2hlbiBhZGRpbmcgdGhlIG1lbnUgYnV0dG9uIGhhbmRsaW5nIGFwcHJvcHJpYXRlbHkuXG4gKiBAcGFyYW0gb0N0eCBUaGUgY3VycmVudCBjb250ZXh0IGluIHdoaWNoIHRoZSBoYW5kbGVyIGlzIGNhbGxlZFxuICogQHBhcmFtIG9BY3Rpb24gVGhlIGN1cnJlbnQgYWN0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSBvRGF0YUZpZWxkRm9yRGVmYXVsdEFjdGlvbiBUaGUgY3VycmVudCBkYXRhRmllbGQgZm9yIHRoZSBkZWZhdWx0IGFjdGlvblxuICogQHBhcmFtIGRlZmF1bHRBY3Rpb25Db250ZXh0T3JFbnRpdHlTZXQgVGhlIGN1cnJlbnQgY29udGV4dCBmb3IgdGhlIGRlZmF1bHQgYWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgYXBwcm9wcmlhdGUgZXhwcmVzc2lvbiBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRBY3Rpb25IYW5kbGVyKFxuXHRvQ3R4OiBDb250ZXh0LFxuXHRvQWN0aW9uOiBDdXN0b21BY3Rpb24sXG5cdG9EYXRhRmllbGRGb3JEZWZhdWx0QWN0aW9uOiBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZERlZmF1bHQ+LFxuXHRkZWZhdWx0QWN0aW9uQ29udGV4dE9yRW50aXR5U2V0OiBzdHJpbmdcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0aWYgKG9BY3Rpb24uZGVmYXVsdEFjdGlvbikge1xuXHRcdGNvbnN0IGRlZmF1bHRBY3Rpb24gPSBvQWN0aW9uLmRlZmF1bHRBY3Rpb24gYXMgQ3VzdG9tQWN0aW9uO1xuXHRcdHRyeSB7XG5cdFx0XHRzd2l0Y2ggKGRlZmF1bHRBY3Rpb24udHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiRm9yQWN0aW9uXCI6IHtcblx0XHRcdFx0XHRyZXR1cm4gZ2V0UHJlc3NFeHByZXNzaW9uRm9yRWRpdChcblx0XHRcdFx0XHRcdG9EYXRhRmllbGRGb3JEZWZhdWx0QWN0aW9uIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkRm9yQWN0aW9uPixcblx0XHRcdFx0XHRcdGRlZmF1bHRBY3Rpb25Db250ZXh0T3JFbnRpdHlTZXQsXG5cdFx0XHRcdFx0XHRvQWN0aW9uLmRlZmF1bHRBY3Rpb24gYXMgQmFzZUFjdGlvblxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcIkZvck5hdmlnYXRpb25cIjoge1xuXHRcdFx0XHRcdGlmIChkZWZhdWx0QWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBcImNtZDpcIiArIGRlZmF1bHRBY3Rpb24uY29tbWFuZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRlZmF1bHRBY3Rpb24ucHJlc3M7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0XHRpZiAoZGVmYXVsdEFjdGlvbi5jb21tYW5kKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJjbWQ6XCIgKyBkZWZhdWx0QWN0aW9uLmNvbW1hbmQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkZWZhdWx0QWN0aW9uLm5vV3JhcCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRlZmF1bHRBY3Rpb24ucHJlc3M7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBDb21tb25IZWxwZXIuYnVpbGRBY3Rpb25XcmFwcGVyKGRlZmF1bHRBY3Rpb24sIHsgaWQ6IFwiZm9yVGhlT2JqZWN0UGFnZVwiIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGlvRXgpIHtcblx0XHRcdHJldHVybiBcImJpbmRpbmcgZm9yIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyBub3Qgd29ya2luZyBhcyBleHBlY3RlZFwiO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBzdWIgc2VjdGlvbiB2aXN1YWxpemF0aW9uIGlzIHBhcnQgb2YgcHJldmlldy5cbiAqIEBwYXJhbSBzdWJTZWN0aW9uIFRoZSBzdWIgc2VjdGlvbiB2aXN1YWxpemF0aW9uXG4gKiBAcmV0dXJucyBBIEJvb2xlYW4gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmlzdWFsaXphdGlvbklzUGFydE9mUHJldmlldyhzdWJTZWN0aW9uOiBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24pOiBib29sZWFuIHtcblx0cmV0dXJuIHN1YlNlY3Rpb24uaXNQYXJ0T2ZQcmV2aWV3ID09PSB0cnVlIHx8IHN1YlNlY3Rpb24ucHJlc2VudGF0aW9uLnZpc3VhbGl6YXRpb25zWzBdLnR5cGUgIT09IFwiVGFibGVcIjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBleHByZXNzaW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmb290ZXIgb2YgdGhlIG9iamVjdCBwYWdlIGlzIHRvIGJlIHZpc2libGUgb3Igbm90LlxuICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSBmb3JtYXR0ZXIuXG4gKiBAcGFyYW0gZm9vdGVyQWN0aW9ucyBUaGUgbGlzdCBvZiBmb290ZXIgYWN0aW9ucy5cbiAqIEByZXR1cm5zIEEgYmluZGluZyBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb290ZXJWaXNpYmlsaXR5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChjb250ZXh0OiBJQ29udGV4dCwgZm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBtZXRhTW9kZWwgPSBjb250ZXh0LmdldEludGVyZmFjZSgxKS5nZXRNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXG5cdGNvbnN0IF9nZW5lcmF0ZUJpbmRpbmdzRm9yQWN0aW9ucyA9IChhY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSA9PiB7XG5cdFx0aWYgKGFjdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gcmVzb2x2ZUJpbmRpbmdTdHJpbmcoYWN0aW9uLnZpc2libGUgPz8gdHJ1ZSwgXCJib29sZWFuXCIpKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXTtcblx0XHR9XG5cdFx0cmV0dXJuIFtjb25zdGFudChmYWxzZSldO1xuXHR9O1xuXG5cdGNvbnN0IGdldEFjdGlvbk1vZGVsUGF0aCA9IChhY3Rpb246IEJhc2VBY3Rpb24pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0Y29uc3QgYWN0aW9uQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KGFubm90YXRpb25QYXRoKTtcblx0XHRcdHJldHVybiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkRm9yQWN0aW9uPihhY3Rpb25Db250ZXh0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fTtcblxuXHQvLyBBY3Rpb25zIGFyZSBjb21pbmcgZnJvbSB0aGUgY29udmVydGVyIHNvIG9ubHkgZGV0ZXJtaW5pbmcgYWN0aW9ucyBhbmQgbm90IHN0YXRpY2FsbHkgaGlkZGVuIGFyZSBsaXN0ZWRcblx0Y29uc3QgZGV0ZXJtaW5pbmdBY3Rpb25zID0gZm9vdGVyQWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uKTtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25CaW5kaW5ncyA9IF9nZW5lcmF0ZUJpbmRpbmdzRm9yQWN0aW9ucyhmb290ZXJBY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBpc01hbmlmZXN0QWN0aW9uKGFjdGlvbikpKTtcblx0Y29uc3QgZGV0ZXJtaW5pbmdBY3Rpb25CaW5kaW5ncyA9IF9nZW5lcmF0ZUJpbmRpbmdzRm9yQWN0aW9ucyhkZXRlcm1pbmluZ0FjdGlvbnMpO1xuXG5cdGNvbnN0IGlzTm90SGlkZGVuRGV0ZXJtaW5pbmdBY3Rpb24gPSAhIWRldGVybWluaW5nQWN0aW9ucy5maW5kKChhY3Rpb24pID0+IHtcblx0XHRjb25zdCBhY3Rpb25Db250ZXh0TW9kZWxQYXRoID0gZ2V0QWN0aW9uTW9kZWxQYXRoKGFjdGlvbik7XG5cdFx0cmV0dXJuICFhY3Rpb25Db250ZXh0TW9kZWxQYXRoPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHR9KTtcblxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0b3IoXG5cdFx0XHRpc05vdEhpZGRlbkRldGVybWluaW5nQWN0aW9uLFxuXHRcdFx0b3IoLi4ubWFuaWZlc3RBY3Rpb25CaW5kaW5ncyksXG5cdFx0XHRhbmQob3IoVUkuSXNFZGl0YWJsZSwgb3IoLi4uZGV0ZXJtaW5pbmdBY3Rpb25CaW5kaW5ncykpLCBub3QocGF0aEluTW9kZWwoXCJpc0NyZWF0ZURpYWxvZ09wZW5cIiwgXCJpbnRlcm5hbFwiKSkpXG5cdFx0KVxuXHQpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHN1YnNlY3Rpb24gaGVhZGVyIGxldmVsLlxuICogQHBhcmFtIHN1YlNlY3Rpb24gVGhlIHN1YnNlY3Rpb24gdmlzdWFsaXphdGlvblxuICogQHBhcmFtIGlzTW9yZUNvbnRlbnRcbiAqIEByZXR1cm5zIEEgU3RyaW5nIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJMZXZlbChzdWJTZWN0aW9uOiBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24sIGlzTW9yZUNvbnRlbnQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRpZiAoaXNNb3JlQ29udGVudCkge1xuXHRcdGlmICghc3ViU2VjdGlvbi5zaG93U3ViU2VjdGlvblRpdGxlKSB7XG5cdFx0XHQvLyB3aGVuZXZlciB0aXRsZSBpcyBtZXJnZWQgZm9yIHN1Yi1zZWN0aW9uLCBsZXZlbCBzaG91bGQgYmUgSDRcblx0XHRcdHJldHVybiBcIkg0XCI7XG5cdFx0fSBlbHNlIGlmIChzdWJTZWN0aW9uLmxldmVsID09PSAyICYmIHN1YlNlY3Rpb24uZGF0YVZpc3VhbGl6YXRpb25UaXRsZVZpc2libGUgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHQvLyByZXRhaW4gb2xkIGxvZ2ljXG5cdFx0XHRyZXR1cm4gXCJINlwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJINVwiOyAvLyByZXRhaW4gb2xkIGxvZ2ljXG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFzdWJTZWN0aW9uLnNob3dTdWJTZWN0aW9uVGl0bGUpIHtcblx0XHQvLyB3aGVuZXZlciB0aXRsZSBpcyBtZXJnZWQgZm9yIHNlY3Rpb24sIGxldmVsIHNob3VsZCBiZSBIM1xuXHRcdHJldHVybiBcIkgzXCI7XG5cdH0gZWxzZSBpZiAoc3ViU2VjdGlvbi5sZXZlbCA9PT0gMiAmJiBzdWJTZWN0aW9uLmRhdGFWaXN1YWxpemF0aW9uVGl0bGVWaXNpYmxlID09PSBcInRydWVcIikge1xuXHRcdC8vIHJldGFpbiBvbGQgbG9naWNcblx0XHRyZXR1cm4gXCJINVwiO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIkg0XCI7IC8vIHJldGFpbiBvbGQgbG9naWNcblx0fVxufVxuXG5nZXRGb290ZXJWaXNpYmlsaXR5RXhwcmVzc2lvbi5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdURBLE1BQU1BLFVBQVUsR0FBR0MsUUFBUSxDQUFDRCxVQUFVO0VBRS9CLE1BQU1FLHFCQUFxQixHQUFHLFNBQUFBLENBQ3BDQyxlQUEyRCxFQUMzREMsUUFBa0IsRUFDbEJDLFVBQTJCLEVBQ1E7SUFDbkMsT0FBT0MseUJBQXlCLENBQy9CSCxlQUFlLEVBQ2ZJLHdCQUF3QixFQUN4QkMsU0FBUyxFQUNUSCxVQUFVLEVBQ1ZELFFBQ0QsQ0FBQztFQUNGLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQUssUUFBQSxDQUFBUCxxQkFBQSxHQUFBQSxxQkFBQTtFQU9PLE1BQU1RLDJCQUEyQixHQUFHLFNBQUFBLENBQzFDUCxlQUErQyxFQUMvQ1EsV0FBNEIsRUFDTztJQUNuQyxJQUFJQyxrQkFBa0IsR0FBR0MsMkJBQTJCLENBQUVGLFdBQVcsRUFBRUcsV0FBVyxFQUFxQkMsS0FBSyxDQUFDO0lBQ3pHLElBQUtKLFdBQVcsRUFBRUcsV0FBVyxFQUFxQkMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVGLFdBQVcsRUFBRUcsRUFBRSxFQUFFQyxlQUFlLEVBQUU7TUFDOUg7TUFDQVQsa0JBQWtCLEdBQUdVLHFDQUFxQyxDQUFDVixrQkFBa0IsRUFB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
|
|
@@ -553,6 +553,9 @@ export const getBindingWithGroupIdFromConfig = function (oConfigurations: Contro
|
|
|
553
553
|
* @returns The Binding expression including path and $select query as parameter depending on the function parameters
|
|
554
554
|
*/
|
|
555
555
|
export const createBindingForAlternateAndSecondaryKeys = function (dataModelObjectPath: DataModelObjectPath<Facet>): string | undefined {
|
|
556
|
+
if (!dataModelObjectPath?.navigationProperties?.length) {
|
|
557
|
+
return undefined;
|
|
558
|
+
}
|
|
556
559
|
let binding: Partial<PathInModelExpression<undefined>> | undefined;
|
|
557
560
|
const alternateAndSecondaryKeys = ModelHelper.getAlternateAndSecondaryKeys(
|
|
558
561
|
dataModelObjectPath?.targetEntityType,
|
|
@@ -425,7 +425,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
425
425
|
value: "{internal>UserID}",
|
|
426
426
|
additionalValue: "{internal>UserDescription}",
|
|
427
427
|
display: "DescriptionValue",
|
|
428
|
-
width: "
|
|
428
|
+
width: "100%",
|
|
429
429
|
required: true,
|
|
430
430
|
valueHelp: "userValueHelp",
|
|
431
431
|
placeholder: this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER"),
|
|
@@ -636,4 +636,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
636
636
|
_exports = CollaborationDraft;
|
|
637
637
|
return _exports;
|
|
638
638
|
}, false);
|
|
639
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIyMGVtXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
639
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -287,7 +287,7 @@ export default class CollaborationDraft extends BuildingBlock {
|
|
|
287
287
|
value="{internal>UserID}"
|
|
288
288
|
additionalValue="{internal>UserDescription}"
|
|
289
289
|
display="DescriptionValue"
|
|
290
|
-
width="
|
|
290
|
+
width="100%"
|
|
291
291
|
required={true}
|
|
292
292
|
valueHelp="userValueHelp"
|
|
293
293
|
placeholder={this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER")}
|
|
@@ -14,9 +14,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
14
14
|
const oAppComponent = CommonUtils.getAppComponent(oView);
|
|
15
15
|
const oMetaModel = oAppComponent.getModel().getMetaModel();
|
|
16
16
|
const oPageContext = oView.getBindingContext();
|
|
17
|
+
|
|
17
18
|
//If the link context is same as page context merging of context should not happen
|
|
18
|
-
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext
|
|
19
|
-
if (oExternalNavigationContext?.page && mergeLinkContext) {
|
|
19
|
+
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
|
|
20
|
+
if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
|
|
20
21
|
const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
|
|
21
22
|
let pageAttributes = oPageContext.getObject();
|
|
22
23
|
pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
|
|
@@ -55,4 +56,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
55
56
|
};
|
|
56
57
|
return IntentBasedNavigationOverride;
|
|
57
58
|
}, false);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1BhZ2VDb250ZXh0IiwibWVyZ2VMaW5rQ29udGV4dCIsImxpbmtDb250ZXh0UGF0aCIsImdldFBhdGgiLCJwYWdlIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJwYWdlQXR0cmlidXRlcyIsImdldE9iamVjdCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcm9jZXNzU2VtYW50aWNBdHRyaWJ1dGVzIiwib1BhZ2VDb250ZXh0RGF0YSIsInJlbW92ZVNlbnNpdGl2ZURhdGEiLCJvUGFnZURhdGEiLCJwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsInByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJvUGFnZVNWIiwiYWRkUGFnZUNvbnRleHRUb1NlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50Iiwic2VtYW50aWNBdHRyaWJ1dGVzIiwib1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsInNQcm9wZXJ0eU5hbWUiLCJnZXRTZWxlY3RPcHRpb24iLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibGlua0NvbnRleHQiLCJzZXRQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZW50QmFzZWROYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcblxuY29uc3QgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0b1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0b1RhcmdldEluZm8/OiB7IGxpbmtDb250ZXh0UGF0aDogc3RyaW5nOyBsaW5rQ29udGV4dD86IHVua25vd247IHByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH1cblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyLFxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0ID0gb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dFwiKTtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9QYWdlQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cblx0XHQvL0lmIHRoZSBsaW5rIGNvbnRleHQgaXMgc2FtZSBhcyBwYWdlIGNvbnRleHQgbWVyZ2luZyBvZiBjb250ZXh0IHNob3VsZCBub3QgaGFwcGVuXG5cdFx0Y29uc3QgbWVyZ2VMaW5rQ29udGV4dCA9IG9UYXJnZXRJbmZvPy5saW5rQ29udGV4dFBhdGggPyBvUGFnZUNvbnRleHQ/LmdldFBhdGgoKSAhPT0gb1RhcmdldEluZm8/LmxpbmtDb250ZXh0UGF0aCA6IHRydWU7XG5cdFx0aWYgKG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0Py5wYWdlICYmIG1lcmdlTGlua0NvbnRleHQgJiYgb1BhZ2VDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9QYWdlQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0bGV0IHBhZ2VBdHRyaWJ1dGVzID0gb1BhZ2VDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0cGFnZUF0dHJpYnV0ZXMgPSBvQ29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLnByb2Nlc3NTZW1hbnRpY0F0dHJpYnV0ZXMob1BhZ2VDb250ZXh0LCBvUGFnZUNvbnRleHQuZ2V0T2JqZWN0KCkpO1xuXHRcdFx0Y29uc3Qgb1BhZ2VDb250ZXh0RGF0YSA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucmVtb3ZlU2Vuc2l0aXZlRGF0YShwYWdlQXR0cmlidXRlcywgc01ldGFQYXRoKSxcblx0XHRcdFx0b1BhZ2VEYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5wcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbihvUGFnZUNvbnRleHREYXRhLCBvUGFnZUNvbnRleHQpLFxuXHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvUGFnZURhdGEucHJvcGVydGllc1dpdGhvdXRDb25mbGljdCxcblx0XHRcdFx0Ly8gVE9ETzogbW92ZSB0aGlzIGFsc28gaW50byB0aGUgaW50ZW50IGJhc2VkIG5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0XHRcdFx0b1BhZ2VTViA9IENvbW1vblV0aWxzLmFkZFBhZ2VDb250ZXh0VG9TZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0XHRcdG5ldyBTZWxlY3Rpb25WYXJpYW50KCksXG5cdFx0XHRcdFx0b1BhZ2VEYXRhLnNlbWFudGljQXR0cmlidXRlcyBhcyB1bmtub3duW10sXG5cdFx0XHRcdFx0b1ZpZXdcblx0XHRcdFx0KSxcblx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRcdGNvbnN0IGFTZWxlY3RPcHRpb25Qcm9wZXJ0eU5hbWVzID0gb1BhZ2VTVi5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpO1xuXHRcdFx0YVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMuZm9yRWFjaChmdW5jdGlvbiAoc1Byb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0XHRcdGlmICghb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpKSB7XG5cdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lLCBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIE9ubHkgd2hlbiB0aGVyZSBpcyBubyBjb25mbGljdCBkbyB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmdcblx0XHRcdFx0XHQvLyBpbiBhbGwgb3RoZXIgY2FzZSB0aGUgY29uZmxpY3RlZCBwYXRocyBhcmUgYWxyZWFkeSBhZGRlZCBpbiBwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvblxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIGluY29taW5nIGNvbnRleHQgdGhlbiBhZGQgcGF0aCBmcm9tIGluY29taW5nIGNvbnRleHQgdG8gU1Zcblx0XHRcdFx0XHQvLyBUTy1ETy4gUmVtb3ZlIHRoZSBjaGVjayBmb3Igb1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Qgb25jZSBzZW1hbnRpYyBsaW5rcyBmdW5jdGlvbmFsaXR5IGlzIGNvdmVyZWRcblx0XHRcdFx0XHRpZiAob1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgJiYgc1Byb3BlcnR5TmFtZSBpbiBvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCkge1xuXHRcdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihcblx0XHRcdFx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIHBhZ2UgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gcGFnZSBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0aWYgKHNQcm9wZXJ0eU5hbWUgaW4gb1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpIVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyByZW1vdmUgbm9uIHB1YmxpYyBwcm9wZXJ0aWVzIGZyb20gdGFyZ2V0SW5mb1xuXHRcdGRlbGV0ZSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRkZWxldGUgb1RhcmdldEluZm8/LmxpbmtDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIiwgeyBwYWdlOiB0cnVlIH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQU1BLE1BQU1BLDZCQUE2QixHQUFHO0lBQ3JDQyxzQkFBc0IsRUFBRSxTQUFBQSxDQUV2QkMsaUJBQW1DLEVBQ25DQyxXQUFvSCxFQUM3RztNQUNQLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCQyxXQUFXLEdBQUdGLEtBQUssQ0FBQ0csYUFBYSxDQUFDLENBQW1CO1FBQ3JEQyxxQkFBcUIsR0FBRyxJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDLENBQUNJLGlCQUFpQixDQUFDLFVBQVUsQ0FBeUI7UUFDNUZDLDBCQUEwQixHQUFHRixxQkFBcUIs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
|
|
@@ -3,7 +3,6 @@ import type IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentB
|
|
|
3
3
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
4
4
|
import type PageController from "sap/fe/core/PageController";
|
|
5
5
|
import SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
6
|
-
import type Context from "sap/ui/model/Context";
|
|
7
6
|
|
|
8
7
|
const IntentBasedNavigationOverride = {
|
|
9
8
|
adaptNavigationContext: function (
|
|
@@ -17,10 +16,11 @@ const IntentBasedNavigationOverride = {
|
|
|
17
16
|
oExternalNavigationContext = oInternalModelContext.getProperty("externalNavigationContext");
|
|
18
17
|
const oAppComponent = CommonUtils.getAppComponent(oView);
|
|
19
18
|
const oMetaModel = oAppComponent.getModel().getMetaModel();
|
|
20
|
-
const oPageContext = oView.getBindingContext()
|
|
19
|
+
const oPageContext = oView.getBindingContext();
|
|
20
|
+
|
|
21
21
|
//If the link context is same as page context merging of context should not happen
|
|
22
|
-
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext
|
|
23
|
-
if (oExternalNavigationContext?.page && mergeLinkContext) {
|
|
22
|
+
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
|
|
23
|
+
if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
|
|
24
24
|
const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
|
|
25
25
|
let pageAttributes = oPageContext.getObject();
|
|
26
26
|
pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
|
|
@@ -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.136.
|
|
39
|
+
version: "1.136.18",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
42
|
});
|