@sapui5/sap.fe.core 1.136.1 → 1.138.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +76 -28
- package/src/sap/fe/core/ActionRuntime.ts +106 -30
- package/src/sap/fe/core/AppComponent.js +11 -1
- package/src/sap/fe/core/AppComponent.ts +10 -0
- package/src/sap/fe/core/AppStateHandler.js +9 -2
- package/src/sap/fe/core/AppStateHandler.ts +8 -2
- package/src/sap/fe/core/CommonUtils.js +15 -3
- package/src/sap/fe/core/CommonUtils.ts +13 -2
- package/src/sap/fe/core/PageController.controller.js +10 -0
- package/src/sap/fe/core/PageController.controller.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -4
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +2 -2
- package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -12
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -16
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +27 -41
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +27 -41
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +22 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +20 -5
- package/src/sap/fe/core/controllerextensions/Paginator.ts +19 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -2
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +9 -5
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +8 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +4 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +7 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +178 -125
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +222 -174
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +5 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +39 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +51 -11
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +16 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +17 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +88 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +106 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +16 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +15 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +25 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +24 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +11 -8
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +13 -10
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -4
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +7 -3
- package/src/sap/fe/core/controls/DataWatcher.js +2 -2
- package/src/sap/fe/core/controls/DataWatcher.tsx +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +11 -6
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +13 -9
- package/src/sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog.js +144 -0
- package/src/sap/fe/core/controls/inlineEditFlow/{BeforeNavigationDialog.tsx → InlineEditExitDialog.tsx} +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +3 -2
- package/src/sap/fe/core/converters/MetaModelConverter.ts +12 -4
- package/src/sap/fe/core/converters/controls/Common/Action.js +42 -5
- package/src/sap/fe/core/converters/controls/Common/Action.ts +42 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +4 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +46 -13
- package/src/sap/fe/core/converters/controls/Common/Table.ts +50 -11
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +11 -10
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +13 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +2 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +9 -9
- package/src/sap/fe/core/helpers/DeleteHelper.ts +8 -9
- package/src/sap/fe/core/helpers/FPMHelper.js +2 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +4 -4
- package/src/sap/fe/core/helpers/ModelHelper.ts +8 -4
- package/src/sap/fe/core/helpers/PasteHelper.js +2 -2
- package/src/sap/fe/core/helpers/PasteHelper.ts +1 -1
- package/src/sap/fe/core/library.js +33 -4
- package/src/sap/fe/core/library.ts +33 -2
- package/src/sap/fe/core/messagebundle.properties +18 -2
- package/src/sap/fe/core/messagebundle_ar.properties +3 -2
- package/src/sap/fe/core/messagebundle_bg.properties +2 -1
- package/src/sap/fe/core/messagebundle_ca.properties +2 -1
- package/src/sap/fe/core/messagebundle_cnr.properties +2 -1
- package/src/sap/fe/core/messagebundle_cs.properties +4 -3
- package/src/sap/fe/core/messagebundle_cy.properties +2 -1
- package/src/sap/fe/core/messagebundle_da.properties +2 -1
- package/src/sap/fe/core/messagebundle_de.properties +8 -7
- package/src/sap/fe/core/messagebundle_el.properties +2 -1
- package/src/sap/fe/core/messagebundle_en.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +2 -1
- package/src/sap/fe/core/messagebundle_es.properties +5 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +2 -1
- package/src/sap/fe/core/messagebundle_et.properties +2 -1
- package/src/sap/fe/core/messagebundle_fi.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -1
- package/src/sap/fe/core/messagebundle_hr.properties +2 -1
- package/src/sap/fe/core/messagebundle_hu.properties +2 -1
- package/src/sap/fe/core/messagebundle_id.properties +2 -1
- package/src/sap/fe/core/messagebundle_it.properties +2 -1
- package/src/sap/fe/core/messagebundle_iw.properties +2 -1
- package/src/sap/fe/core/messagebundle_ja.properties +3 -2
- package/src/sap/fe/core/messagebundle_kk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ko.properties +2 -1
- package/src/sap/fe/core/messagebundle_lt.properties +2 -1
- package/src/sap/fe/core/messagebundle_lv.properties +2 -1
- package/src/sap/fe/core/messagebundle_mk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ms.properties +2 -1
- package/src/sap/fe/core/messagebundle_nl.properties +2 -1
- package/src/sap/fe/core/messagebundle_no.properties +3 -2
- package/src/sap/fe/core/messagebundle_pl.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -1
- package/src/sap/fe/core/messagebundle_ro.properties +2 -1
- package/src/sap/fe/core/messagebundle_ru.properties +2 -1
- package/src/sap/fe/core/messagebundle_sh.properties +2 -1
- package/src/sap/fe/core/messagebundle_sk.properties +2 -1
- package/src/sap/fe/core/messagebundle_sl.properties +2 -1
- package/src/sap/fe/core/messagebundle_sr.properties +2 -1
- package/src/sap/fe/core/messagebundle_sv.properties +2 -1
- package/src/sap/fe/core/messagebundle_th.properties +2 -1
- package/src/sap/fe/core/messagebundle_tr.properties +2 -1
- package/src/sap/fe/core/messagebundle_uk.properties +2 -1
- package/src/sap/fe/core/messagebundle_vi.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +6 -6
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +5 -5
- package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -0
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +8 -2
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +75 -90
- package/src/sap/fe/core/templating/EntitySetHelper.ts +92 -118
- package/src/sap/fe/core/templating/UIFormatters.js +3 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +1 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +0 -81
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +0 -126
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +0 -10
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +0 -2
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +0 -68
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +0 -52
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +0 -144
|
@@ -168,7 +168,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
168
168
|
*/
|
|
169
169
|
parsePastedData: async function (rawData, table, columns) {
|
|
170
170
|
let ignoreNavigationProperty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
171
|
-
const pasteInfos =
|
|
171
|
+
const pasteInfos = this.getColumnInfo(table, columns, ignoreNavigationProperty);
|
|
172
172
|
const tableDefinition = table.getParent().getTableDefinition();
|
|
173
173
|
// Check if we have data for at least the first editable column
|
|
174
174
|
const pastedColumnCount = rawData.length ? rawData[0].length : 0;
|
|
@@ -419,4 +419,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
419
419
|
};
|
|
420
420
|
return PasteHelper;
|
|
421
421
|
}, false);
|
|
422
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRJbmZvRm9yRW50aXR5UHJvcGVydHkiLCJwcm9wZXJ0eVBhdGgiLCJyb3dCaW5kaW5nUGF0aCIsIm1ldGFDb250ZXh0IiwibWV0YU1vZGVsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZm9yY2VJZ25vcmUiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiY29tcHV0ZWQiLCJpZ25vcmUiLCJkaXNwbGF5RXJyb3JNZXNzYWdlcyIsImVycm9yTWVzc2FnZXMiLCJtZXNzYWdlRGV0YWlscyIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSIsImdldFRleHQiLCJub3RlTWVzc2FnZSIsInBhc3RlRXJyb3JNZXNzYWdlIiwidW5zaGlmdCIsIk1lc3NhZ2VCb3giLCJlcnJvciIsInRpdGxlIiwiZGV0YWlscyIsImpvaW4iLCJQYXN0ZUhlbHBlciIsImZvcm1hdEN1c3RvbU1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZXMiLCJpUm93TnVtYmVyIiwiZXJyb3JNZXNzYWdlIiwibnVtYmVyTWVzc2FnZXMiLCJpMThuUm93IiwiZm9yRWFjaCIsIm1lc3NhZ2UiLCJpbmRleE1lc3NhZ2UiLCJtZXNzYWdlVGV4dCIsImdldENvbHVtbkluZm8iLCJ0YWJsZSIsImNvbHVtbnMiLCJpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkiLCJtb2RlbCIsImdldFJvd0JpbmRpbmciLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsInJlc29sdmUiLCJnZXRQYXRoIiwiZ2V0Q29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZW50aXR5VHlwZVByb3BlcnRpZXMiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsImNvbHVtbkFycmFuZ2VtZW50UHJvcGVydHkiLCJ0YWJsZURlZmluaXRpb24iLCJnZXRQYXJlbnQiLCJnZXRUYWJsZURlZmluaXRpb24iLCJnZXRDb2x1bW5Gcm9tUHJvcGVydHlJbmZvcyIsImRhdGFQcm9wZXJ0eSIsImhhc1ZhbHVlSGVscCIsInRleHQiLCJwdXNoIiwiZXhwb3J0U2V0dGluZ3MiLCJpbmNsdWRlcyIsInBhdGgiLCJjb250cm9sIiwicHJvcGVydHlJbmZvIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5SW5mb0RpY3QiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXAiLCJrZXkiLCJjb2x1bW5JbmZvcyIsImdldENvbHVtbnMiLCJjb2x1bW4iLCJpbmZvUHJvcGVydHkiLCJnZXRQcm9wZXJ0eUtleSIsInByb3BlcnR5SW5mb3MiLCJoYXNWYWx1ZUhlbHBQcm9wZXJ0eSIsImNvbHVtblRvUHVzaCIsImV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlIiwiZmluZCIsInAiLCJuYW1lIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJWYWx1ZUxpc3QiLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsImNvbXB1dGVkUHJvcGVydGllcyIsImZpbHRlciIsImluZm8iLCJjb21wdXRlZFByb3BlcnR5IiwiY29sdW1uUG9zaXRpb24iLCJpbmRleE9mIiwiaXNDb2xFbXB0eSIsImV2ZXJ5Iiwicm93IiwicGFyc2VSZXN1bHQiLCJwYXJzZWREYXRhIiwiZXJyb3JzIiwiQ29yZVBhc3RlSGVscGVyIiwicGFyc2UiLCJvRWxlbWVudCIsIl91cGRhdGVDb250ZXh0cyIsImNvbnRleHRzIiwiZGF0YSIsImluZGV4Iiwic2V0UHJvcGVydHlQcm9taXNlcyIsInJvd0NvbnRleHQiLCJnZXRQcm9wZXJ0eUVkaXRNb2RlIiwiRmllbGRFZGl0TW9kZSIsIkVkaXRhYmxlIiwic2V0UHJvcGVydHkiLCJMb2ciLCJ3YXJuaW5nIiwiZ2V0SW5kZXgiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsImdldFBhc3RlSW5mb3JtYXRpb25Gb3JSZXBvbnNpdmVUYWJsZSIsImNlbGxTZWxlY3Rpb24iLCJwb3NGaXJzdFNlbGVjdGVkUm93IiwibnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MiLCJwb3NGaXJzdElubGluZUNyZWF0aW9uUm93SW5UYWJsZSIsImdldEN1cnJlbnRDb250ZXh0cyIsImZpbmRJbmRleCIsImNvbnRleHQiLCJpc1RyYW5zaWVudCIsInJvd3MiLCJ1cGRhdGVkUm93Q291bnQiLCJzbGljZSIsImxhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uIiwicG9wIiwicG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24iLCJNYXRoIiwibWluIiwiZ2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZSIsInRhYmxlUm93Y0NvdW50IiwiZ2V0TGVuZ3RoIiwiZ2V0UGFzdGVJbmZvcm1hdGlvbiIsInBhc3RlSW5mb3JtYXRpb24iLCJnZXRDcmVhdGlvbk1vZGUiLCJnZXROYW1lIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwicGFzdGVSYW5nZURhdGEiLCJwYXN0ZUluZm8iLCJjcmVhdGVFbXB0eVJvd3MiLCJyZXF1ZXN0Q29udGV4dHMiLCJwb3NGaXJzdElubGluZUNyZWF0aW9uUm93IiwiZm9jdXNSb3ciLCJ1cGRhdGVkQ29sQ291bnQiLCJrZXlzIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsImVkaXRGbG93IiwiYURhdGEiLCJ0aGVuIiwiYVBhcnNlZERhdGEiLCJhbGwiLCJtRGF0YSIsInZhbGlkYXRlRG9jdW1lbnQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbiIsImFWYWxpZGF0aW9uTWVzc2FnZXMiLCJhRXJyb3JNZXNzYWdlcyIsInJlZHVjZSIsImFNZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsIm1lc3NhZ2VzIiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJ0cmFuc2llbnRDb250ZXh0cyIsImxhc3RUcmFuc2llbnRDb250ZXh0IiwibGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwiZ2V0VGFyZ2V0cyIsIm5ld0NvbnRleHRzIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJjcmVhdGVBdEVuZCIsIm9uQmVmb3JlQ3JlYXRlIiwiZGVsZXRlIiwiY2F0Y2giLCJvRXJyb3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXJyYXlXaXRoSW5kZXgsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZWRGRVByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCAqIGFzIENvcmVQYXN0ZUhlbHBlciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9QYXN0ZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVR5cGUgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL09EYXRhVHlwZVwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwiLi4vY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBGaWVsZEVkaXRNb2RlIH0gZnJvbSBcIi4uL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5cbmV4cG9ydCB0eXBlIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0ge1xuXHRtZXNzYWdlVGV4dD86IHN0cmluZztcblx0bWVzc2FnZVRhcmdldD86IHN0cmluZztcbn07XG5cbnR5cGUgUGFzdGVJbmZvcm1hdGlvbiA9IHtcblx0cm93czogT0RhdGFWNENvbnRleHRbXTtcblx0Y29sdW1uczogQ29sdW1uW107XG5cdHVwZGF0ZWRSb3dDb3VudDogbnVtYmVyO1xuXHRudW1iZXJPZk5ld0NyZWF0aW9uUm93czogbnVtYmVyO1xufTtcblxuY29uc3QgZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5ID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0cm93QmluZGluZ1BhdGg6IHN0cmluZyxcblx0bWV0YUNvbnRleHQ6IENvbnRleHQsXG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdGVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyA9IGZhbHNlLFxuXHRmb3JjZUlnbm9yZSA9IGZhbHNlXG4pOiBQYXN0ZUNvbHVtbkluZm8ge1xuXHRjb25zdCBwcm9wZXJ0eSA9IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCksXG5cdFx0Zm9ybWF0T3B0aW9ucyA9IHsgcGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlIH0sXG5cdFx0dHlwZSA9IG1ldGFNb2RlbC5nZXRVSTVUeXBlKGAke3Jvd0JpbmRpbmdQYXRofS8ke3Byb3BlcnR5UGF0aH1gLCBmb3JtYXRPcHRpb25zKTtcblx0bGV0IGlzSWdub3JlZCwgY29tcHV0ZWQ7XG5cdGlmIChlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMgPT09IHRydWUpIHtcblx0XHRpc0lnbm9yZWQgPSAhcHJvcGVydHk7XG5cdFx0Y29tcHV0ZWQgPSBtZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtwcm9wZXJ0eVBhdGh9QE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkYCk7XG5cdH0gZWxzZSB7XG5cdFx0aXNJZ25vcmVkID0gIXByb3BlcnR5IHx8IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KGAke3Byb3BlcnR5UGF0aH1AT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRgKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGZvcmNlSWdub3JlIHx8IGlzSWdub3JlZCxcblx0XHRjb21wdXRlZDogY29tcHV0ZWQsXG5cdFx0dHlwZTogdHlwZVxuXHR9O1xufTtcblxuY29uc3QgZGlzcGxheUVycm9yTWVzc2FnZXMgPSBmdW5jdGlvbiAoZXJyb3JNZXNzYWdlczogc3RyaW5nW10pOiB2b2lkIHtcblx0Y29uc3QgbWVzc2FnZURldGFpbHMgPSBbLi4uZXJyb3JNZXNzYWdlc107XG5cdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpISxcblx0XHRlcnJvckNvcnJlY3Rpb25NZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX0NPUlJFQ1RJT05fTUVTU0FHRVwiKSxcblx0XHRub3RlTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9DT1JSRUNUSU9OX05PVEVcIik7XG5cdGxldCBwYXN0ZUVycm9yTWVzc2FnZTtcblxuXHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID4gMSkge1xuXHRcdHBhc3RlRXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX01FU1NBR0VfUExVUkFMXCIsIFttZXNzYWdlRGV0YWlscy5sZW5ndGhdKTtcblx0fSBlbHNlIHtcblx0XHRwYXN0ZUVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9NRVNTQUdFX1NJTkdVTEFSXCIpO1xuXHR9XG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQoXCJcIik7IC8vIFRvIHNob3cgc3BhY2UgYmV0d2VlbiB0aGUgc2hvcnQgdGV4dCBhbmQgdGhlIGxpc3Qgb2YgZXJyb3JzXG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQobm90ZU1lc3NhZ2UpO1xuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KGVycm9yQ29ycmVjdGlvbk1lc3NhZ2UpO1xuXHRNZXNzYWdlQm94LmVycm9yKHBhc3RlRXJyb3JNZXNzYWdlLCB7XG5cdFx0dGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0VSUk9SXCIpLFxuXHRcdGRldGFpbHM6IG1lc3NhZ2VEZXRhaWxzLmpvaW4oXCI8YnI+XCIpXG5cdH0pO1xufTtcblxudHlwZSBQYXN0ZUNvbHVtbkluZm8gPSB7XG5cdHByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHR5cGU/OiBPRGF0YVR5cGUgfCBudWxsO1xuXHRpZ25vcmU6IGJvb2xlYW47XG5cdGNvbXB1dGVkPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFBhc3RlSGVscGVyID0ge1xuXHRkaXNwbGF5RXJyb3JNZXNzYWdlczogZGlzcGxheUVycm9yTWVzc2FnZXMsXG5cdGZvcm1hdEN1c3RvbU1lc3NhZ2U6IGZ1bmN0aW9uICh2YWxpZGF0aW9uTWVzc2FnZXM6IGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlW10sIGlSb3dOdW1iZXI6IG51bWJlcik6IHN0cmluZyB7XG5cdFx0bGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG5cdFx0Y29uc3QgbnVtYmVyTWVzc2FnZXMgPSB2YWxpZGF0aW9uTWVzc2FnZXMubGVuZ3RoO1xuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpISxcblx0XHRcdGkxOG5Sb3cgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9NRVNTQUdFX0dST1VQX0RFU0NSSVBUSU9OX1RBQkxFX1JPV1wiKTtcblx0XHRpZiAobnVtYmVyTWVzc2FnZXMgPiAwKSB7XG5cdFx0XHRlcnJvck1lc3NhZ2UgKz0gYCR7aTE4blJvd30gJHtpUm93TnVtYmVyfTogYDtcblx0XHRcdHZhbGlkYXRpb25NZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlLCBpbmRleE1lc3NhZ2UpID0+IHtcblx0XHRcdFx0aWYgKG1lc3NhZ2UubWVzc2FnZVRleHQpIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgKz0gbWVzc2FnZS5tZXNzYWdlVGV4dCArIChpbmRleE1lc3NhZ2UgKyAxICE9PSBudW1iZXJNZXNzYWdlcyA/IFwiIFwiIDogXCJcIik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gZXJyb3JNZXNzYWdlO1xuXHR9LFxuXHQvKipcblx0ICogR2V0IGRldGFpbHMgYWJvdXQgdGFibGUgY29sdW1ucy5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB3aGljaCBjb250YWlucyB0aGUgY29sdW1ucyB0byBiZSBhbmFseXplZFxuXHQgKiBAcGFyYW0gY29sdW1ucyBBIGxpc3Qgb2YgY29sdW1ucyB0byBiZSBhbmFseXplZC4gSWYgdW5kZWZpbmVkLCBhbGwgY29sdW1ucyBmcm9tIHRoZSB0YWJsZSBhcmUgYW5hbHl6ZWRcblx0ICogQHBhcmFtIGlnbm9yZU5hdmlnYXRpb25Qcm9wZXJ0eSBJZiB0cnVlLCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgYXJlIGlnbm9yZWRcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2Ygb2JqZWN0cyBwcm92aWRpbmcgZGV0YWlscyBhYm91dCBjb2x1bW5zLlxuXHQgKi9cblx0Z2V0Q29sdW1uSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgY29sdW1ucz86IENvbHVtbltdLCBpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgPSB0cnVlKTogUGFzdGVDb2x1bW5JbmZvW10ge1xuXHRcdGNvbnN0IG1vZGVsID0gdGFibGUuZ2V0Um93QmluZGluZygpLmdldE1vZGVsKCksXG5cdFx0XHRtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHJvd0JpbmRpbmdQYXRoID0gbW9kZWwucmVzb2x2ZSh0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UGF0aCgpLCB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0Q29udGV4dCgpKSxcblx0XHRcdG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHJvd0JpbmRpbmdQYXRoKSxcblx0XHRcdGVudGl0eVR5cGVQcm9wZXJ0aWVzID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCkudGFyZ2V0RW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLFxuXHRcdFx0Y29sdW1uQXJyYW5nZW1lbnRQcm9wZXJ0eTogc3RyaW5nW10gPSBbXSxcblx0XHRcdHRhYmxlRGVmaW5pdGlvbiA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0ZnVuY3Rpb24gZ2V0Q29sdW1uRnJvbVByb3BlcnR5SW5mb3MoXG5cdFx0XHRkYXRhUHJvcGVydHk6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8sXG5cdFx0XHRoYXNWYWx1ZUhlbHA6IGJvb2xlYW4sXG5cdFx0XHRwcm9wZXJ0eTogc3RyaW5nXG5cdFx0KTogUGFzdGVDb2x1bW5JbmZvIHwgdW5kZWZpbmVkIHtcblx0XHRcdC8vIElmIHdlIGhhdmUgYSB0ZXh0QXJyYW5nZW1lbnQsIHdlIHdhbnQgdG8gcmVtb3ZlIGl0IGlmIGl0IGhhcyBhIFZhbHVlTGlzdCBhc3NvY2lhdGVkLlxuXHRcdFx0aWYgKGRhdGFQcm9wZXJ0eS50ZXh0ICYmIGhhc1ZhbHVlSGVscCkge1xuXHRcdFx0XHRjb2x1bW5BcnJhbmdlbWVudFByb3BlcnR5LnB1c2goZGF0YVByb3BlcnR5LnRleHQpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gTm9uIGV4cG9ydGVkIGNvbHVtbnMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGNvbHVtbkluZm9zXG5cdFx0XHRpZiAoZGF0YVByb3BlcnR5LmV4cG9ydFNldHRpbmdzICE9PSBudWxsKSB7XG5cdFx0XHRcdC8vIENoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdGlmIChpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgJiYgcHJvcGVydHkuaW5jbHVkZXMoXCIvXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHByb3BlcnR5OiBkYXRhUHJvcGVydHkucGF0aCxcblx0XHRcdFx0XHRcdGlnbm9yZTogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGZvcmNlSWdub3JlID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKGRhdGFQcm9wZXJ0eS5wYXRoKSB7XG5cdFx0XHRcdFx0XHRmb3JjZUlnbm9yZSA9IGNvbHVtbkFycmFuZ2VtZW50UHJvcGVydHkuaW5jbHVkZXMoZGF0YVByb3BlcnR5LnBhdGgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBUaGUgb2JqZWN0IHRoaXMgaXMgd2VpcmQgaW4gYSBmdW5jdGlvbiwgc28gY2hhbmdpbmcgaXQgdG8gUGFzdGVIZWxwZXIgaW5zdGVhZC5cblx0XHRcdFx0XHRyZXR1cm4gUGFzdGVIZWxwZXIuZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5KFxuXHRcdFx0XHRcdFx0ZGF0YVByb3BlcnR5LnBhdGghLFxuXHRcdFx0XHRcdFx0cm93QmluZGluZ1BhdGgsXG5cdFx0XHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRcdGZvcmNlSWdub3JlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IHByb3BlcnR5SW5mbyA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHRcdGNvbnN0IHByb3BlcnR5SW5mb0RpY3Q6IFJlY29yZDxzdHJpbmcsIEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8+ID0gT2JqZWN0LmFzc2lnbihcblx0XHRcdHt9LFxuXHRcdFx0Li4ucHJvcGVydHlJbmZvLm1hcCgocHJvcGVydHkpID0+ICh7IFtwcm9wZXJ0eS5rZXldOiBwcm9wZXJ0eSB9KSlcblx0XHQpO1xuXHRcdGNvbnN0IGNvbHVtbkluZm9zOiBQYXN0ZUNvbHVtbkluZm9bXSA9IFtdO1xuXHRcdChjb2x1bW5zID8/IHRhYmxlLmdldENvbHVtbnMoKSkuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBwcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXRQcm9wZXJ0eUtleSgpXTtcblx0XHRcdC8vIENoZWNrIGlmIGl0J3MgYSBjb21wbGV4IHByb3BlcnR5IChwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIG11bHRpcGxlIHNpbXBsZSBwcm9wZXJ0aWVzKVxuXHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdC8vIEdldCBkYXRhIGZyb20gc2ltcGxlIHByb3BlcnR5XG5cdFx0XHRcdGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zLmZvckVhY2goKHByb3BlcnR5OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBwcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XSxcblx0XHRcdFx0XHRcdGhhc1ZhbHVlSGVscCA9IHRoaXMuaGFzVmFsdWVIZWxwUHJvcGVydHkoZW50aXR5VHlwZVByb3BlcnRpZXMsIGRhdGFQcm9wZXJ0eSksXG5cdFx0XHRcdFx0XHRjb2x1bW5Ub1B1c2ggPSBnZXRDb2x1bW5Gcm9tUHJvcGVydHlJbmZvcyhkYXRhUHJvcGVydHksIGhhc1ZhbHVlSGVscCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdGlmIChjb2x1bW5Ub1B1c2gpIHtcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goY29sdW1uVG9QdXNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoaW5mb1Byb3BlcnR5LmV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlKSB7XG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh7XG5cdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ0YXJnZXRWYWx1ZUZyb21EYXRhUG9pbnRcIixcblx0XHRcdFx0XHRcdGlnbm9yZTogdHJ1ZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE5vbiBleHBvcnRlZCBjb2x1bW5zIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBjb2x1bW5JbmZvc1xuXHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkuZXhwb3J0U2V0dGluZ3MgIT09IG51bGwpIHtcblx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wYXRoKSB7XG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaChcblx0XHRcdFx0XHRcdFBhc3RlSGVscGVyLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShcblx0XHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnBhdGgsXG5cdFx0XHRcdFx0XHRcdHJvd0JpbmRpbmdQYXRoLFxuXHRcdFx0XHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0bWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEVtcHR5IGNvbHVtbiAtLT4gaWdub3JlXG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh7XG5cdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdHR5cGU6IG51bGwsXG5cdFx0XHRcdFx0XHRpZ25vcmU6IHRydWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBjb2x1bW5JbmZvcztcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cblx0LyoqXG5cdCAqIFJldHVybnMgd2hldGhlciBhIHByb3BlcnR5IGhhcyBhIHZhbHVlIGxpc3Qgb3Igbm90LlxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVByb3BlcnRpZXMgVGhlIGVudGl0eSBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBkYXRhUHJvcGVydHkgVGhlIHByb3BlcnR5IHdlIHdhbnQgdG8gY2hlY2tcblx0ICogQHJldHVybnMgQm9vbGVhbiBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGxpc3QuXG5cdCAqL1xuXHRoYXNWYWx1ZUhlbHBQcm9wZXJ0eTogZnVuY3Rpb24gKFxuXHRcdGVudGl0eVR5cGVQcm9wZXJ0aWVzOiBBcnJheVdpdGhJbmRleDxQcm9wZXJ0eSwgXCJuYW1lXCIgfCBcImZ1bGx5UXVhbGlmaWVkTmFtZVwiPixcblx0XHRkYXRhUHJvcGVydHk6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9cblx0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcHJvcGVydHkgPSBlbnRpdHlUeXBlUHJvcGVydGllcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IGRhdGFQcm9wZXJ0eS5wYXRoKTtcblx0XHRpZiAocHJvcGVydHkpIHtcblx0XHRcdHJldHVybiAhIXByb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm0gYW4gYXJyYXkgb2YgZGF0YSBieSBwYXJzaW5nIGl0IGludG8gYW4gYXJyYXkgb2Ygb2JqZWN0cywgZmFjaWxpdGF0aW5nIHRoZSBtYXBwaW5nIG9mIGNvbHVtbnMgYW5kIGRhdGEuXG5cdCAqIEBwYXJhbSByYXdEYXRhIFRoZSB0YWJsZSB3aGljaCBjb250YWlucyB0aGUgY29sdW1ucyB0byBiZSBhbmFseXplZFxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIHdoaWNoIHJlY2VpdmVzIHRoZSBkYXRhXG5cdCAqIEBwYXJhbSBjb2x1bW5zIEEgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIHVzZWQgdG8gbWFwIHRoZSBkYXRhLiBJZiB1bmRlZmluZWQsIGFsbCB0YWJsZSBjb2x1bW5zIGFyZSB1c2VkXG5cdCAqIEBwYXJhbSBpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgSWYgdHJ1ZSwgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGFyZSBpZ25vcmVkXG5cdCAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiBvYmplY3RzIHRoYXQgYXNzb2NpYXRlcyBkYXRhIHdpdGggY29ycmVzcG9uZGluZyBjb2x1bW5zLlxuXHQgKi9cblx0cGFyc2VQYXN0ZWREYXRhOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogdW5rbm93bltdW10sXG5cdFx0dGFibGU6IFRhYmxlLFxuXHRcdGNvbHVtbnM/OiBDb2x1bW5bXSxcblx0XHRpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgPSB0cnVlXG5cdCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4ge1xuXHRcdGNvbnN0IHBhc3RlSW5mb3MgPSBhd2FpdCB0aGlzLmdldENvbHVtbkluZm8odGFibGUsIGNvbHVtbnMsIGlnbm9yZU5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0XHQvLyBDaGVjayBpZiB3ZSBoYXZlIGRhdGEgZm9yIGF0IGxlYXN0IHRoZSBmaXJzdCBlZGl0YWJsZSBjb2x1bW5cblx0XHRjb25zdCBwYXN0ZWRDb2x1bW5Db3VudCA9IHJhd0RhdGEubGVuZ3RoID8gcmF3RGF0YVswXS5sZW5ndGggOiAwO1xuXHRcdGxldCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSAtMTtcblx0XHRmb3IgKGxldCBJID0gMDsgSSA8IHBhc3RlSW5mb3MubGVuZ3RoICYmIGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDA7IEkrKykge1xuXHRcdFx0aWYgKCFwYXN0ZUluZm9zW0ldLmlnbm9yZSAmJiAhcGFzdGVJbmZvc1tJXS5jb21wdXRlZCkge1xuXHRcdFx0XHRmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBJO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IGNvbXB1dGVkUHJvcGVydGllcyA9IHBhc3RlSW5mb3MuZmlsdGVyKGZ1bmN0aW9uIChpbmZvKSB7XG5cdFx0XHRcdHJldHVybiBpbmZvLmNvbXB1dGVkO1xuXHRcdFx0fSk7XG5cdFx0XHQvL2ZvciBlYWNoIGNvbXB1dGVkIHByb3BlcnR5LCBjaGVjayBpZiB0aGUgY29sdW1uIGlzIGVtcHR5IC4gSWYgeWVzLCBpZ25vcmUgaXRcblx0XHRcdGNvbXB1dGVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChjb21wdXRlZFByb3BlcnR5KSB7XG5cdFx0XHRcdGNvbnN0IGNvbHVtblBvc2l0aW9uID0gcGFzdGVJbmZvcy5pbmRleE9mKGNvbXB1dGVkUHJvcGVydHkpO1xuXHRcdFx0XHRjb25zdCBpc0NvbEVtcHR5ID0gcmF3RGF0YS5ldmVyeSgocm93KSA9PiByb3dbY29sdW1uUG9zaXRpb25dID09PSBcIlwiKTtcblx0XHRcdFx0aWYgKGlzQ29sRW1wdHkpIHtcblx0XHRcdFx0XHRjb21wdXRlZFByb3BlcnR5Lmlnbm9yZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBhcnNlUmVzdWx0ID0gYXdhaXQgKGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDAgfHwgZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4ID4gcGFzdGVkQ29sdW1uQ291bnQgLSAxXG5cdFx0XHQ/IHsgcGFyc2VkRGF0YTogW10sIGVycm9yczogbnVsbCB9IC8vIFdlIGRvbid0IGhhdmUgZGF0YSBmb3IgYW4gZWRpdGFibGUgY29sdW1uIC0tPiByZXR1cm4gZW1wdHkgcGFyc2VkIGRhdGFcblx0XHRcdDogQ29yZVBhc3RlSGVscGVyLnBhcnNlKHJhd0RhdGEsIHBhc3RlSW5mb3MpKTtcblx0XHRpZiAocGFyc2VSZXN1bHQuZXJyb3JzKSB7XG5cdFx0XHRjb25zdCBlcnJvck1lc3NhZ2VzID0gcGFyc2VSZXN1bHQuZXJyb3JzLm1hcChmdW5jdGlvbiAob0VsZW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuIG9FbGVtZW50Lm1lc3NhZ2U7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlcyk7XG5cdFx0XHRyZXR1cm4gW107IC8vIEVycm9ycyAtLT4gcmV0dXJuIG5vdGhpbmdcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHBhcnNlUmVzdWx0LnBhcnNlZERhdGE7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgYW4gYXJyYXkgb2YgY29udGV4dHMuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgd2hpY2ggY29udGFpbnMgdGhlIGNvbnRleHRzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIGNvbnRleHRzIEFycmF5IG9mIGNvbnRleHRzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIGRhdGEgQXJyYXkgb2Ygb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgdXNlZCB0byB1cGRhdGUgdGhlIGNvbnRleHRzXG5cdCAqIEByZXR1cm5zIFByb21pc2Vcblx0ICovXG5cdF91cGRhdGVDb250ZXh0czogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHRhYmxlOiBUYWJsZSxcblx0XHRjb250ZXh0czogKE9EYXRhVjRDb250ZXh0IHwgdW5kZWZpbmVkKVtdLFxuXHRcdGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0bGV0IGluZGV4ID0gMDtcblx0XHRjb25zdCBzZXRQcm9wZXJ0eVByb21pc2VzID0gW107XG5cdFx0Zm9yIChjb25zdCByb3cgb2YgZGF0YSkge1xuXHRcdFx0Y29uc3Qgcm93Q29udGV4dCA9IGNvbnRleHRzW2luZGV4KytdO1xuXHRcdFx0aWYgKHJvd0NvbnRleHQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBkYXRhUHJvcGVydHkgaW4gcm93KSB7XG5cdFx0XHRcdFx0aWYgKCh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0UHJvcGVydHlFZGl0TW9kZShkYXRhUHJvcGVydHksIHJvd0NvbnRleHQpID09PSBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eVByb21pc2VzLnB1c2gocm93Q29udGV4dC5zZXRQcm9wZXJ0eShkYXRhUHJvcGVydHksIHJvd1tkYXRhUHJvcGVydHldKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdExvZy53YXJuaW5nKGBQcm9wZXJ0eSAke2RhdGFQcm9wZXJ0eX0gaXMgbm90IGVkaXRhYmxlIGZvciByb3cgJHtyb3dDb250ZXh0LmdldEluZGV4KCl9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChzZXRQcm9wZXJ0eVByb21pc2VzKTtcblx0fSxcblxuXHQvKipcblx0ICogIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGUgb3BlcmF0aW9uIG9uIFJlc3BvbnNpdmVUYWJsZS5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbkZvclJlcG9uc2l2ZVRhYmxlOiBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogc3RyaW5nW11bXSxcblx0XHRjZWxsU2VsZWN0aW9uOiB7IGNvbHVtbnM6IENvbHVtbltdOyByb3dzOiBPRGF0YVY0Q29udGV4dFtdIH0sXG5cdFx0cG9zRmlyc3RTZWxlY3RlZFJvdzogbnVtYmVyLFxuXHRcdHRhYmxlOiBUYWJsZVxuXHQpOiBQYXN0ZUluZm9ybWF0aW9uIHtcblx0XHRsZXQgbnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPSAwO1xuXHRcdGNvbnN0IHBvc0ZpcnN0SW5saW5lQ3JlYXRpb25Sb3dJblRhYmxlID0gdGFibGVcblx0XHRcdC5nZXRSb3dCaW5kaW5nKClcblx0XHRcdC5nZXRDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0LmZpbmRJbmRleCgoY29udGV4dCkgPT4gY29udGV4dC5pc1RyYW5zaWVudCgpKTtcblx0XHRjb25zdCByb3dzID0gY2VsbFNlbGVjdGlvbi5yb3dzO1xuXHRcdGxldCB1cGRhdGVkUm93Q291bnQgPSAwO1xuXHRcdGNvbnN0IGNvbHVtbnMgPVxuXHRcdFx0Y2VsbFNlbGVjdGlvbi5jb2x1bW5zLmxlbmd0aCA+IDFcblx0XHRcdFx0PyBjZWxsU2VsZWN0aW9uLmNvbHVtbnNcblx0XHRcdFx0OiB0YWJsZS5nZXRDb2x1bW5zKCkuc2xpY2UodGFibGUuZ2V0Q29sdW1ucygpLmluZGV4T2YoY2VsbFNlbGVjdGlvbi5jb2x1bW5zWzBdKSk7XG5cblx0XHQvLyBvbmx5IG9uZSBjZWxsIGlzIHNlbGVjdGVkXG5cdFx0aWYgKGNlbGxTZWxlY3Rpb24uY29sdW1ucy5sZW5ndGggPT09IDEgJiYgY2VsbFNlbGVjdGlvbi5yb3dzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgdGhlIGlubGluZSBjcmVhdGlvbiByb3cgaXMgaW4gdGhlIHRhcmdldGVkIHJhbmdlXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3cgPD0gcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd0luVGFibGUgJiZcblx0XHRcdFx0cG9zRmlyc3RTZWxlY3RlZFJvdyArIHJhd0RhdGEubGVuZ3RoID4gcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd0luVGFibGVcblx0XHRcdCkge1xuXHRcdFx0XHRudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9IHJhd0RhdGEubGVuZ3RoIC0gKHBvc0ZpcnN0SW5saW5lQ3JlYXRpb25Sb3dJblRhYmxlIC0gcG9zRmlyc3RTZWxlY3RlZFJvdykgLSAxO1xuXHRcdFx0XHR1cGRhdGVkUm93Q291bnQgPSByYXdEYXRhLmxlbmd0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRoZSBpbmxpbmUgY3JlYXRpb24gcm93IGlzIG5vdCBpbiB0aGUgdGFyZ2V0ZWQgcmFuZ2Vcblx0XHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPSAwO1xuXHRcdFx0XHR1cGRhdGVkUm93Q291bnQgPSByYXdEYXRhLmxlbmd0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbXVsdGlwbGUgY2VsbHMgYXJlIHNlbGVjdGVkXG5cdFx0XHRjb25zdCBsYXN0SW5saW5lQ3JlYXRpb25Sb3dJblNlbGVjdGlvbiA9IHJvd3MuZmlsdGVyKChjb250ZXh0KSA9PiBjb250ZXh0LmlzVHJhbnNpZW50KCkpPy5wb3AoKTtcblx0XHRcdGNvbnN0IHBvc0xhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uID0gbGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb25cblx0XHRcdFx0PyByb3dzLmluZGV4T2YobGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24pXG5cdFx0XHRcdDogLTE7XG5cdFx0XHR1cGRhdGVkUm93Q291bnQgPSBNYXRoLm1pbihyYXdEYXRhLmxlbmd0aCwgY2VsbFNlbGVjdGlvbi5yb3dzLmxlbmd0aCk7XG5cdFx0XHQvLyBjaGVjayBpZiB0aGUgaW5saW5lIGNyZWF0aW9uIHJvdyBpcyBpbiB0aGUgc2VsZWN0ZWQgcmFuZ2Vcblx0XHRcdGlmIChwb3NMYXN0SW5saW5lQ3JlYXRpb25Sb3dJblNlbGVjdGlvbiA+IC0xKSB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudCA9IHBvc0xhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uID09PSBjZWxsU2VsZWN0aW9uLnJvd3MubGVuZ3RoIC0gMSA/IHJhd0RhdGEubGVuZ3RoIDogdXBkYXRlZFJvd0NvdW50O1xuXHRcdFx0XHRudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9XG5cdFx0XHRcdFx0cG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24gPT09IGNlbGxTZWxlY3Rpb24ucm93cy5sZW5ndGggLSAxXG5cdFx0XHRcdFx0XHQ/IHJhd0RhdGEubGVuZ3RoIC0gcG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24gLSAxXG5cdFx0XHRcdFx0XHQ6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB7IHJvd3MsIGNvbHVtbnMsIHVwZGF0ZWRSb3dDb3VudCwgbnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgfTtcblx0fSxcblxuXHQvKipcblx0ICogIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGUgb3BlcmF0aW9uIG9uIEdyaWRUYWJsZS5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZTogZnVuY3Rpb24gKFxuXHRcdHJhd0RhdGE6IHN0cmluZ1tdW10sXG5cdFx0Y2VsbFNlbGVjdGlvbjogeyBjb2x1bW5zOiBDb2x1bW5bXTsgcm93czogT0RhdGFWNENvbnRleHRbXSB9LFxuXHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3c6IG51bWJlcixcblx0XHR0YWJsZTogVGFibGVcblx0KTogUGFzdGVJbmZvcm1hdGlvbiB7XG5cdFx0bGV0IG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzID0gMDtcblx0XHRjb25zdCByb3dzID0gY2VsbFNlbGVjdGlvbi5yb3dzO1xuXHRcdGxldCB1cGRhdGVkUm93Q291bnQgPSAwO1xuXHRcdGNvbnN0IHRhYmxlUm93Y0NvdW50ID0gdGFibGUuZ2V0Um93QmluZGluZygpLmdldExlbmd0aCgpO1xuXHRcdGxldCBjb2x1bW5zID1cblx0XHRcdGNlbGxTZWxlY3Rpb24uY29sdW1ucy5sZW5ndGggPiAxXG5cdFx0XHRcdD8gY2VsbFNlbGVjdGlvbi5jb2x1bW5zXG5cdFx0XHRcdDogdGFibGUuZ2V0Q29sdW1ucygpLnNsaWNlKHRhYmxlLmdldENvbHVtbnMoKS5pbmRleE9mKGNlbGxTZWxlY3Rpb24uY29sdW1uc1swXSkpO1xuXHRcdGlmIChjZWxsU2VsZWN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAxICYmIGNlbGxTZWxlY3Rpb24ucm93cy5sZW5ndGggPT09IDEpIHtcblx0XHRcdG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzID1cblx0XHRcdFx0cG9zRmlyc3RTZWxlY3RlZFJvdyArIHJhd0RhdGEubGVuZ3RoID4gdGFibGVSb3djQ291bnQgPyBwb3NGaXJzdFNlbGVjdGVkUm93ICsgcmF3RGF0YS5sZW5ndGggLSB0YWJsZVJvd2NDb3VudCA6IDA7XG5cdFx0XHRjb2x1bW5zID0gdGFibGUuZ2V0Q29sdW1ucygpLnNsaWNlKHRhYmxlLmdldENvbHVtbnMoKS5pbmRleE9mKGNlbGxTZWxlY3Rpb24uY29sdW1uc1swXSkpO1xuXHRcdFx0dXBkYXRlZFJvd0NvdW50ID0gcmF3RGF0YS5sZW5ndGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG11bHRpcGxlIGNlbGxzIGFyZSBzZWxlY3RlZFxuXHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPVxuXHRcdFx0XHRwb3NGaXJzdFNlbGVjdGVkUm93ICsgcm93cy5sZW5ndGggPj0gdGFibGVSb3djQ291bnQgPyBwb3NGaXJzdFNlbGVjdGVkUm93ICsgcmF3RGF0YS5sZW5ndGggLSB0YWJsZVJvd2NDb3VudCA6IDA7XG5cdFx0XHR1cGRhdGVkUm93Q291bnQgPSBudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9PT0gMCA/IE1hdGgubWluKHJhd0RhdGEubGVuZ3RoLCBjZWxsU2VsZWN0aW9uLnJvd3MubGVuZ3RoKSA6IHJhd0RhdGEubGVuZ3RoO1xuXHRcdH1cblx0XHRyZXR1cm4geyByb3dzLCBjb2x1bW5zLCB1cGRhdGVkUm93Q291bnQsIG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzIH07XG5cdH0sXG5cblx0LyoqXG5cdCAqICBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhc3RlIG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbjogZnVuY3Rpb24gKFxuXHRcdHJhd0RhdGE6IHN0cmluZ1tdW10sXG5cdFx0Y2VsbFNlbGVjdGlvbjogeyBjb2x1bW5zOiBDb2x1bW5bXTsgcm93czogT0RhdGFWNENvbnRleHRbXSB9LFxuXHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3c6IG51bWJlcixcblx0XHR0YWJsZTogVGFibGVcblx0KTogUGFzdGVJbmZvcm1hdGlvbiB8IG51bGwge1xuXHRcdGxldCBwYXN0ZUluZm9ybWF0aW9uOiBQYXN0ZUluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cblx0XHRzd2l0Y2ggKHRhYmxlLmRhdGEoXCJ0YWJsZVR5cGVcIikpIHtcblx0XHRcdGNhc2UgXCJHcmlkVGFibGVcIjpcblx0XHRcdFx0cGFzdGVJbmZvcm1hdGlvbiA9IHRoaXMuZ2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZShyYXdEYXRhLCBjZWxsU2VsZWN0aW9uLCBwb3NGaXJzdFNlbGVjdGVkUm93LCB0YWJsZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlJlc3BvbnNpdmVUYWJsZVwiOlxuXHRcdFx0XHRwYXN0ZUluZm9ybWF0aW9uID0gdGhpcy5nZXRQYXN0ZUluZm9ybWF0aW9uRm9yUmVwb25zaXZlVGFibGUocmF3RGF0YSwgY2VsbFNlbGVjdGlvbiwgcG9zRmlyc3RTZWxlY3RlZFJvdywgdGFibGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdExvZy53YXJuaW5nKGBQYXN0ZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgdHlwZSAke3RhYmxlLmRhdGEoXCJ0YWJsZVR5cGVcIil9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbiAmJlxuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbj8ubnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPiAwICYmXG5cdFx0XHQodGFibGUuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkgJiB7IGdldENyZWF0aW9uTW9kZTogRnVuY3Rpb24gfSkuZ2V0Q3JlYXRpb25Nb2RlKCkuZ2V0TmFtZSgpICE9PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0KSB7XG5cdFx0XHRwYXN0ZUluZm9ybWF0aW9uLnVwZGF0ZWRSb3dDb3VudCAtPSBwYXN0ZUluZm9ybWF0aW9uLm51bWJlck9mTmV3Q3JlYXRpb25Sb3dzO1xuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbi5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9IDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHBhc3RlSW5mb3JtYXRpb247XG5cdH0sXG5cblx0LyoqXG5cdCAqIFBhc3RlIGRhdGEgaW50byBhIHRhYmxlIHVzaW5nIGEgc2VsZWN0aW9uIG9mIGNvbHVtbiBhbmQgcm93cy5cblx0ICogQHBhcmFtIHJhd0RhdGEgVGhlIGRhdGEgdG8gYmUgcGFzdGVkIGludG8gdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBjZWxsU2VsZWN0aW9uIFRoZSBjb2x1bW5zIGFuZCB0aGUgcm93cyB0byBiZSB1cGRhdGVkXG5cdCAqIEBwYXJhbSBjZWxsU2VsZWN0aW9uLmNvbHVtbnMgVGhlIGNvbHVtbnMgdG8gYmUgdXBkYXRlZFxuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzIFRoZSByb3dzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGVcblx0ICovXG5cdHBhc3RlUmFuZ2VEYXRhOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogc3RyaW5nW11bXSxcblx0XHRjZWxsU2VsZWN0aW9uOiB7IGNvbHVtbnM6IENvbHVtbltdOyByb3dzOiBPRGF0YVY0Q29udGV4dFtdIH0sXG5cdFx0dGFibGU6IFRhYmxlXG5cdCk6IFByb21pc2U8XG5cdFx0fCB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudDogbnVtYmVyO1xuXHRcdFx0XHR1cGRhdGVkQ29sQ291bnQ6IG51bWJlcjtcblx0XHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3M6IG51bWJlcjtcblx0XHRcdFx0cG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRcdCAgfVxuXHRcdHwgdW5kZWZpbmVkXG5cdD4ge1xuXHRcdGNvbnN0IHBvc0ZpcnN0U2VsZWN0ZWRSb3cgPSBjZWxsU2VsZWN0aW9uLnJvd3NbMF0uZ2V0SW5kZXgoKSE7XG5cblx0XHRjb25zdCBwYXN0ZUluZm8gPSB0aGlzLmdldFBhc3RlSW5mb3JtYXRpb24ocmF3RGF0YSwgY2VsbFNlbGVjdGlvbiwgcG9zRmlyc3RTZWxlY3RlZFJvdywgdGFibGUpO1xuXHRcdGlmICghcGFzdGVJbmZvKSByZXR1cm47XG5cblx0XHRjb25zdCBwYXJzZWREYXRhID0gYXdhaXQgdGhpcy5wYXJzZVBhc3RlZERhdGEocmF3RGF0YSwgdGFibGUsIHBhc3RlSW5mby5jb2x1bW5zLCBmYWxzZSk7XG5cdFx0aWYgKHBhcnNlZERhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyA+IDApIHtcblx0XHRcdFx0YXdhaXQgKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5jcmVhdGVFbXB0eVJvd3MoXG5cdFx0XHRcdFx0dGFibGUuZ2V0Um93QmluZGluZygpLFxuXHRcdFx0XHRcdHRhYmxlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vbG9hZCBtaXNzaW5nIHJvd3MgaWYgbmVlZGVkIGluY2x1ZGluZyB0aGUgbmV3bHkgY3JlYXRlZCByb3dzXG5cdFx0XHRwYXN0ZUluZm8ucm93cyA9IGF3YWl0IHRhYmxlLmdldFJvd0JpbmRpbmcoKS5yZXF1ZXN0Q29udGV4dHMocG9zRmlyc3RTZWxlY3RlZFJvdywgcGFzdGVJbmZvLnVwZGF0ZWRSb3dDb3VudCk7XG5cdFx0XHRhd2FpdCB0aGlzLl91cGRhdGVDb250ZXh0cyh0YWJsZSwgcGFzdGVJbmZvLnJvd3MsIHBhcnNlZERhdGEpO1xuXG5cdFx0XHQvLyBmb2N1c2luZyBvbiB0aGUgZmlyc3QgYXZhaWxhYmxlIGNyZWF0aW9uIHJvd1xuXHRcdFx0Y29uc3QgcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdyA9IHBhc3RlSW5mby5yb3dzLmZpbmQoKGNvbnRleHQpID0+IGNvbnRleHQuaXNUcmFuc2llbnQoKSk/LmdldEluZGV4KCk7XG5cdFx0XHRpZiAocG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdykge1xuXHRcdFx0XHR0YWJsZS5mb2N1c1Jvdyhwb3NGaXJzdElubGluZUNyZWF0aW9uUm93KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudDogcGFzdGVJbmZvLnVwZGF0ZWRSb3dDb3VudCxcblx0XHRcdFx0dXBkYXRlZENvbENvdW50OiBPYmplY3Qua2V5cyhwYXJzZWREYXRhWzBdKS5sZW5ndGgsXG5cdFx0XHRcdG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzOiBwYXN0ZUluZm8ubnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPCAwID8gMCA6IHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyxcblx0XHRcdFx0cG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd1xuXHRcdFx0fTtcblx0XHR9XG5cdH0sXG5cdHBhc3RlRGF0YTogYXN5bmMgZnVuY3Rpb24gKHJhd0RhdGE6IHN0cmluZ1tdW10sIHRhYmxlOiBUYWJsZSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPENvbnRleHRbXSB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHRjb25zdCB0YWJsZURlZmluaXRpb24gPSAodGFibGUuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkpLmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXHRcdGxldCBhRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKGFzeW5jIChhUGFyc2VkRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkgPT4ge1xuXHRcdFx0XHRhRGF0YSA9IGFQYXJzZWREYXRhIHx8IFtdO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0YURhdGEubWFwKGFzeW5jIChtRGF0YSkgPT5cblx0XHRcdFx0XHRcdGVkaXRGbG93LnZhbGlkYXRlRG9jdW1lbnQodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dCwge1xuXHRcdFx0XHRcdFx0XHRkYXRhOiBtRGF0YSxcblx0XHRcdFx0XHRcdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uOiB0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmN1c3RvbVZhbGlkYXRpb25GdW5jdGlvblxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFWYWxpZGF0aW9uTWVzc2FnZXMpID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXM6IHsgbWVzc2FnZXM6IHsgbWVzc2FnZVRhcmdldD86IHN0cmluZzsgbWVzc2FnZVRleHQ6IHN0cmluZyB9W107IHJvdzogbnVtYmVyIH1bXSA9XG5cdFx0XHRcdFx0YVZhbGlkYXRpb25NZXNzYWdlcy5yZWR1Y2UoXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoYU1lc3NhZ2VzLCBhQ3VzdG9tTWVzc2FnZXMsIGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhQ3VzdG9tTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGFNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZXM6IGFDdXN0b21NZXNzYWdlcywgcm93OiBpbmRleCArIDEgfSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFNZXNzYWdlcztcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRbXSBhcyB7IG1lc3NhZ2VzOiB7IG1lc3NhZ2VUYXJnZXQ/OiBzdHJpbmc7IG1lc3NhZ2VUZXh0OiBzdHJpbmcgfVtdOyByb3c6IG51bWJlciB9W11cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoYUVycm9yTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGNvbnN0IGFSb3dNZXNzYWdlcyA9IGFFcnJvck1lc3NhZ2VzLm1hcCgobUVycm9yKSA9PiB0aGlzLmZvcm1hdEN1c3RvbU1lc3NhZ2UobUVycm9yLm1lc3NhZ2VzLCBtRXJyb3Iucm93KSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhhUm93TWVzc2FnZXMpO1xuXHRcdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYURhdGE7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFWYWxpZGF0ZWREYXRhKTogUHJvbWlzZTxDb250ZXh0W10gfCB1bmRlZmluZWQ+ID0+IHtcblx0XHRcdFx0Ly8gcmVtb3ZlIHRoZSBsYXN0IHRyYW5zaWVudCBjb250ZXh0IGlmIGl0IGV4aXN0c1xuXHRcdFx0XHRjb25zdCB0cmFuc2llbnRDb250ZXh0cyA9IHRhYmxlXG5cdFx0XHRcdFx0LmdldFJvd0JpbmRpbmcoKVxuXHRcdFx0XHRcdC5nZXRDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0XHRcdC5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaXNUcmFuc2llbnQoKSk7XG5cdFx0XHRcdGNvbnN0IGxhc3RUcmFuc2llbnRDb250ZXh0ID0gdHJhbnNpZW50Q29udGV4dHMucG9wKCk7XG5cdFx0XHRcdC8vY2hlY2sgaWYgdGhlIGxhc3QgdHJhbnNpZW50IGNvbnRleHQgaGFzIGFuIGVycm9yIG1lc3NhZ2Vcblx0XHRcdFx0Y29uc3QgbGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UgPSAhIU1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKVxuXHRcdFx0XHRcdC5nZXREYXRhKClcblx0XHRcdFx0XHQuZmluZCgobWVzc2FnZTogTWVzc2FnZSkgPT4gbGFzdFRyYW5zaWVudENvbnRleHQgJiYgbWVzc2FnZS5nZXRUYXJnZXRzKClbMF0uaW5jbHVkZXMobGFzdFRyYW5zaWVudENvbnRleHQuZ2V0UGF0aCgpKSk7XG5cdFx0XHRcdGNvbnN0IG5ld0NvbnRleHRzID1cblx0XHRcdFx0XHRhVmFsaWRhdGVkRGF0YS5sZW5ndGggPiAwXG5cdFx0XHRcdFx0XHQ/IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRhVmFsaWRhdGVkRGF0YSxcblx0XHRcdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmNyZWF0ZUF0RW5kLFxuXHRcdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5lZGl0Rmxvdy5vbkJlZm9yZUNyZWF0ZVxuXHRcdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gaWYgdGhlIGxhc3QgdHJhbnNpZW50IGNvbnRleHQgaGFzIG5vIGVycm9yIG1lc3NhZ2UsIGRlbGV0ZSBpdCBhbmQgcmVjcmVhdGUgYSBuZXcgb25lIGF0IHRoZSBsYXN0IHBvc2l0aW9uXG5cdFx0XHRcdGlmIChsYXN0VHJhbnNpZW50Q29udGV4dCAmJiAhbGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UpIHtcblx0XHRcdFx0XHRsYXN0VHJhbnNpZW50Q29udGV4dD8uZGVsZXRlKCk7XG5cdFx0XHRcdFx0YXdhaXQgKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5jcmVhdGVFbXB0eVJvd3ModGFibGUuZ2V0Um93QmluZGluZygpLCB0YWJsZSwgZmFsc2UsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBuZXdDb250ZXh0cztcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKG9FcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBwYXN0aW5nIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYXN0ZUhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBZ0NBLE1BQU1BLHdCQUF3QixHQUFHLFNBQUFBLENBQ2hDQyxZQUFvQixFQUNwQkMsY0FBc0IsRUFDdEJDLFdBQW9CLEVBQ3BCQyxTQUF5QixFQUdQO0lBQUEsSUFGbEJDLGlDQUFpQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxLQUFLO0lBQUEsSUFDekNHLFdBQVcsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsS0FBSztJQUVuQixNQUFNSSxRQUFRLEdBQUdQLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDVixZQUFZLENBQUM7TUFDckRXLGFBQWEsR0FBRztRQUFFQyxxQkFBcUIsRUFBRTtNQUFLLENBQUM7TUFDL0NDLElBQUksR0FBR1YsU0FBUyxDQUFDVyxVQUFVLENBQUMsR0FBR2IsY0FBYyxJQUFJRCxZQUFZLEVBQUUsRUFBRVcsYUFBYSxDQUFDO0lBQ2hGLElBQUlJLFNBQVMsRUFBRUMsUUFBUTtJQUN2QixJQUFJWixpQ0FBaUMsS0FBSyxJQUFJLEVBQUU7TUFDL0NXLFNBQVMsR0FBRyxDQUFDTixRQUFRO01BQ3JCTyxRQUFRLEdBQUdkLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDLEdBQUdWLFlBQVksNkJBQTZCLENBQUM7SUFDakYsQ0FBQyxNQUFNO01BQ05lLFNBQVMsR0FBRyxDQUFDTixRQUFRLElBQUlQLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDLEdBQUdWLFlBQVksNkJBQTZCLENBQUM7SUFDL0Y7SUFFQSxPQUFP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
|
|
422
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRJbmZvRm9yRW50aXR5UHJvcGVydHkiLCJwcm9wZXJ0eVBhdGgiLCJyb3dCaW5kaW5nUGF0aCIsIm1ldGFDb250ZXh0IiwibWV0YU1vZGVsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZm9yY2VJZ25vcmUiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiY29tcHV0ZWQiLCJpZ25vcmUiLCJkaXNwbGF5RXJyb3JNZXNzYWdlcyIsImVycm9yTWVzc2FnZXMiLCJtZXNzYWdlRGV0YWlscyIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSIsImdldFRleHQiLCJub3RlTWVzc2FnZSIsInBhc3RlRXJyb3JNZXNzYWdlIiwidW5zaGlmdCIsIk1lc3NhZ2VCb3giLCJlcnJvciIsInRpdGxlIiwiZGV0YWlscyIsImpvaW4iLCJQYXN0ZUhlbHBlciIsImZvcm1hdEN1c3RvbU1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZXMiLCJpUm93TnVtYmVyIiwiZXJyb3JNZXNzYWdlIiwibnVtYmVyTWVzc2FnZXMiLCJpMThuUm93IiwiZm9yRWFjaCIsIm1lc3NhZ2UiLCJpbmRleE1lc3NhZ2UiLCJtZXNzYWdlVGV4dCIsImdldENvbHVtbkluZm8iLCJ0YWJsZSIsImNvbHVtbnMiLCJpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkiLCJtb2RlbCIsImdldFJvd0JpbmRpbmciLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsInJlc29sdmUiLCJnZXRQYXRoIiwiZ2V0Q29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZW50aXR5VHlwZVByb3BlcnRpZXMiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsImNvbHVtbkFycmFuZ2VtZW50UHJvcGVydHkiLCJ0YWJsZURlZmluaXRpb24iLCJnZXRQYXJlbnQiLCJnZXRUYWJsZURlZmluaXRpb24iLCJnZXRDb2x1bW5Gcm9tUHJvcGVydHlJbmZvcyIsImRhdGFQcm9wZXJ0eSIsImhhc1ZhbHVlSGVscCIsInRleHQiLCJwdXNoIiwiZXhwb3J0U2V0dGluZ3MiLCJpbmNsdWRlcyIsInBhdGgiLCJjb250cm9sIiwicHJvcGVydHlJbmZvIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5SW5mb0RpY3QiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXAiLCJrZXkiLCJjb2x1bW5JbmZvcyIsImdldENvbHVtbnMiLCJjb2x1bW4iLCJpbmZvUHJvcGVydHkiLCJnZXRQcm9wZXJ0eUtleSIsInByb3BlcnR5SW5mb3MiLCJoYXNWYWx1ZUhlbHBQcm9wZXJ0eSIsImNvbHVtblRvUHVzaCIsImV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlIiwiZmluZCIsInAiLCJuYW1lIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJWYWx1ZUxpc3QiLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsImNvbXB1dGVkUHJvcGVydGllcyIsImZpbHRlciIsImluZm8iLCJjb21wdXRlZFByb3BlcnR5IiwiY29sdW1uUG9zaXRpb24iLCJpbmRleE9mIiwiaXNDb2xFbXB0eSIsImV2ZXJ5Iiwicm93IiwicGFyc2VSZXN1bHQiLCJwYXJzZWREYXRhIiwiZXJyb3JzIiwiQ29yZVBhc3RlSGVscGVyIiwicGFyc2UiLCJvRWxlbWVudCIsIl91cGRhdGVDb250ZXh0cyIsImNvbnRleHRzIiwiZGF0YSIsImluZGV4Iiwic2V0UHJvcGVydHlQcm9taXNlcyIsInJvd0NvbnRleHQiLCJnZXRQcm9wZXJ0eUVkaXRNb2RlIiwiRmllbGRFZGl0TW9kZSIsIkVkaXRhYmxlIiwic2V0UHJvcGVydHkiLCJMb2ciLCJ3YXJuaW5nIiwiZ2V0SW5kZXgiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsImdldFBhc3RlSW5mb3JtYXRpb25Gb3JSZXBvbnNpdmVUYWJsZSIsImNlbGxTZWxlY3Rpb24iLCJwb3NGaXJzdFNlbGVjdGVkUm93IiwibnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MiLCJwb3NGaXJzdElubGluZUNyZWF0aW9uUm93SW5UYWJsZSIsImdldEN1cnJlbnRDb250ZXh0cyIsImZpbmRJbmRleCIsImNvbnRleHQiLCJpc1RyYW5zaWVudCIsInJvd3MiLCJ1cGRhdGVkUm93Q291bnQiLCJzbGljZSIsImxhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uIiwicG9wIiwicG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24iLCJNYXRoIiwibWluIiwiZ2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZSIsInRhYmxlUm93Y0NvdW50IiwiZ2V0TGVuZ3RoIiwiZ2V0UGFzdGVJbmZvcm1hdGlvbiIsInBhc3RlSW5mb3JtYXRpb24iLCJnZXRDcmVhdGlvbk1vZGUiLCJnZXROYW1lIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwicGFzdGVSYW5nZURhdGEiLCJwYXN0ZUluZm8iLCJjcmVhdGVFbXB0eVJvd3MiLCJyZXF1ZXN0Q29udGV4dHMiLCJwb3NGaXJzdElubGluZUNyZWF0aW9uUm93IiwiZm9jdXNSb3ciLCJ1cGRhdGVkQ29sQ291bnQiLCJrZXlzIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsImVkaXRGbG93IiwiYURhdGEiLCJ0aGVuIiwiYVBhcnNlZERhdGEiLCJhbGwiLCJtRGF0YSIsInZhbGlkYXRlRG9jdW1lbnQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbiIsImFWYWxpZGF0aW9uTWVzc2FnZXMiLCJhRXJyb3JNZXNzYWdlcyIsInJlZHVjZSIsImFNZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsIm1lc3NhZ2VzIiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJ0cmFuc2llbnRDb250ZXh0cyIsImxhc3RUcmFuc2llbnRDb250ZXh0IiwibGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwiZ2V0VGFyZ2V0cyIsIm5ld0NvbnRleHRzIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJjcmVhdGVBdEVuZCIsIm9uQmVmb3JlQ3JlYXRlIiwiZGVsZXRlIiwiY2F0Y2giLCJvRXJyb3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXJyYXlXaXRoSW5kZXgsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZWRGRVByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCAqIGFzIENvcmVQYXN0ZUhlbHBlciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9QYXN0ZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVR5cGUgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL09EYXRhVHlwZVwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwiLi4vY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBGaWVsZEVkaXRNb2RlIH0gZnJvbSBcIi4uL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5cbmV4cG9ydCB0eXBlIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0ge1xuXHRtZXNzYWdlVGV4dD86IHN0cmluZztcblx0bWVzc2FnZVRhcmdldD86IHN0cmluZztcbn07XG5cbnR5cGUgUGFzdGVJbmZvcm1hdGlvbiA9IHtcblx0cm93czogT0RhdGFWNENvbnRleHRbXTtcblx0Y29sdW1uczogQ29sdW1uW107XG5cdHVwZGF0ZWRSb3dDb3VudDogbnVtYmVyO1xuXHRudW1iZXJPZk5ld0NyZWF0aW9uUm93czogbnVtYmVyO1xufTtcblxuY29uc3QgZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5ID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0cm93QmluZGluZ1BhdGg6IHN0cmluZyxcblx0bWV0YUNvbnRleHQ6IENvbnRleHQsXG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdGVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyA9IGZhbHNlLFxuXHRmb3JjZUlnbm9yZSA9IGZhbHNlXG4pOiBQYXN0ZUNvbHVtbkluZm8ge1xuXHRjb25zdCBwcm9wZXJ0eSA9IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCksXG5cdFx0Zm9ybWF0T3B0aW9ucyA9IHsgcGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlIH0sXG5cdFx0dHlwZSA9IG1ldGFNb2RlbC5nZXRVSTVUeXBlKGAke3Jvd0JpbmRpbmdQYXRofS8ke3Byb3BlcnR5UGF0aH1gLCBmb3JtYXRPcHRpb25zKTtcblx0bGV0IGlzSWdub3JlZCwgY29tcHV0ZWQ7XG5cdGlmIChlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMgPT09IHRydWUpIHtcblx0XHRpc0lnbm9yZWQgPSAhcHJvcGVydHk7XG5cdFx0Y29tcHV0ZWQgPSBtZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtwcm9wZXJ0eVBhdGh9QE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkYCk7XG5cdH0gZWxzZSB7XG5cdFx0aXNJZ25vcmVkID0gIXByb3BlcnR5IHx8IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KGAke3Byb3BlcnR5UGF0aH1AT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRgKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGZvcmNlSWdub3JlIHx8IGlzSWdub3JlZCxcblx0XHRjb21wdXRlZDogY29tcHV0ZWQsXG5cdFx0dHlwZTogdHlwZVxuXHR9O1xufTtcblxuY29uc3QgZGlzcGxheUVycm9yTWVzc2FnZXMgPSBmdW5jdGlvbiAoZXJyb3JNZXNzYWdlczogc3RyaW5nW10pOiB2b2lkIHtcblx0Y29uc3QgbWVzc2FnZURldGFpbHMgPSBbLi4uZXJyb3JNZXNzYWdlc107XG5cdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpISxcblx0XHRlcnJvckNvcnJlY3Rpb25NZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX0NPUlJFQ1RJT05fTUVTU0FHRVwiKSxcblx0XHRub3RlTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9DT1JSRUNUSU9OX05PVEVcIik7XG5cdGxldCBwYXN0ZUVycm9yTWVzc2FnZTtcblxuXHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID4gMSkge1xuXHRcdHBhc3RlRXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX01FU1NBR0VfUExVUkFMXCIsIFttZXNzYWdlRGV0YWlscy5sZW5ndGhdKTtcblx0fSBlbHNlIHtcblx0XHRwYXN0ZUVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9NRVNTQUdFX1NJTkdVTEFSXCIpO1xuXHR9XG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQoXCJcIik7IC8vIFRvIHNob3cgc3BhY2UgYmV0d2VlbiB0aGUgc2hvcnQgdGV4dCBhbmQgdGhlIGxpc3Qgb2YgZXJyb3JzXG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQobm90ZU1lc3NhZ2UpO1xuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KGVycm9yQ29ycmVjdGlvbk1lc3NhZ2UpO1xuXHRNZXNzYWdlQm94LmVycm9yKHBhc3RlRXJyb3JNZXNzYWdlLCB7XG5cdFx0dGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0VSUk9SXCIpLFxuXHRcdGRldGFpbHM6IG1lc3NhZ2VEZXRhaWxzLmpvaW4oXCI8YnI+XCIpXG5cdH0pO1xufTtcblxudHlwZSBQYXN0ZUNvbHVtbkluZm8gPSB7XG5cdHByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHR5cGU/OiBPRGF0YVR5cGUgfCBudWxsO1xuXHRpZ25vcmU6IGJvb2xlYW47XG5cdGNvbXB1dGVkPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFBhc3RlSGVscGVyID0ge1xuXHRkaXNwbGF5RXJyb3JNZXNzYWdlczogZGlzcGxheUVycm9yTWVzc2FnZXMsXG5cdGZvcm1hdEN1c3RvbU1lc3NhZ2U6IGZ1bmN0aW9uICh2YWxpZGF0aW9uTWVzc2FnZXM6IGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlW10sIGlSb3dOdW1iZXI6IG51bWJlcik6IHN0cmluZyB7XG5cdFx0bGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG5cdFx0Y29uc3QgbnVtYmVyTWVzc2FnZXMgPSB2YWxpZGF0aW9uTWVzc2FnZXMubGVuZ3RoO1xuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpISxcblx0XHRcdGkxOG5Sb3cgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9NRVNTQUdFX0dST1VQX0RFU0NSSVBUSU9OX1RBQkxFX1JPV1wiKTtcblx0XHRpZiAobnVtYmVyTWVzc2FnZXMgPiAwKSB7XG5cdFx0XHRlcnJvck1lc3NhZ2UgKz0gYCR7aTE4blJvd30gJHtpUm93TnVtYmVyfTogYDtcblx0XHRcdHZhbGlkYXRpb25NZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlLCBpbmRleE1lc3NhZ2UpID0+IHtcblx0XHRcdFx0aWYgKG1lc3NhZ2UubWVzc2FnZVRleHQpIHtcblx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgKz0gbWVzc2FnZS5tZXNzYWdlVGV4dCArIChpbmRleE1lc3NhZ2UgKyAxICE9PSBudW1iZXJNZXNzYWdlcyA/IFwiIFwiIDogXCJcIik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gZXJyb3JNZXNzYWdlO1xuXHR9LFxuXHQvKipcblx0ICogR2V0IGRldGFpbHMgYWJvdXQgdGFibGUgY29sdW1ucy5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB3aGljaCBjb250YWlucyB0aGUgY29sdW1ucyB0byBiZSBhbmFseXplZFxuXHQgKiBAcGFyYW0gY29sdW1ucyBBIGxpc3Qgb2YgY29sdW1ucyB0byBiZSBhbmFseXplZC4gSWYgdW5kZWZpbmVkLCBhbGwgY29sdW1ucyBmcm9tIHRoZSB0YWJsZSBhcmUgYW5hbHl6ZWRcblx0ICogQHBhcmFtIGlnbm9yZU5hdmlnYXRpb25Qcm9wZXJ0eSBJZiB0cnVlLCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgYXJlIGlnbm9yZWRcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2Ygb2JqZWN0cyBwcm92aWRpbmcgZGV0YWlscyBhYm91dCBjb2x1bW5zLlxuXHQgKi9cblx0Z2V0Q29sdW1uSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBUYWJsZSwgY29sdW1ucz86IENvbHVtbltdLCBpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgPSB0cnVlKTogUGFzdGVDb2x1bW5JbmZvW10ge1xuXHRcdGNvbnN0IG1vZGVsID0gdGFibGUuZ2V0Um93QmluZGluZygpLmdldE1vZGVsKCksXG5cdFx0XHRtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHJvd0JpbmRpbmdQYXRoID0gbW9kZWwucmVzb2x2ZSh0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UGF0aCgpLCB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0Q29udGV4dCgpKSxcblx0XHRcdG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHJvd0JpbmRpbmdQYXRoKSxcblx0XHRcdGVudGl0eVR5cGVQcm9wZXJ0aWVzID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCkudGFyZ2V0RW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLFxuXHRcdFx0Y29sdW1uQXJyYW5nZW1lbnRQcm9wZXJ0eTogc3RyaW5nW10gPSBbXSxcblx0XHRcdHRhYmxlRGVmaW5pdGlvbiA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0ZnVuY3Rpb24gZ2V0Q29sdW1uRnJvbVByb3BlcnR5SW5mb3MoXG5cdFx0XHRkYXRhUHJvcGVydHk6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8sXG5cdFx0XHRoYXNWYWx1ZUhlbHA6IGJvb2xlYW4sXG5cdFx0XHRwcm9wZXJ0eTogc3RyaW5nXG5cdFx0KTogUGFzdGVDb2x1bW5JbmZvIHwgdW5kZWZpbmVkIHtcblx0XHRcdC8vIElmIHdlIGhhdmUgYSB0ZXh0QXJyYW5nZW1lbnQsIHdlIHdhbnQgdG8gcmVtb3ZlIGl0IGlmIGl0IGhhcyBhIFZhbHVlTGlzdCBhc3NvY2lhdGVkLlxuXHRcdFx0aWYgKGRhdGFQcm9wZXJ0eS50ZXh0ICYmIGhhc1ZhbHVlSGVscCkge1xuXHRcdFx0XHRjb2x1bW5BcnJhbmdlbWVudFByb3BlcnR5LnB1c2goZGF0YVByb3BlcnR5LnRleHQpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gTm9uIGV4cG9ydGVkIGNvbHVtbnMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGNvbHVtbkluZm9zXG5cdFx0XHRpZiAoZGF0YVByb3BlcnR5LmV4cG9ydFNldHRpbmdzICE9PSBudWxsKSB7XG5cdFx0XHRcdC8vIENoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdGlmIChpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgJiYgcHJvcGVydHkuaW5jbHVkZXMoXCIvXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHByb3BlcnR5OiBkYXRhUHJvcGVydHkucGF0aCxcblx0XHRcdFx0XHRcdGlnbm9yZTogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGZvcmNlSWdub3JlID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKGRhdGFQcm9wZXJ0eS5wYXRoKSB7XG5cdFx0XHRcdFx0XHRmb3JjZUlnbm9yZSA9IGNvbHVtbkFycmFuZ2VtZW50UHJvcGVydHkuaW5jbHVkZXMoZGF0YVByb3BlcnR5LnBhdGgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBUaGUgb2JqZWN0IHRoaXMgaXMgd2VpcmQgaW4gYSBmdW5jdGlvbiwgc28gY2hhbmdpbmcgaXQgdG8gUGFzdGVIZWxwZXIgaW5zdGVhZC5cblx0XHRcdFx0XHRyZXR1cm4gUGFzdGVIZWxwZXIuZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5KFxuXHRcdFx0XHRcdFx0ZGF0YVByb3BlcnR5LnBhdGghLFxuXHRcdFx0XHRcdFx0cm93QmluZGluZ1BhdGgsXG5cdFx0XHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRcdGZvcmNlSWdub3JlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IHByb3BlcnR5SW5mbyA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHRcdGNvbnN0IHByb3BlcnR5SW5mb0RpY3Q6IFJlY29yZDxzdHJpbmcsIEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8+ID0gT2JqZWN0LmFzc2lnbihcblx0XHRcdHt9LFxuXHRcdFx0Li4ucHJvcGVydHlJbmZvLm1hcCgocHJvcGVydHkpID0+ICh7IFtwcm9wZXJ0eS5rZXldOiBwcm9wZXJ0eSB9KSlcblx0XHQpO1xuXHRcdGNvbnN0IGNvbHVtbkluZm9zOiBQYXN0ZUNvbHVtbkluZm9bXSA9IFtdO1xuXHRcdChjb2x1bW5zID8/IHRhYmxlLmdldENvbHVtbnMoKSkuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBwcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXRQcm9wZXJ0eUtleSgpXTtcblx0XHRcdC8vIENoZWNrIGlmIGl0J3MgYSBjb21wbGV4IHByb3BlcnR5IChwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIG11bHRpcGxlIHNpbXBsZSBwcm9wZXJ0aWVzKVxuXHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdC8vIEdldCBkYXRhIGZyb20gc2ltcGxlIHByb3BlcnR5XG5cdFx0XHRcdGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zLmZvckVhY2goKHByb3BlcnR5OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBwcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XSxcblx0XHRcdFx0XHRcdGhhc1ZhbHVlSGVscCA9IHRoaXMuaGFzVmFsdWVIZWxwUHJvcGVydHkoZW50aXR5VHlwZVByb3BlcnRpZXMsIGRhdGFQcm9wZXJ0eSksXG5cdFx0XHRcdFx0XHRjb2x1bW5Ub1B1c2ggPSBnZXRDb2x1bW5Gcm9tUHJvcGVydHlJbmZvcyhkYXRhUHJvcGVydHksIGhhc1ZhbHVlSGVscCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdGlmIChjb2x1bW5Ub1B1c2gpIHtcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goY29sdW1uVG9QdXNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoaW5mb1Byb3BlcnR5LmV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlKSB7XG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh7XG5cdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ0YXJnZXRWYWx1ZUZyb21EYXRhUG9pbnRcIixcblx0XHRcdFx0XHRcdGlnbm9yZTogdHJ1ZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE5vbiBleHBvcnRlZCBjb2x1bW5zIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBjb2x1bW5JbmZvc1xuXHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkuZXhwb3J0U2V0dGluZ3MgIT09IG51bGwpIHtcblx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wYXRoKSB7XG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaChcblx0XHRcdFx0XHRcdFBhc3RlSGVscGVyLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShcblx0XHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnBhdGgsXG5cdFx0XHRcdFx0XHRcdHJvd0JpbmRpbmdQYXRoLFxuXHRcdFx0XHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0bWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEVtcHR5IGNvbHVtbiAtLT4gaWdub3JlXG5cdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh7XG5cdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdHR5cGU6IG51bGwsXG5cdFx0XHRcdFx0XHRpZ25vcmU6IHRydWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBjb2x1bW5JbmZvcztcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cblx0LyoqXG5cdCAqIFJldHVybnMgd2hldGhlciBhIHByb3BlcnR5IGhhcyBhIHZhbHVlIGxpc3Qgb3Igbm90LlxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVByb3BlcnRpZXMgVGhlIGVudGl0eSBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBkYXRhUHJvcGVydHkgVGhlIHByb3BlcnR5IHdlIHdhbnQgdG8gY2hlY2tcblx0ICogQHJldHVybnMgQm9vbGVhbiBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGxpc3QuXG5cdCAqL1xuXHRoYXNWYWx1ZUhlbHBQcm9wZXJ0eTogZnVuY3Rpb24gKFxuXHRcdGVudGl0eVR5cGVQcm9wZXJ0aWVzOiBBcnJheVdpdGhJbmRleDxQcm9wZXJ0eSwgXCJuYW1lXCIgfCBcImZ1bGx5UXVhbGlmaWVkTmFtZVwiPixcblx0XHRkYXRhUHJvcGVydHk6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9cblx0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcHJvcGVydHkgPSBlbnRpdHlUeXBlUHJvcGVydGllcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IGRhdGFQcm9wZXJ0eS5wYXRoKTtcblx0XHRpZiAocHJvcGVydHkpIHtcblx0XHRcdHJldHVybiAhIXByb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm0gYW4gYXJyYXkgb2YgZGF0YSBieSBwYXJzaW5nIGl0IGludG8gYW4gYXJyYXkgb2Ygb2JqZWN0cywgZmFjaWxpdGF0aW5nIHRoZSBtYXBwaW5nIG9mIGNvbHVtbnMgYW5kIGRhdGEuXG5cdCAqIEBwYXJhbSByYXdEYXRhIFRoZSB0YWJsZSB3aGljaCBjb250YWlucyB0aGUgY29sdW1ucyB0byBiZSBhbmFseXplZFxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIHdoaWNoIHJlY2VpdmVzIHRoZSBkYXRhXG5cdCAqIEBwYXJhbSBjb2x1bW5zIEEgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIHVzZWQgdG8gbWFwIHRoZSBkYXRhLiBJZiB1bmRlZmluZWQsIGFsbCB0YWJsZSBjb2x1bW5zIGFyZSB1c2VkXG5cdCAqIEBwYXJhbSBpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgSWYgdHJ1ZSwgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGFyZSBpZ25vcmVkXG5cdCAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiBvYmplY3RzIHRoYXQgYXNzb2NpYXRlcyBkYXRhIHdpdGggY29ycmVzcG9uZGluZyBjb2x1bW5zLlxuXHQgKi9cblx0cGFyc2VQYXN0ZWREYXRhOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogdW5rbm93bltdW10sXG5cdFx0dGFibGU6IFRhYmxlLFxuXHRcdGNvbHVtbnM/OiBDb2x1bW5bXSxcblx0XHRpZ25vcmVOYXZpZ2F0aW9uUHJvcGVydHkgPSB0cnVlXG5cdCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4ge1xuXHRcdGNvbnN0IHBhc3RlSW5mb3MgPSB0aGlzLmdldENvbHVtbkluZm8odGFibGUsIGNvbHVtbnMsIGlnbm9yZU5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0XHQvLyBDaGVjayBpZiB3ZSBoYXZlIGRhdGEgZm9yIGF0IGxlYXN0IHRoZSBmaXJzdCBlZGl0YWJsZSBjb2x1bW5cblx0XHRjb25zdCBwYXN0ZWRDb2x1bW5Db3VudCA9IHJhd0RhdGEubGVuZ3RoID8gcmF3RGF0YVswXS5sZW5ndGggOiAwO1xuXHRcdGxldCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSAtMTtcblx0XHRmb3IgKGxldCBJID0gMDsgSSA8IHBhc3RlSW5mb3MubGVuZ3RoICYmIGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDA7IEkrKykge1xuXHRcdFx0aWYgKCFwYXN0ZUluZm9zW0ldLmlnbm9yZSAmJiAhcGFzdGVJbmZvc1tJXS5jb21wdXRlZCkge1xuXHRcdFx0XHRmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBJO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IGNvbXB1dGVkUHJvcGVydGllcyA9IHBhc3RlSW5mb3MuZmlsdGVyKGZ1bmN0aW9uIChpbmZvKSB7XG5cdFx0XHRcdHJldHVybiBpbmZvLmNvbXB1dGVkO1xuXHRcdFx0fSk7XG5cdFx0XHQvL2ZvciBlYWNoIGNvbXB1dGVkIHByb3BlcnR5LCBjaGVjayBpZiB0aGUgY29sdW1uIGlzIGVtcHR5IC4gSWYgeWVzLCBpZ25vcmUgaXRcblx0XHRcdGNvbXB1dGVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChjb21wdXRlZFByb3BlcnR5KSB7XG5cdFx0XHRcdGNvbnN0IGNvbHVtblBvc2l0aW9uID0gcGFzdGVJbmZvcy5pbmRleE9mKGNvbXB1dGVkUHJvcGVydHkpO1xuXHRcdFx0XHRjb25zdCBpc0NvbEVtcHR5ID0gcmF3RGF0YS5ldmVyeSgocm93KSA9PiByb3dbY29sdW1uUG9zaXRpb25dID09PSBcIlwiKTtcblx0XHRcdFx0aWYgKGlzQ29sRW1wdHkpIHtcblx0XHRcdFx0XHRjb21wdXRlZFByb3BlcnR5Lmlnbm9yZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBhcnNlUmVzdWx0ID0gYXdhaXQgKGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDAgfHwgZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4ID4gcGFzdGVkQ29sdW1uQ291bnQgLSAxXG5cdFx0XHQ/IHsgcGFyc2VkRGF0YTogW10sIGVycm9yczogbnVsbCB9IC8vIFdlIGRvbid0IGhhdmUgZGF0YSBmb3IgYW4gZWRpdGFibGUgY29sdW1uIC0tPiByZXR1cm4gZW1wdHkgcGFyc2VkIGRhdGFcblx0XHRcdDogQ29yZVBhc3RlSGVscGVyLnBhcnNlKHJhd0RhdGEsIHBhc3RlSW5mb3MpKTtcblx0XHRpZiAocGFyc2VSZXN1bHQuZXJyb3JzKSB7XG5cdFx0XHRjb25zdCBlcnJvck1lc3NhZ2VzID0gcGFyc2VSZXN1bHQuZXJyb3JzLm1hcChmdW5jdGlvbiAob0VsZW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuIG9FbGVtZW50Lm1lc3NhZ2U7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlcyk7XG5cdFx0XHRyZXR1cm4gW107IC8vIEVycm9ycyAtLT4gcmV0dXJuIG5vdGhpbmdcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHBhcnNlUmVzdWx0LnBhcnNlZERhdGE7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgYW4gYXJyYXkgb2YgY29udGV4dHMuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgd2hpY2ggY29udGFpbnMgdGhlIGNvbnRleHRzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIGNvbnRleHRzIEFycmF5IG9mIGNvbnRleHRzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIGRhdGEgQXJyYXkgb2Ygb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgdXNlZCB0byB1cGRhdGUgdGhlIGNvbnRleHRzXG5cdCAqIEByZXR1cm5zIFByb21pc2Vcblx0ICovXG5cdF91cGRhdGVDb250ZXh0czogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHRhYmxlOiBUYWJsZSxcblx0XHRjb250ZXh0czogKE9EYXRhVjRDb250ZXh0IHwgdW5kZWZpbmVkKVtdLFxuXHRcdGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0bGV0IGluZGV4ID0gMDtcblx0XHRjb25zdCBzZXRQcm9wZXJ0eVByb21pc2VzID0gW107XG5cdFx0Zm9yIChjb25zdCByb3cgb2YgZGF0YSkge1xuXHRcdFx0Y29uc3Qgcm93Q29udGV4dCA9IGNvbnRleHRzW2luZGV4KytdO1xuXHRcdFx0aWYgKHJvd0NvbnRleHQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBkYXRhUHJvcGVydHkgaW4gcm93KSB7XG5cdFx0XHRcdFx0aWYgKCh0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0UHJvcGVydHlFZGl0TW9kZShkYXRhUHJvcGVydHksIHJvd0NvbnRleHQpID09PSBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eVByb21pc2VzLnB1c2gocm93Q29udGV4dC5zZXRQcm9wZXJ0eShkYXRhUHJvcGVydHksIHJvd1tkYXRhUHJvcGVydHldKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdExvZy53YXJuaW5nKGBQcm9wZXJ0eSAke2RhdGFQcm9wZXJ0eX0gaXMgbm90IGVkaXRhYmxlIGZvciByb3cgJHtyb3dDb250ZXh0LmdldEluZGV4KCl9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChzZXRQcm9wZXJ0eVByb21pc2VzKTtcblx0fSxcblxuXHQvKipcblx0ICogIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGUgb3BlcmF0aW9uIG9uIFJlc3BvbnNpdmVUYWJsZS5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbkZvclJlcG9uc2l2ZVRhYmxlOiBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogc3RyaW5nW11bXSxcblx0XHRjZWxsU2VsZWN0aW9uOiB7IGNvbHVtbnM6IENvbHVtbltdOyByb3dzOiBPRGF0YVY0Q29udGV4dFtdIH0sXG5cdFx0cG9zRmlyc3RTZWxlY3RlZFJvdzogbnVtYmVyLFxuXHRcdHRhYmxlOiBUYWJsZVxuXHQpOiBQYXN0ZUluZm9ybWF0aW9uIHtcblx0XHRsZXQgbnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPSAwO1xuXHRcdGNvbnN0IHBvc0ZpcnN0SW5saW5lQ3JlYXRpb25Sb3dJblRhYmxlID0gdGFibGVcblx0XHRcdC5nZXRSb3dCaW5kaW5nKClcblx0XHRcdC5nZXRDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0LmZpbmRJbmRleCgoY29udGV4dCkgPT4gY29udGV4dC5pc1RyYW5zaWVudCgpKTtcblx0XHRjb25zdCByb3dzID0gY2VsbFNlbGVjdGlvbi5yb3dzO1xuXHRcdGxldCB1cGRhdGVkUm93Q291bnQgPSAwO1xuXHRcdGNvbnN0IGNvbHVtbnMgPVxuXHRcdFx0Y2VsbFNlbGVjdGlvbi5jb2x1bW5zLmxlbmd0aCA+IDFcblx0XHRcdFx0PyBjZWxsU2VsZWN0aW9uLmNvbHVtbnNcblx0XHRcdFx0OiB0YWJsZS5nZXRDb2x1bW5zKCkuc2xpY2UodGFibGUuZ2V0Q29sdW1ucygpLmluZGV4T2YoY2VsbFNlbGVjdGlvbi5jb2x1bW5zWzBdKSk7XG5cblx0XHQvLyBvbmx5IG9uZSBjZWxsIGlzIHNlbGVjdGVkXG5cdFx0aWYgKGNlbGxTZWxlY3Rpb24uY29sdW1ucy5sZW5ndGggPT09IDEgJiYgY2VsbFNlbGVjdGlvbi5yb3dzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgdGhlIGlubGluZSBjcmVhdGlvbiByb3cgaXMgaW4gdGhlIHRhcmdldGVkIHJhbmdlXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3cgPD0gcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd0luVGFibGUgJiZcblx0XHRcdFx0cG9zRmlyc3RTZWxlY3RlZFJvdyArIHJhd0RhdGEubGVuZ3RoID4gcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd0luVGFibGVcblx0XHRcdCkge1xuXHRcdFx0XHRudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9IHJhd0RhdGEubGVuZ3RoIC0gKHBvc0ZpcnN0SW5saW5lQ3JlYXRpb25Sb3dJblRhYmxlIC0gcG9zRmlyc3RTZWxlY3RlZFJvdykgLSAxO1xuXHRcdFx0XHR1cGRhdGVkUm93Q291bnQgPSByYXdEYXRhLmxlbmd0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRoZSBpbmxpbmUgY3JlYXRpb24gcm93IGlzIG5vdCBpbiB0aGUgdGFyZ2V0ZWQgcmFuZ2Vcblx0XHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPSAwO1xuXHRcdFx0XHR1cGRhdGVkUm93Q291bnQgPSByYXdEYXRhLmxlbmd0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbXVsdGlwbGUgY2VsbHMgYXJlIHNlbGVjdGVkXG5cdFx0XHRjb25zdCBsYXN0SW5saW5lQ3JlYXRpb25Sb3dJblNlbGVjdGlvbiA9IHJvd3MuZmlsdGVyKChjb250ZXh0KSA9PiBjb250ZXh0LmlzVHJhbnNpZW50KCkpPy5wb3AoKTtcblx0XHRcdGNvbnN0IHBvc0xhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uID0gbGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb25cblx0XHRcdFx0PyByb3dzLmluZGV4T2YobGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24pXG5cdFx0XHRcdDogLTE7XG5cdFx0XHR1cGRhdGVkUm93Q291bnQgPSBNYXRoLm1pbihyYXdEYXRhLmxlbmd0aCwgY2VsbFNlbGVjdGlvbi5yb3dzLmxlbmd0aCk7XG5cdFx0XHQvLyBjaGVjayBpZiB0aGUgaW5saW5lIGNyZWF0aW9uIHJvdyBpcyBpbiB0aGUgc2VsZWN0ZWQgcmFuZ2Vcblx0XHRcdGlmIChwb3NMYXN0SW5saW5lQ3JlYXRpb25Sb3dJblNlbGVjdGlvbiA+IC0xKSB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudCA9IHBvc0xhc3RJbmxpbmVDcmVhdGlvblJvd0luU2VsZWN0aW9uID09PSBjZWxsU2VsZWN0aW9uLnJvd3MubGVuZ3RoIC0gMSA/IHJhd0RhdGEubGVuZ3RoIDogdXBkYXRlZFJvd0NvdW50O1xuXHRcdFx0XHRudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9XG5cdFx0XHRcdFx0cG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24gPT09IGNlbGxTZWxlY3Rpb24ucm93cy5sZW5ndGggLSAxXG5cdFx0XHRcdFx0XHQ/IHJhd0RhdGEubGVuZ3RoIC0gcG9zTGFzdElubGluZUNyZWF0aW9uUm93SW5TZWxlY3Rpb24gLSAxXG5cdFx0XHRcdFx0XHQ6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB7IHJvd3MsIGNvbHVtbnMsIHVwZGF0ZWRSb3dDb3VudCwgbnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgfTtcblx0fSxcblxuXHQvKipcblx0ICogIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGUgb3BlcmF0aW9uIG9uIEdyaWRUYWJsZS5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZTogZnVuY3Rpb24gKFxuXHRcdHJhd0RhdGE6IHN0cmluZ1tdW10sXG5cdFx0Y2VsbFNlbGVjdGlvbjogeyBjb2x1bW5zOiBDb2x1bW5bXTsgcm93czogT0RhdGFWNENvbnRleHRbXSB9LFxuXHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3c6IG51bWJlcixcblx0XHR0YWJsZTogVGFibGVcblx0KTogUGFzdGVJbmZvcm1hdGlvbiB7XG5cdFx0bGV0IG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzID0gMDtcblx0XHRjb25zdCByb3dzID0gY2VsbFNlbGVjdGlvbi5yb3dzO1xuXHRcdGxldCB1cGRhdGVkUm93Q291bnQgPSAwO1xuXHRcdGNvbnN0IHRhYmxlUm93Y0NvdW50ID0gdGFibGUuZ2V0Um93QmluZGluZygpLmdldExlbmd0aCgpO1xuXHRcdGxldCBjb2x1bW5zID1cblx0XHRcdGNlbGxTZWxlY3Rpb24uY29sdW1ucy5sZW5ndGggPiAxXG5cdFx0XHRcdD8gY2VsbFNlbGVjdGlvbi5jb2x1bW5zXG5cdFx0XHRcdDogdGFibGUuZ2V0Q29sdW1ucygpLnNsaWNlKHRhYmxlLmdldENvbHVtbnMoKS5pbmRleE9mKGNlbGxTZWxlY3Rpb24uY29sdW1uc1swXSkpO1xuXHRcdGlmIChjZWxsU2VsZWN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAxICYmIGNlbGxTZWxlY3Rpb24ucm93cy5sZW5ndGggPT09IDEpIHtcblx0XHRcdG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzID1cblx0XHRcdFx0cG9zRmlyc3RTZWxlY3RlZFJvdyArIHJhd0RhdGEubGVuZ3RoID4gdGFibGVSb3djQ291bnQgPyBwb3NGaXJzdFNlbGVjdGVkUm93ICsgcmF3RGF0YS5sZW5ndGggLSB0YWJsZVJvd2NDb3VudCA6IDA7XG5cdFx0XHRjb2x1bW5zID0gdGFibGUuZ2V0Q29sdW1ucygpLnNsaWNlKHRhYmxlLmdldENvbHVtbnMoKS5pbmRleE9mKGNlbGxTZWxlY3Rpb24uY29sdW1uc1swXSkpO1xuXHRcdFx0dXBkYXRlZFJvd0NvdW50ID0gcmF3RGF0YS5sZW5ndGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG11bHRpcGxlIGNlbGxzIGFyZSBzZWxlY3RlZFxuXHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPVxuXHRcdFx0XHRwb3NGaXJzdFNlbGVjdGVkUm93ICsgcm93cy5sZW5ndGggPj0gdGFibGVSb3djQ291bnQgPyBwb3NGaXJzdFNlbGVjdGVkUm93ICsgcmF3RGF0YS5sZW5ndGggLSB0YWJsZVJvd2NDb3VudCA6IDA7XG5cdFx0XHR1cGRhdGVkUm93Q291bnQgPSBudW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9PT0gMCA/IE1hdGgubWluKHJhd0RhdGEubGVuZ3RoLCBjZWxsU2VsZWN0aW9uLnJvd3MubGVuZ3RoKSA6IHJhd0RhdGEubGVuZ3RoO1xuXHRcdH1cblx0XHRyZXR1cm4geyByb3dzLCBjb2x1bW5zLCB1cGRhdGVkUm93Q291bnQsIG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzIH07XG5cdH0sXG5cblx0LyoqXG5cdCAqICBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhc3RlIG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIHJhd0RhdGFcblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb25cblx0ICogQHBhcmFtIGNlbGxTZWxlY3Rpb24uY29sdW1uc1xuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzXG5cdCAqIEBwYXJhbSBwb3NGaXJzdFNlbGVjdGVkUm93XG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmpldCBjb250YWluaW5nIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0aW5nIG9wZXJhdGlvblxuXHQgKi9cblx0Z2V0UGFzdGVJbmZvcm1hdGlvbjogZnVuY3Rpb24gKFxuXHRcdHJhd0RhdGE6IHN0cmluZ1tdW10sXG5cdFx0Y2VsbFNlbGVjdGlvbjogeyBjb2x1bW5zOiBDb2x1bW5bXTsgcm93czogT0RhdGFWNENvbnRleHRbXSB9LFxuXHRcdHBvc0ZpcnN0U2VsZWN0ZWRSb3c6IG51bWJlcixcblx0XHR0YWJsZTogVGFibGVcblx0KTogUGFzdGVJbmZvcm1hdGlvbiB8IG51bGwge1xuXHRcdGxldCBwYXN0ZUluZm9ybWF0aW9uOiBQYXN0ZUluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cblx0XHRzd2l0Y2ggKHRhYmxlLmRhdGEoXCJ0YWJsZVR5cGVcIikpIHtcblx0XHRcdGNhc2UgXCJHcmlkVGFibGVcIjpcblx0XHRcdFx0cGFzdGVJbmZvcm1hdGlvbiA9IHRoaXMuZ2V0UGFzdGVJbmZvcm1hdGlvbkZvckdyaWRUYWJsZShyYXdEYXRhLCBjZWxsU2VsZWN0aW9uLCBwb3NGaXJzdFNlbGVjdGVkUm93LCB0YWJsZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlJlc3BvbnNpdmVUYWJsZVwiOlxuXHRcdFx0XHRwYXN0ZUluZm9ybWF0aW9uID0gdGhpcy5nZXRQYXN0ZUluZm9ybWF0aW9uRm9yUmVwb25zaXZlVGFibGUocmF3RGF0YSwgY2VsbFNlbGVjdGlvbiwgcG9zRmlyc3RTZWxlY3RlZFJvdywgdGFibGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdExvZy53YXJuaW5nKGBQYXN0ZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgdHlwZSAke3RhYmxlLmRhdGEoXCJ0YWJsZVR5cGVcIil9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbiAmJlxuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbj8ubnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPiAwICYmXG5cdFx0XHQodGFibGUuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkgJiB7IGdldENyZWF0aW9uTW9kZTogRnVuY3Rpb24gfSkuZ2V0Q3JlYXRpb25Nb2RlKCkuZ2V0TmFtZSgpICE9PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0KSB7XG5cdFx0XHRwYXN0ZUluZm9ybWF0aW9uLnVwZGF0ZWRSb3dDb3VudCAtPSBwYXN0ZUluZm9ybWF0aW9uLm51bWJlck9mTmV3Q3JlYXRpb25Sb3dzO1xuXHRcdFx0cGFzdGVJbmZvcm1hdGlvbi5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyA9IDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHBhc3RlSW5mb3JtYXRpb247XG5cdH0sXG5cblx0LyoqXG5cdCAqIFBhc3RlIGRhdGEgaW50byBhIHRhYmxlIHVzaW5nIGEgc2VsZWN0aW9uIG9mIGNvbHVtbiBhbmQgcm93cy5cblx0ICogQHBhcmFtIHJhd0RhdGEgVGhlIGRhdGEgdG8gYmUgcGFzdGVkIGludG8gdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBjZWxsU2VsZWN0aW9uIFRoZSBjb2x1bW5zIGFuZCB0aGUgcm93cyB0byBiZSB1cGRhdGVkXG5cdCAqIEBwYXJhbSBjZWxsU2VsZWN0aW9uLmNvbHVtbnMgVGhlIGNvbHVtbnMgdG8gYmUgdXBkYXRlZFxuXHQgKiBAcGFyYW0gY2VsbFNlbGVjdGlvbi5yb3dzIFRoZSByb3dzIHRvIGJlIHVwZGF0ZWRcblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZVxuXHQgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzdGVcblx0ICovXG5cdHBhc3RlUmFuZ2VEYXRhOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0cmF3RGF0YTogc3RyaW5nW11bXSxcblx0XHRjZWxsU2VsZWN0aW9uOiB7IGNvbHVtbnM6IENvbHVtbltdOyByb3dzOiBPRGF0YVY0Q29udGV4dFtdIH0sXG5cdFx0dGFibGU6IFRhYmxlXG5cdCk6IFByb21pc2U8XG5cdFx0fCB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudDogbnVtYmVyO1xuXHRcdFx0XHR1cGRhdGVkQ29sQ291bnQ6IG51bWJlcjtcblx0XHRcdFx0bnVtYmVyT2ZOZXdDcmVhdGlvblJvd3M6IG51bWJlcjtcblx0XHRcdFx0cG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRcdCAgfVxuXHRcdHwgdW5kZWZpbmVkXG5cdD4ge1xuXHRcdGNvbnN0IHBvc0ZpcnN0U2VsZWN0ZWRSb3cgPSBjZWxsU2VsZWN0aW9uLnJvd3NbMF0uZ2V0SW5kZXgoKSE7XG5cblx0XHRjb25zdCBwYXN0ZUluZm8gPSB0aGlzLmdldFBhc3RlSW5mb3JtYXRpb24ocmF3RGF0YSwgY2VsbFNlbGVjdGlvbiwgcG9zRmlyc3RTZWxlY3RlZFJvdywgdGFibGUpO1xuXHRcdGlmICghcGFzdGVJbmZvKSByZXR1cm47XG5cblx0XHRjb25zdCBwYXJzZWREYXRhID0gYXdhaXQgdGhpcy5wYXJzZVBhc3RlZERhdGEocmF3RGF0YSwgdGFibGUsIHBhc3RlSW5mby5jb2x1bW5zLCBmYWxzZSk7XG5cdFx0aWYgKHBhcnNlZERhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyA+IDApIHtcblx0XHRcdFx0YXdhaXQgKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5jcmVhdGVFbXB0eVJvd3MoXG5cdFx0XHRcdFx0dGFibGUuZ2V0Um93QmluZGluZygpLFxuXHRcdFx0XHRcdHRhYmxlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vbG9hZCBtaXNzaW5nIHJvd3MgaWYgbmVlZGVkIGluY2x1ZGluZyB0aGUgbmV3bHkgY3JlYXRlZCByb3dzXG5cdFx0XHRwYXN0ZUluZm8ucm93cyA9IGF3YWl0IHRhYmxlLmdldFJvd0JpbmRpbmcoKS5yZXF1ZXN0Q29udGV4dHMocG9zRmlyc3RTZWxlY3RlZFJvdywgcGFzdGVJbmZvLnVwZGF0ZWRSb3dDb3VudCk7XG5cdFx0XHRhd2FpdCB0aGlzLl91cGRhdGVDb250ZXh0cyh0YWJsZSwgcGFzdGVJbmZvLnJvd3MsIHBhcnNlZERhdGEpO1xuXG5cdFx0XHQvLyBmb2N1c2luZyBvbiB0aGUgZmlyc3QgYXZhaWxhYmxlIGNyZWF0aW9uIHJvd1xuXHRcdFx0Y29uc3QgcG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdyA9IHBhc3RlSW5mby5yb3dzLmZpbmQoKGNvbnRleHQpID0+IGNvbnRleHQuaXNUcmFuc2llbnQoKSk/LmdldEluZGV4KCk7XG5cdFx0XHRpZiAocG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvdykge1xuXHRcdFx0XHR0YWJsZS5mb2N1c1Jvdyhwb3NGaXJzdElubGluZUNyZWF0aW9uUm93KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHVwZGF0ZWRSb3dDb3VudDogcGFzdGVJbmZvLnVwZGF0ZWRSb3dDb3VudCxcblx0XHRcdFx0dXBkYXRlZENvbENvdW50OiBPYmplY3Qua2V5cyhwYXJzZWREYXRhWzBdKS5sZW5ndGgsXG5cdFx0XHRcdG51bWJlck9mTmV3Q3JlYXRpb25Sb3dzOiBwYXN0ZUluZm8ubnVtYmVyT2ZOZXdDcmVhdGlvblJvd3MgPCAwID8gMCA6IHBhc3RlSW5mby5udW1iZXJPZk5ld0NyZWF0aW9uUm93cyxcblx0XHRcdFx0cG9zRmlyc3RJbmxpbmVDcmVhdGlvblJvd1xuXHRcdFx0fTtcblx0XHR9XG5cdH0sXG5cdHBhc3RlRGF0YTogYXN5bmMgZnVuY3Rpb24gKHJhd0RhdGE6IHN0cmluZ1tdW10sIHRhYmxlOiBUYWJsZSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPENvbnRleHRbXSB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHRjb25zdCB0YWJsZURlZmluaXRpb24gPSAodGFibGUuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkpLmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXHRcdGxldCBhRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKGFzeW5jIChhUGFyc2VkRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkgPT4ge1xuXHRcdFx0XHRhRGF0YSA9IGFQYXJzZWREYXRhIHx8IFtdO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0YURhdGEubWFwKGFzeW5jIChtRGF0YSkgPT5cblx0XHRcdFx0XHRcdGVkaXRGbG93LnZhbGlkYXRlRG9jdW1lbnQodGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dCwge1xuXHRcdFx0XHRcdFx0XHRkYXRhOiBtRGF0YSxcblx0XHRcdFx0XHRcdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uOiB0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmN1c3RvbVZhbGlkYXRpb25GdW5jdGlvblxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFWYWxpZGF0aW9uTWVzc2FnZXMpID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXM6IHsgbWVzc2FnZXM6IHsgbWVzc2FnZVRhcmdldD86IHN0cmluZzsgbWVzc2FnZVRleHQ6IHN0cmluZyB9W107IHJvdzogbnVtYmVyIH1bXSA9XG5cdFx0XHRcdFx0YVZhbGlkYXRpb25NZXNzYWdlcy5yZWR1Y2UoXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoYU1lc3NhZ2VzLCBhQ3VzdG9tTWVzc2FnZXMsIGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhQ3VzdG9tTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGFNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZXM6IGFDdXN0b21NZXNzYWdlcywgcm93OiBpbmRleCArIDEgfSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFNZXNzYWdlcztcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRbXSBhcyB7IG1lc3NhZ2VzOiB7IG1lc3NhZ2VUYXJnZXQ/OiBzdHJpbmc7IG1lc3NhZ2VUZXh0OiBzdHJpbmcgfVtdOyByb3c6IG51bWJlciB9W11cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoYUVycm9yTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGNvbnN0IGFSb3dNZXNzYWdlcyA9IGFFcnJvck1lc3NhZ2VzLm1hcCgobUVycm9yKSA9PiB0aGlzLmZvcm1hdEN1c3RvbU1lc3NhZ2UobUVycm9yLm1lc3NhZ2VzLCBtRXJyb3Iucm93KSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhhUm93TWVzc2FnZXMpO1xuXHRcdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYURhdGE7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFWYWxpZGF0ZWREYXRhKTogUHJvbWlzZTxDb250ZXh0W10gfCB1bmRlZmluZWQ+ID0+IHtcblx0XHRcdFx0Ly8gcmVtb3ZlIHRoZSBsYXN0IHRyYW5zaWVudCBjb250ZXh0IGlmIGl0IGV4aXN0c1xuXHRcdFx0XHRjb25zdCB0cmFuc2llbnRDb250ZXh0cyA9IHRhYmxlXG5cdFx0XHRcdFx0LmdldFJvd0JpbmRpbmcoKVxuXHRcdFx0XHRcdC5nZXRDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0XHRcdC5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaXNUcmFuc2llbnQoKSk7XG5cdFx0XHRcdGNvbnN0IGxhc3RUcmFuc2llbnRDb250ZXh0ID0gdHJhbnNpZW50Q29udGV4dHMucG9wKCk7XG5cdFx0XHRcdC8vY2hlY2sgaWYgdGhlIGxhc3QgdHJhbnNpZW50IGNvbnRleHQgaGFzIGFuIGVycm9yIG1lc3NhZ2Vcblx0XHRcdFx0Y29uc3QgbGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UgPSAhIU1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKVxuXHRcdFx0XHRcdC5nZXREYXRhKClcblx0XHRcdFx0XHQuZmluZCgobWVzc2FnZTogTWVzc2FnZSkgPT4gbGFzdFRyYW5zaWVudENvbnRleHQgJiYgbWVzc2FnZS5nZXRUYXJnZXRzKClbMF0uaW5jbHVkZXMobGFzdFRyYW5zaWVudENvbnRleHQuZ2V0UGF0aCgpKSk7XG5cdFx0XHRcdGNvbnN0IG5ld0NvbnRleHRzID1cblx0XHRcdFx0XHRhVmFsaWRhdGVkRGF0YS5sZW5ndGggPiAwXG5cdFx0XHRcdFx0XHQ/IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRhVmFsaWRhdGVkRGF0YSxcblx0XHRcdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmNyZWF0ZUF0RW5kLFxuXHRcdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5lZGl0Rmxvdy5vbkJlZm9yZUNyZWF0ZVxuXHRcdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gaWYgdGhlIGxhc3QgdHJhbnNpZW50IGNvbnRleHQgaGFzIG5vIGVycm9yIG1lc3NhZ2UsIGRlbGV0ZSBpdCBhbmQgcmVjcmVhdGUgYSBuZXcgb25lIGF0IHRoZSBsYXN0IHBvc2l0aW9uXG5cdFx0XHRcdGlmIChsYXN0VHJhbnNpZW50Q29udGV4dCAmJiAhbGFzdFRyYW5zaWVudENvbnRleHRIYXNFcnJvck1lc3NhZ2UpIHtcblx0XHRcdFx0XHRsYXN0VHJhbnNpZW50Q29udGV4dD8uZGVsZXRlKCk7XG5cdFx0XHRcdFx0YXdhaXQgKHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5jcmVhdGVFbXB0eVJvd3ModGFibGUuZ2V0Um93QmluZGluZygpLCB0YWJsZSwgZmFsc2UsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBuZXdDb250ZXh0cztcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKG9FcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBwYXN0aW5nIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYXN0ZUhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBZ0NBLE1BQU1BLHdCQUF3QixHQUFHLFNBQUFBLENBQ2hDQyxZQUFvQixFQUNwQkMsY0FBc0IsRUFDdEJDLFdBQW9CLEVBQ3BCQyxTQUF5QixFQUdQO0lBQUEsSUFGbEJDLGlDQUFpQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxLQUFLO0lBQUEsSUFDekNHLFdBQVcsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsS0FBSztJQUVuQixNQUFNSSxRQUFRLEdBQUdQLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDVixZQUFZLENBQUM7TUFDckRXLGFBQWEsR0FBRztRQUFFQyxxQkFBcUIsRUFBRTtNQUFLLENBQUM7TUFDL0NDLElBQUksR0FBR1YsU0FBUyxDQUFDVyxVQUFVLENBQUMsR0FBR2IsY0FBYyxJQUFJRCxZQUFZLEVBQUUsRUFBRVcsYUFBYSxDQUFDO0lBQ2hGLElBQUlJLFNBQVMsRUFBRUMsUUFBUTtJQUN2QixJQUFJWixpQ0FBaUMsS0FBSyxJQUFJLEVBQUU7TUFDL0NXLFNBQVMsR0FBRyxDQUFDTixRQUFRO01BQ3JCTyxRQUFRLEdBQUdkLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDLEdBQUdWLFlBQVksNkJBQTZCLENBQUM7SUFDakYsQ0FBQyxNQUFNO01BQ05lLFNBQVMsR0FBRyxDQUFDTixRQUFRLElBQUlQLFdBQVcsQ0FBQ1EsV0FBVyxDQUFDLEdBQUdWLFlBQVksNkJBQTZCLENBQUM7SUFDL0Y7SUFFQSxPQUFPO01BQ05T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
|
|
@@ -234,7 +234,7 @@ const PasteHelper = {
|
|
|
234
234
|
columns?: Column[],
|
|
235
235
|
ignoreNavigationProperty = true
|
|
236
236
|
): Promise<Record<string, unknown>[]> {
|
|
237
|
-
const pasteInfos =
|
|
237
|
+
const pasteInfos = this.getColumnInfo(table, columns, ignoreNavigationProperty);
|
|
238
238
|
const tableDefinition = (table.getParent() as TableAPI).getTableDefinition();
|
|
239
239
|
// Check if we have data for at least the first editable column
|
|
240
240
|
const pastedColumnCount = rawData.length ? rawData[0].length : 0;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/formatters/StandardFormatter", "sap/fe/core/formatters/ValueFormatter", "sap/fe/core/services/AsyncComponentServiceFactory", "sap/fe/core/services/CacheHandlerServiceFactory", "sap/fe/core/services/CollaborativeToolsServiceFactory", "sap/fe/core/services/EnvironmentServiceFactory", "sap/fe/core/services/NavigationServiceFactory", "sap/fe/core/services/ResourceModelServiceFactory", "sap/fe/core/services/RoutingServiceFactory", "sap/fe/core/services/ShellServicesFactory", "sap/fe/core/services/SideEffectsServiceFactory", "sap/fe/core/services/TemplatedViewServiceFactory", "./services/CollaborationManagerServiceFactory", "./services/ValueHelpHistoryServiceFactory", "sap/fe/base/HookSupport", "sap/fe/base/library", "sap/fe/core/services/InlineEditServiceFactory", "sap/fe/core/services/TelemetryServiceFactory", "sap/fe/core/type/Date", "sap/fe/core/type/DateTimeWithTimezone", "sap/fe/core/type/Email", "sap/fe/core/type/FiscalDate", "sap/fe/core/type/InputMask", "sap/fe/navigation/library", "sap/fe/placeholder/library", "sap/ui/base/DataType", "sap/ui/core/Lib", "sap/ui/core/library", "sap/ui/core/mvc/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/formatters/StandardFormatter", "sap/fe/core/formatters/ValueFormatter", "sap/fe/core/services/AsyncComponentServiceFactory", "sap/fe/core/services/CacheHandlerServiceFactory", "sap/fe/core/services/CollaborativeToolsServiceFactory", "sap/fe/core/services/EnvironmentServiceFactory", "sap/fe/core/services/NavigationServiceFactory", "sap/fe/core/services/ResourceModelServiceFactory", "sap/fe/core/services/RoutingServiceFactory", "sap/fe/core/services/ShellServicesFactory", "sap/fe/core/services/SideEffectsServiceFactory", "sap/fe/core/services/TemplatedViewServiceFactory", "./services/CollaborationManagerServiceFactory", "./services/ValueHelpHistoryServiceFactory", "sap/fe/base/HookSupport", "sap/fe/base/library", "sap/fe/core/services/InlineEditServiceFactory", "sap/fe/core/services/TelemetryServiceFactory", "sap/fe/core/type/Date", "sap/fe/core/type/DateTimeWithTimezone", "sap/fe/core/type/Email", "sap/fe/core/type/FiscalDate", "sap/fe/core/type/InputMask", "sap/fe/navigation/library", "sap/fe/placeholder/library", "sap/ui/base/DataType", "sap/ui/core/Lib", "sap/ui/core/library", "sap/ui/core/mvc/XMLView", "sap/ui/core/service/ServiceFactoryRegistry", "./services/ContextSharingServiceFactory", "./services/collaborativeDraftServiceFactory"], function (Log, _CriticalityFormatter, _FPMFormatter, _StandardFormatter, _ValueFormatter, AsyncComponentServiceFactory, CacheHandlerServiceFactory, CollaborativeToolsServiceFactory, $EnvironmentServiceFactory, NavigationService, ResourceModelServiceFactory, RoutingServiceFactory, ShellServicesFactory, SideEffectsServiceFactory, TemplatedViewServiceFactory, CollaborationManagerServiceFactory, ValueHelpHistoryServiceFactory, HookSupport, _library, InlineEditServiceFactory, TelemetryServiceFactory, _Date, _DateTimeWithTimezone, _Email, _FiscalDate, _InputMask, _library2, _library3, DataType, Library, _library4, XMLView, ServiceFactoryRegistry, ContextSharingServiceFactory, CollaborativeDraftServiceFactory) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -45,7 +45,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "s
|
|
|
45
45
|
controls: [],
|
|
46
46
|
elements: [],
|
|
47
47
|
// eslint-disable-next-line no-template-curly-in-string
|
|
48
|
-
version: "1.
|
|
48
|
+
version: "1.138.0",
|
|
49
49
|
noLibraryCSS: true,
|
|
50
50
|
extensions: {
|
|
51
51
|
//Configuration used for rule loading of Support Assistant
|
|
@@ -379,7 +379,36 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "s
|
|
|
379
379
|
*/
|
|
380
380
|
AutoCreate: "AutoCreate"
|
|
381
381
|
};
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Possible navigation modes for a pagination.
|
|
385
|
+
* @enum {string}
|
|
386
|
+
* @readonly
|
|
387
|
+
* @public
|
|
388
|
+
* @since 1.138.0
|
|
389
|
+
*/
|
|
390
|
+
let ContextNavigationType = /*#__PURE__*/function (ContextNavigationType) {
|
|
391
|
+
/**
|
|
392
|
+
* Indicates that there is no navigation.
|
|
393
|
+
* @public
|
|
394
|
+
*/
|
|
395
|
+
ContextNavigationType["None"] = "None";
|
|
396
|
+
/**
|
|
397
|
+
* Indicates that the navigation is to a subobject page within the same application.
|
|
398
|
+
* @public
|
|
399
|
+
*/
|
|
400
|
+
ContextNavigationType["Internal"] = "Internal";
|
|
401
|
+
/**
|
|
402
|
+
* Indicates that the navigation is to an external application.
|
|
403
|
+
* @public
|
|
404
|
+
*/
|
|
405
|
+
ContextNavigationType["External"] = "External";
|
|
406
|
+
return ContextNavigationType;
|
|
407
|
+
}({});
|
|
408
|
+
thisLib.ContextNavigationType = ContextNavigationType;
|
|
409
|
+
|
|
382
410
|
// explicit type to handle backward compatibility with boolean values
|
|
411
|
+
_exports.ContextNavigationType = ContextNavigationType;
|
|
383
412
|
const InitialLoadType = DataType.createType("sap.fe.core.InitialLoadMode", {
|
|
384
413
|
defaultValue: thisLib.InitialLoadMode.Auto,
|
|
385
414
|
isValid: function (vValue) {
|
|
@@ -413,7 +442,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "s
|
|
|
413
442
|
ServiceFactoryRegistry.register("sap.fe.core.services.CollaborativeDraftService", new CollaborativeDraftServiceFactory());
|
|
414
443
|
ServiceFactoryRegistry.register("sap.fe.core.services.ContextSharingService", new ContextSharingServiceFactory());
|
|
415
444
|
ServiceFactoryRegistry.register("sap.fe.core.services.InlineEditService", new InlineEditServiceFactory());
|
|
416
|
-
|
|
445
|
+
XMLView.registerPreprocessor("controls", xmlViewPreprocessor, "XML", false, true);
|
|
417
446
|
return thisLib;
|
|
418
447
|
}, false);
|
|
419
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZU5hbWVzcGFjZSIsIl9leHBvcnRzIiwiZmVDb3JlTmFtZXNwYWNlIiwiZmVDZXh0TmFtZXNwYWNlIiwiZmVGcG1OYW1lc3BhY2UiLCJ0aGlzTGliIiwiTGlicmFyeSIsImluaXQiLCJuYW1lIiwiYXBpVmVyc2lvbiIsImRlcGVuZGVuY2llcyIsInR5cGVzIiwiaW50ZXJmYWNlcyIsImNvbnRyb2xzIiwiZWxlbWVudHMiLCJ2ZXJzaW9uIiwibm9MaWJyYXJ5Q1NTIiwiZXh0ZW5zaW9ucyIsInB1YmxpY1J1bGVzIiwiaW50ZXJuYWxSdWxlcyIsIkludm9jYXRpb25Hcm91cGluZyIsIklzb2xhdGVkIiwiQ2hhbmdlU2V0IiwiQ3JlYXRpb25Nb2RlIiwiTmV3UGFnZSIsIlN5bmMiLCJBc3luYyIsIkRlZmVycmVkIiwiSW5saW5lIiwiQ3JlYXRpb25Sb3ciLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJFeHRlcm5hbCIsIkNyZWF0aW9uRGlhbG9nIiwiRGF0YVR5cGUiLCJyZWdpc3RlckVudW0iLCJWYXJpYW50TWFuYWdlbWVudCIsIk5vbmUiLCJQYWdlIiwiQ29udHJvbCIsIkNvbnN0YW50cyIsIkNhbmNlbEFjdGlvbkRpYWxvZyIsIkFjdGlvbkV4ZWN1dGlvbkZhaWxlZCIsIkNyZWF0aW9uRmFpbGVkIiwiT25CZWZvcmVDcmVhdGVGYWlsZWQiLCJQcm9ncmFtbWluZ01vZGVsIiwiRHJhZnQiLCJTdGlja3kiLCJOb25EcmFmdCIsIkRyYWZ0U3RhdHVzIiwiU2F2aW5nIiwiU2F2ZWQiLCJDbGVhciIsIkVkaXRNb2RlIiwiRGlzcGxheSIsIkVkaXRhYmxlIiwiVGVtcGxhdGVDb250ZW50VmlldyIsIkh5YnJpZCIsIkNoYXJ0IiwiVGFibGUiLCJJbml0aWFsTG9hZE1vZGUiLCJTdGFydHVwTW9kZSIsIk5vcm1hbCIsIkRlZXBsaW5rIiwiQ3JlYXRlIiwiQXV0b0NyZWF0ZSIsIkluaXRpYWxMb2FkVHlwZSIsImNyZWF0ZVR5cGUiLCJkZWZhdWx0VmFsdWUiLCJBdXRvIiwiaXNWYWxpZCIsInZWYWx1ZSIsIkxvZyIsIndhcm5pbmciLCJ1bmRlZmluZWQiLCJoYXNPd25Qcm9wZXJ0eSIsInNldE5vcm1hbGl6ZXIiLCJEaXNhYmxlZCIsIkVuYWJsZWQiLCJTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IiwicmVnaXN0ZXIiLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJSZXNvdXJjZU1vZGVsU2VydmljZUZhY3RvcnkiLCJDYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeSIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnkiLCJOYXZpZ2F0aW9uU2VydmljZSIsIlJvdXRpbmdTZXJ2aWNlRmFjdG9yeSIsIlNpZGVFZmZlY3RzU2VydmljZUZhY3RvcnkiLCJTaGVsbFNlcnZpY2VzRmFjdG9yeSIsIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkiLCJBc3luY0NvbXBvbmVudFNlcnZpY2VGYWN0b3J5IiwiQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnkiLCJUZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeSIsIlZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlRmFjdG9yeSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5IiwiQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSIsIklubGluZUVkaXRTZXJ2aWNlRmFjdG9yeSIsIlZpZXciLCJyZWdpc3RlclByZXByb2Nlc3NvciIsInhtbFZpZXdQcmVwcm9jZXNzb3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbImxpYnJhcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NyaXRpY2FsaXR5Rm9ybWF0dGVyXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0ZQTUZvcm1hdHRlclwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TdGFuZGFyZEZvcm1hdHRlclwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuXG5pbXBvcnQgQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgTmF2aWdhdGlvblNlcnZpY2UgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWxTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgUm91dGluZ1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTaGVsbFNlcnZpY2VzRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCBTaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5IGZyb20gXCIuL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZUZhY3RvcnkgZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5cbmltcG9ydCB7IHhtbFZpZXdQcmVwcm9jZXNzb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCBcInNhcC9mZS9iYXNlL2xpYnJhcnlcIjtcbmltcG9ydCBJbmxpbmVFZGl0U2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0lubGluZUVkaXRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvdHlwZS9EYXRlXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0RhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0VtYWlsXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0Zpc2NhbERhdGVcIjtcbmltcG9ydCBcInNhcC9mZS9jb3JlL3R5cGUvSW5wdXRNYXNrXCI7XG5pbXBvcnQgXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgXCJzYXAvZmUvcGxhY2Vob2xkZXIvbGlicmFyeVwiO1xuaW1wb3J0IERhdGFUeXBlIGZyb20gXCJzYXAvdWkvYmFzZS9EYXRhVHlwZVwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnlSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwiLi9zZXJ2aWNlcy9Db250ZXh0U2hhcmluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZUZhY3RvcnkgZnJvbSBcIi4vc2VydmljZXMvY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZUZhY3RvcnlcIjtcblxuLyoqXG4gKiBSb290IG5hbWVzcGFjZSBmb3IgYWxsIHRoZSBsaWJyYXJpZXMgcmVsYXRlZCB0byBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZU5hbWVzcGFjZSA9IFwic2FwLmZlXCI7XG4vKipcbiAqIExpYnJhcnkgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJ1bnRpbWUgZm9yIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZUNvcmVOYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlXCI7XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgY29udHJvbGxlciBleHRlbnNpb25zIHVzZWQgaW50ZXJuYWxseSBpbiBTQVAgRmlvcmkgZWxlbWVudHMgZXhwb3NpbmcgYSBtZXRob2QgdGhhdCB5b3UgY2FuIG92ZXJyaWRlIHRvIGFsbG93IG1vcmUgZmxleGliaWxpdHkuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZUNleHROYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zXCI7XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgY2xhc3NlcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIHRoZSBGbGV4aWJsZSBQcm9ncmFtbWluZyBNb2RlbFxuICogQG5hbWVzcGFjZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZmVGcG1OYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlLmZwbVwiO1xuXG5jb25zdCB0aGlzTGliID0gTGlicmFyeS5pbml0KHtcblx0bmFtZTogXCJzYXAuZmUuY29yZVwiLFxuXHRhcGlWZXJzaW9uOiAyLFxuXHRkZXBlbmRlbmNpZXM6IFtcInNhcC51aS5jb3JlXCIsIFwic2FwLmZlLmJhc2VcIiwgXCJzYXAuZmUubmF2aWdhdGlvblwiLCBcInNhcC5mZS5wbGFjZWhvbGRlclwiLCBcInNhcC5mXCJdLFxuXHR0eXBlczogW1wic2FwLmZlLmNvcmUuQ3JlYXRpb25Nb2RlXCIsIFwic2FwLmZlLmNvcmUuVmFyaWFudE1hbmFnZW1lbnRcIl0sXG5cdGludGVyZmFjZXM6IFtdLFxuXHRjb250cm9sczogW10sXG5cdGVsZW1lbnRzOiBbXSxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuXHR2ZXJzaW9uOiBcIiR7dmVyc2lvbn1cIixcblx0bm9MaWJyYXJ5Q1NTOiB0cnVlLFxuXHRleHRlbnNpb25zOiB7XG5cdFx0Ly9Db25maWd1cmF0aW9uIHVzZWQgZm9yIHJ1bGUgbG9hZGluZyBvZiBTdXBwb3J0IEFzc2lzdGFudFxuXHRcdFwic2FwLnVpLnN1cHBvcnRcIjoge1xuXHRcdFx0cHVibGljUnVsZXM6IHRydWUsXG5cdFx0XHRpbnRlcm5hbFJ1bGVzOiB0cnVlXG5cdFx0fVxuXHR9XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59KSBhcyBhbnk7XG5cbi8qKlxuICogQXZhaWxhYmxlIHZhbHVlcyBmb3IgaW52b2NhdGlvbiBncm91cGluZy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5JbnZvY2F0aW9uR3JvdXBpbmcgPSB7XG5cdC8qKlxuXHQgKiBJc29sYXRlZC5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElzb2xhdGVkOiBcIklzb2xhdGVkXCIsXG5cdC8qKlxuXHQgKiBDaGFuZ2VTZXQuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDaGFuZ2VTZXQ6IFwiQ2hhbmdlU2V0XCJcbn07XG4vKipcbiAqIEF2YWlsYWJsZSB2YWx1ZXMgZm9yIGNyZWF0aW9uIG1vZGUuXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbnRoaXNMaWIuQ3JlYXRpb25Nb2RlID0ge1xuXHQvKipcblx0ICogTmV3IFBhZ2UuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHROZXdQYWdlOiBcIk5ld1BhZ2VcIixcblx0LyoqXG5cdCAqIFN5bmMuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRTeW5jOiBcIlN5bmNcIixcblx0LyoqXG5cdCAqIEFzeW5jLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QXN5bmM6IFwiQXN5bmNcIixcblx0LyoqXG5cdCAqIERlZmVycmVkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0RGVmZXJyZWQ6IFwiRGVmZXJyZWRcIixcblx0LyoqXG5cdCAqIElubGluZS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElubGluZTogXCJJbmxpbmVcIixcblx0LyoqXG5cdCAqIENyZWF0aW9uIHJvdy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdENyZWF0aW9uUm93OiBcIkNyZWF0aW9uUm93XCIsXG5cdC8qKlxuXHQgKiBJbmxpbmUgY3JlYXRpb24gcm93cy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElubGluZUNyZWF0aW9uUm93czogXCJJbmxpbmVDcmVhdGlvblJvd3NcIixcblx0LyoqXG5cdCAqIEV4dGVybmFsIChieSBvdXRib3VuZCBuYXZpZ2F0aW9uKS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEV4dGVybmFsOiBcIkV4dGVybmFsXCIsXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBkaWFsb2cuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDcmVhdGlvbkRpYWxvZzogXCJDcmVhdGlvbkRpYWxvZ1wiXG59O1xuXG5EYXRhVHlwZS5yZWdpc3RlckVudW0oXCJzYXAuZmUuY29yZS5DcmVhdGlvbk1vZGVcIiwgdGhpc0xpYi5DcmVhdGlvbk1vZGUpO1xuLyoqXG4gKiBBdmFpbGFibGUgdmFsdWVzIGZvciBWYXJpYW50IE1hbmFnZW1lbnQuXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbnRoaXNMaWIuVmFyaWFudE1hbmFnZW1lbnQgPSB7XG5cdC8qKlxuXHQgKiBObyB2YXJpYW50IG1hbmFnZW1lbnQgYXQgYWxsLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Tm9uZTogXCJOb25lXCIsXG5cblx0LyoqXG5cdCAqIE9uZSB2YXJpYW50IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0UGFnZTogXCJQYWdlXCIsXG5cblx0LyoqXG5cdCAqIFZhcmlhbnQgbWFuYWdlbWVudCBvbiBjb250cm9sIGxldmVsLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q29udHJvbDogXCJDb250cm9sXCJcbn07XG5EYXRhVHlwZS5yZWdpc3RlckVudW0oXCJzYXAuZmUuY29yZS5WYXJpYW50TWFuYWdlbWVudFwiLCB0aGlzTGliLlZhcmlhbnRNYW5hZ2VtZW50KTtcbi8qKlxuICogQXZhaWxhYmxlIGNvbnN0YW50cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5Db25zdGFudHMgPSB7XG5cdC8qXG5cdCAqIEluZGljYXRlcyBjYW5jZWxsaW5nIG9mIGFuIGFjdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDYW5jZWxBY3Rpb25EaWFsb2c6IFwiY2FuY2VsXCIsXG5cdC8qXG5cdCAqIEluZGljYXRlcyBmYWlsdXJlIHJldHVybmVkIGZyb20gYmFja2VuZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhbiBhY3Rpb25cblx0ICpcblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEFjdGlvbkV4ZWN1dGlvbkZhaWxlZDogXCJhY3Rpb25FeGVjdXRpb25GYWlsZWRcIixcblx0Lypcblx0ICogSW5kaWNhdGVzIGZhaWx1cmUgcmV0dXJuZWQgZnJvbSBiYWNrZW5kIGR1cmluZyBjcmVhdGlvbiBvZiBhIGJ1c2luZXNzIG9iamVjdCAodmlhIGRpcmVjdCBQT1NUKVxuXHQgKlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q3JlYXRpb25GYWlsZWQ6IFwiY3JlYXRpb25GYWlsZWRcIixcblx0Lypcblx0ICogSW5kaWNhdGVzIGZhaWx1cmUgcmV0dXJuZWQgZnJvbSBvbkJlZm9yZUNyZWF0ZSBFZGl0IEZsb3cgaG9vayBjYWxsZWQgYmVmb3JlIGNyZWF0aW9uIG9mIGEgYnVzaW5lc3Mgb2JqZWN0XG5cdCAqXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRPbkJlZm9yZUNyZWF0ZUZhaWxlZDogXCJvbkJlZm9yZUNyZWF0ZUZhaWxlZFwiXG59O1xuLyoqXG4gKiBBdmFpbGFibGUgdmFsdWVzIGZvciBwcm9ncmFtbWluZyBtb2RlbC5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5Qcm9ncmFtbWluZ01vZGVsID0ge1xuXHQvKlxuXHQgKiBEcmFmdC5cblx0ICpcblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdERyYWZ0OiBcIkRyYWZ0XCIsXG5cdC8qKlxuXHQgKiBTdGlja3kuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRTdGlja3k6IFwiU3RpY2t5XCIsXG5cdC8qKlxuXHQgKiBOb25EcmFmdC5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdE5vbkRyYWZ0OiBcIk5vbkRyYWZ0XCJcbn07XG4vKipcbiAqIEF2YWlsYWJsZSB2YWx1ZXMgZm9yIGRyYWZ0IHN0YXR1cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5EcmFmdFN0YXR1cyA9IHtcblx0LyoqXG5cdCAqIFNhdmluZy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdFNhdmluZzogXCJTYXZpbmdcIixcblx0LyoqXG5cdCAqIFNhdmVkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0U2F2ZWQ6IFwiU2F2ZWRcIixcblx0LyoqXG5cdCAqIENsZWFyLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q2xlYXI6IFwiQ2xlYXJcIlxufTtcbi8qKlxuICogRWRpdCBtb2RlIHZhbHVlcy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5FZGl0TW9kZSA9IHtcblx0LyoqXG5cdCAqIFZpZXcgaXMgY3VycmVudGx5IGRpc3BsYXlpbmcgb25seS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdERpc3BsYXk6IFwiRGlzcGxheVwiLFxuXHQvKipcblx0ICogVmlldyBpcyBjdXJyZW50bHkgZWRpdGFibGUuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRFZGl0YWJsZTogXCJFZGl0YWJsZVwiXG59O1xuLyoqXG4gKiBUZW1wbGF0ZSB2aWV3cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5UZW1wbGF0ZUNvbnRlbnRWaWV3ID0ge1xuXHQvKipcblx0ICogSHlicmlkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdEh5YnJpZDogXCJIeWJyaWRcIixcblx0LyoqXG5cdCAqIENoYXJ0LlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdENoYXJ0OiBcIkNoYXJ0XCIsXG5cdC8qKlxuXHQgKiBUYWJsZS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRUYWJsZTogXCJUYWJsZVwiXG59O1xuLyoqXG4gKiBQb3NzaWJsZSBpbml0aWFsIGxvYWQgKGZpcnN0IGFwcCBzdGFydHVwKSBtb2RlcyBmb3IgYSBMaXN0UmVwb3J0LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuODYuMFxuICovXG5leHBvcnQgZW51bSBJbml0aWFsTG9hZE1vZGUge1xuXHQvKipcblx0ICogRGF0YSB3aWxsIGJlIGxvYWRlZCBpbml0aWFsbHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEVuYWJsZWQgPSBcIkVuYWJsZWRcIixcblxuXHQvKipcblx0ICogRGF0YSB3aWxsIG5vdCBiZSBsb2FkZWQgaW5pdGlhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHREaXNhYmxlZCA9IFwiRGlzYWJsZWRcIixcblxuXHQvKipcblx0ICogRGF0YSB3aWxsIGJlIGxvYWRlZCBpbml0aWFsbHkgaWYgZmlsdGVycyBhcmUgc2V0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRBdXRvID0gXCJBdXRvXCJcbn1cbnRoaXNMaWIuSW5pdGlhbExvYWRNb2RlID0gSW5pdGlhbExvYWRNb2RlO1xuXG4vKipcbiAqIFZhbHVlIG9mIHRoZSBzdGFydHVwIG1vZGVcbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5TdGFydHVwTW9kZSA9IHtcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIG5vcm1hbGx5LlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdE5vcm1hbDogXCJOb3JtYWxcIixcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIHdpdGggc3RhcnR1cCBrZXlzIChkZWVwbGluaykuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0RGVlcGxpbms6IFwiRGVlcGxpbmtcIixcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIGluICdjcmVhdGUnIG1vZGUuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0Q3JlYXRlOiBcIkNyZWF0ZVwiLFxuXHQvKipcblx0ICogQXBwIGhhcyBiZWVuIHN0YXJ0ZWQgaW4gJ2F1dG8gY3JlYXRlJyBtb2RlIHdoaWNoIG1lYW5zIHRvIHNraXAgYW55IGRpYWxvZ3Mgb24gc3RhcnR1cFxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdEF1dG9DcmVhdGU6IFwiQXV0b0NyZWF0ZVwiXG59O1xuLy8gZXhwbGljaXQgdHlwZSB0byBoYW5kbGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGJvb2xlYW4gdmFsdWVzXG5jb25zdCBJbml0aWFsTG9hZFR5cGUgPSBEYXRhVHlwZS5jcmVhdGVUeXBlKFwic2FwLmZlLmNvcmUuSW5pdGlhbExvYWRNb2RlXCIsIHtcblx0ZGVmYXVsdFZhbHVlOiB0aGlzTGliLkluaXRpYWxMb2FkTW9kZS5BdXRvLFxuXHRpc1ZhbGlkOiBmdW5jdGlvbiAodlZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdFx0aWYgKHR5cGVvZiB2VmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XCJERVBSRUNBVEVEOiBib29sZWFuIHZhbHVlIG5vdCBhbGxvd2VkIGZvciAnaW5pdGlhbExvYWQnIG1hbmlmZXN0IHNldHRpbmcgLSBzdXBwb3J0ZWQgdmFsdWVzIGFyZTogRGlzYWJsZWR8RW5hYmxlZHxBdXRvXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB2VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2VmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZWYWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdGhpc0xpYi5Jbml0aWFsTG9hZE1vZGUuaGFzT3duUHJvcGVydHkodlZhbHVlKTtcblx0fVxufSk7XG4vLyBub3JtYWxpemUgYSB2YWx1ZSwgdGFraW5nIGNhcmUgb2YgYm9vbGVhbiB0eXBlXG5Jbml0aWFsTG9hZFR5cGUuc2V0Tm9ybWFsaXplcihmdW5jdGlvbiAodlZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdGlmICghdlZhbHVlKSB7XG5cdFx0Ly8gdW5kZWZpbmVkLCBudWxsIG9yIGZhbHNlXG5cdFx0cmV0dXJuIHRoaXNMaWIuSW5pdGlhbExvYWRNb2RlLkRpc2FibGVkO1xuXHR9XG5cdHJldHVybiB2VmFsdWUgPT09IHRydWUgPyB0aGlzTGliLkluaXRpYWxMb2FkTW9kZS5FbmFibGVkIDogdlZhbHVlO1xufSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuVGVtcGxhdGVkVmlld1NlcnZpY2VcIiwgbmV3IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLCBuZXcgUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIiwgbmV3IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVwiLCBuZXcgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLCBuZXcgTmF2aWdhdGlvblNlcnZpY2UoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIiwgbmV3IFJvdXRpbmdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIiwgbmV3IFNpZGVFZmZlY3RzU2VydmljZUZhY3RvcnkoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLCBuZXcgU2hlbGxTZXJ2aWNlc0ZhY3RvcnkoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsIG5ldyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLCBuZXcgQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlXCIsIG5ldyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5UZWxlbWV0cnlTZXJ2aWNlXCIsIG5ldyBUZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5WYWx1ZUhlbHBIaXN0b3J5U2VydmljZVwiLCBuZXcgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VcIiwgbmV3IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbnRleHRTaGFyaW5nU2VydmljZVwiLCBuZXcgQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5JbmxpbmVFZGl0U2VydmljZVwiLCBuZXcgSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5KCkpO1xuXG5WaWV3LnJlZ2lzdGVyUHJlcHJvY2Vzc29yKFwiY29udHJvbHNcIiwgeG1sVmlld1ByZXByb2Nlc3NvciwgXCJYTUxcIiwgZmFsc2UsIHRydWUpO1xuXG5leHBvcnQgdHlwZSBDb3JlTGliID0ge1xuXHRJbnZvY2F0aW9uR3JvdXBpbmc6IHtcblx0XHRDaGFuZ2VTZXQ6IFwiQ2hhbmdlU2V0XCI7XG5cdFx0SXNvbGF0ZWQ6IFwiSXNvbGF0ZWRcIjtcblx0fTtcbn07XG5leHBvcnQgZGVmYXVsdCB0aGlzTGliO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0VBc0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxXQUFXLEdBQUcsUUFBUTtFQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkFDLFFBQUEsQ0FBQUQsV0FBQSxHQUFBQSxXQUFBO0VBS08sTUFBTUUsZUFBZSxHQUFHLGFBQWE7RUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBRCxRQUFBLENBQUFDLGVBQUEsR0FBQUEsZUFBQTtFQUtPLE1BQU1DLGVBQWUsR0FBRyxrQ0FBa0M7RUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBRixRQUFBLENBQUFFLGVBQUEsR0FBQUEsZUFBQTtFQUtPLE1BQU1DLGNBQWMsR0FBRyxpQkFBaUI7RUFBQ0gsUUFBQSxDQUFBRyxjQUFBLEdBQUFBLGNBQUE7RUFFaEQsTUFBTUMsT0FBTyxHQUFHQyxPQUFPLENBQUNDLElBQUksQ0FBQztJQUM1QkMsSUFBSSxFQUFFLGFBQWE7SUFDbkJDLFVBQVUsRUFBRSxDQUFDO0lBQ2JDLFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO0lBQ2hHQyxLQUFLLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwrQkFBK0IsQ0FBQztJQUNwRUMsVUFBVSxFQUFFLEVBQUU7SUFDZEMsUUFBUSxFQUFFLEVBQUU7SUFDWkMsUUFBUSxFQUFFLEVBQUU7SUFDWjtJQUNBQyxPQUFPLEVBQUUsWUFBWTtJQUNyQkMsWUFBWSxFQUFFLElBQUk7SUFDbEJDLFVBQVUsRUFBRTtNQUNYO01BQ0EsZ0JBQWdCLEVBQUU7UUFDakJDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCQyxhQUFhLEVBQUU7TUFDaEI7SUFDRDtJQUNBO0VBQ0QsQ0FBQyxDQUFROztFQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQWQsT0FBTyxDQUFDZSxrQkFBa0IsR0FBRztJQUM1QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsUUFBUSxFQUFFLFVBQVU7SUFDcEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLFNBQVMsRUFBRTtFQUNaLENBQUM7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0FqQixPQUFPLENBQUNrQixZQUFZLEdBQUc7SUFDdEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxJQUFJLEVBQUUsTUFBTTtJQUNaO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxLQUFLLEVBQUUsT0FBTztJQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxRQUFRLEVBQUUsVUFBVTtJQUNwQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsTUFBTSxFQUFFLFFBQVE7SUFDaEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLFdBQVcsRUFBRSxhQUFhO0lBQzFCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxrQkFBa0IsRUFBRSxvQkFBb0I7SUFDeEM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLFFBQVEsRUFBRSxVQUFVO0lBQ3BCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxjQUFjLEVBQUU7RUFDakIsQ0FBQztFQUVEQyxRQUFRLENBQUNDLFlBQVksQ0FBQywwQkFBMEIsRUFBRTdCLE9BQU8sQ0FBQ2tCLFlBQVksQ0FBQztFQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0FsQixPQUFPLENBQUM4QixpQkFBaUIsR0FBRztJQUMzQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsSUFBSSxFQUFFLE1BQU07SUFFWjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsSUFBSSxFQUFFLE1BQU07SUFFWjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsT0FBTyxFQUFFO0VBQ1YsQ0FBQztFQUNETCxRQUFRLENBQUNDLFlBQVksQ0FBQywrQkFBK0IsRUFBRTdCLE9BQU8sQ0FBQzhCLGlCQUFpQixDQUFDO0VBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQTlCLE9BQU8sQ0FBQ2tDLFNBQVMsR0FBRztJQUNuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxrQkFBa0IsRUFBRSxRQUFRO0lBQzVCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLG9CQUFvQixFQUFFO0VBQ3ZCLENBQUM7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0F0QyxPQUFPLENBQUN1QyxnQkFBZ0IsR0FBRztJQUMxQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxLQUFLLEVBQUUsT0FBTztJQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxNQUFNLEVBQUUsUUFBUTtJQUNoQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsUUFBUSxFQUFFO0VBQ1gsQ0FBQztFQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQTFDLE9BQU8sQ0FBQzJDLFdBQVcsR0FBRztJQUNyQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsTUFBTSxFQUFFLFFBQVE7SUFDaEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLEtBQUssRUFBRSxPQUFPO0lBQ2Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLEtBQUssRUFBRTtFQUNSLENBQUM7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0E5QyxPQUFPLENBQUMrQyxRQUFRLEdBQUc7SUFDbEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxRQUFRLEVBQUU7RUFDWCxDQUFDO0VBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBakQsT0FBTyxDQUFDa0QsbUJBQW1CLEdBQUc7SUFDN0I7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxNQUFNLEVBQUUsUUFBUTtJQUNoQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLEtBQUssRUFBRSxPQUFPO0lBQ2Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxLQUFLLEVBQUU7RUFDUixDQUFDO0VBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQU9ZQyxlQUFlLDBCQUFmQSxlQUFlO0lBQzFCO0FBQ0Q7QUFDQTtBQUNBO0lBSllBLGVBQWU7SUFPMUI7QUFDRDtBQUNBO0FBQ0E7SUFWWUEsZUFBZTtJQWExQjtBQUNEO0FBQ0E7QUFDQTtJQWhCWUEsZUFBZTtJQUFBLE9BQWZBLGVBQWU7RUFBQTtFQW1CM0J0RCxPQUFPLENBQUNzRCxlQUFlLEdBQUdBLGVBQWU7O0VBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFKQTFELFFBQUEsQ0FBQTBELGVBQUEsR0FBQUEsZUFBQTtFQUtBdEQsT0FBTyxDQUFDdUQsV0FBVyxHQUFHO0lBQ3JCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsTUFBTSxFQUFFLFFBQVE7SUFDaEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxRQUFRLEVBQUUsVUFBVTtJQUNwQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsVUFBVSxFQUFFO0VBQ2IsQ0FBQztFQUNEO0VBQ0EsTUFBTUMsZUFBZSxHQUFHaEMsUUFBUSxDQUFDaUMsVUFBVSxDQUFDLDZCQUE2QixFQUFFO0lBQzFFQyxZQUFZLEVBQUU5RCxPQUFPLENBQUNzRCxlQUFlLENBQUNTLElBQUk7SUFDMUNDLE9BQU8sRUFBRSxTQUFBQSxDQUFVQyxNQUFvQyxFQUFFO01BQ3hELElBQUksT0FBT0EsTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUNoQ0MsR0FBRyxDQUFDQyxPQUFPLENBQ1Ysd0hBQ0QsQ0FBQztNQUNGO01BQ0EsT0FBT0YsTUFBTSxLQUFLRyxTQUFTLElBQUlILE1BQU0sS0FBSyxJQUFJLElBQUksT0FBT0EsTUFBTSxLQUFLLFNBQVMsSUFBSWpFLE9BQU8sQ0FBQ3NELGVBQWUsQ0FBQ2UsY0FBYyxDQUFDSixNQUFNLENBQUM7SUFDaEk7RUFDRCxDQUFDLENBQUM7RUFDRjtFQUNBTCxlQUFlLENBQUNVLGFBQWEsQ0FBQyxVQUFVTCxNQUFvQyxFQUFFO0lBQzdFLElBQUksQ0FBQ0EsTUFBTSxFQUFFO01BQ1o7TUFDQSxPQUFPakUsT0FBTyxDQUFDc0QsZUFBZSxDQUFDaUIsUUFBUTtJQUN4QztJQUNBLE9BQU9OLE1BQU0sS0FBSyxJQUFJLEdBQUdqRSxPQUFPLENBQUNzRCxlQUFlLENBQUNrQixPQUFPLEdBQUdQLE1BQU07RUFDbEUsQ0FBQyxDQUFDO0VBQ0ZRLHNCQUFzQixDQUFDQyxRQUFRLENBQUMsMkNBQTJDLEVBQUUsSUFBSUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO0VBQy9HRixzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLDJDQUEyQyxFQUFFLElBQUlFLDJCQUEyQixDQUFDLENBQUMsQ0FBQztFQUMvR0gsc0JBQXNCLENBQUNDLFFBQVEsQ0FBQywwQ0FBMEMsRUFBRSxJQUFJRywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7RUFDN0dKLHNCQUFzQixDQUFDQyxRQUFRLENBQUMsa0RBQWtELEVBQUUsSUFBSUksa0NBQWtDLENBQUMsQ0FBQyxDQUFDO0VBQzdITCxzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLElBQUlLLGlCQUFpQixDQUFDLENBQUMsQ0FBQztFQUNsR04sc0JBQXNCLENBQUNDLFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxJQUFJTSxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7RUFDbkdQLHNCQUFzQixDQUFDQyxRQUFRLENBQUMseUNBQXlDLEVBQUUsSUFBSU8seUJBQXlCLENBQUMsQ0FBQyxDQUFDO0VBQzNHUixzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLElBQUlRLG9CQUFvQixDQUFDLENBQUMsQ0FBQztFQUNqR1Qsc0JBQXNCLENBQUNDLFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxJQUFJUyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7RUFDM0dWLHNCQUFzQixDQUFDQyxRQUFRLENBQUMsNENBQTRDLEVBQUUsSUFBSVUsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO0VBQ2pIWCxzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLGdEQUFnRCxFQUFFLElBQUlXLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztFQUN6SFosc0JBQXNCLENBQUNDLFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRSxJQUFJWSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7RUFDdkdiLHNCQUFzQixDQUFDQyxRQUFRLENBQUMsOENBQThDLEVBQUUsSUFBSWEsOEJBQThCLENBQUMsQ0FBQyxDQUFDO0VBQ3JIZCxzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLGdEQUFnRCxFQUFFLElBQUljLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztFQUN6SGYsc0JBQXNCLENBQUNDLFFBQVEsQ0FBQyw0Q0FBNEMsRUFBRSxJQUFJZSw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7RUFDakhoQixzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLElBQUlnQix3QkFBd0IsQ0FBQyxDQUFDLENBQUM7RUFFekdDLElBQUksQ0FBQ0Msb0JBQW9CLENBQUMsVUFBVSxFQUFFQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztFQUFDLE9BUWhFN0YsT0FBTztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
448
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZU5hbWVzcGFjZSIsIl9leHBvcnRzIiwiZmVDb3JlTmFtZXNwYWNlIiwiZmVDZXh0TmFtZXNwYWNlIiwiZmVGcG1OYW1lc3BhY2UiLCJ0aGlzTGliIiwiTGlicmFyeSIsImluaXQiLCJuYW1lIiwiYXBpVmVyc2lvbiIsImRlcGVuZGVuY2llcyIsInR5cGVzIiwiaW50ZXJmYWNlcyIsImNvbnRyb2xzIiwiZWxlbWVudHMiLCJ2ZXJzaW9uIiwibm9MaWJyYXJ5Q1NTIiwiZXh0ZW5zaW9ucyIsInB1YmxpY1J1bGVzIiwiaW50ZXJuYWxSdWxlcyIsIkludm9jYXRpb25Hcm91cGluZyIsIklzb2xhdGVkIiwiQ2hhbmdlU2V0IiwiQ3JlYXRpb25Nb2RlIiwiTmV3UGFnZSIsIlN5bmMiLCJBc3luYyIsIkRlZmVycmVkIiwiSW5saW5lIiwiQ3JlYXRpb25Sb3ciLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJFeHRlcm5hbCIsIkNyZWF0aW9uRGlhbG9nIiwiRGF0YVR5cGUiLCJyZWdpc3RlckVudW0iLCJWYXJpYW50TWFuYWdlbWVudCIsIk5vbmUiLCJQYWdlIiwiQ29udHJvbCIsIkNvbnN0YW50cyIsIkNhbmNlbEFjdGlvbkRpYWxvZyIsIkFjdGlvbkV4ZWN1dGlvbkZhaWxlZCIsIkNyZWF0aW9uRmFpbGVkIiwiT25CZWZvcmVDcmVhdGVGYWlsZWQiLCJQcm9ncmFtbWluZ01vZGVsIiwiRHJhZnQiLCJTdGlja3kiLCJOb25EcmFmdCIsIkRyYWZ0U3RhdHVzIiwiU2F2aW5nIiwiU2F2ZWQiLCJDbGVhciIsIkVkaXRNb2RlIiwiRGlzcGxheSIsIkVkaXRhYmxlIiwiVGVtcGxhdGVDb250ZW50VmlldyIsIkh5YnJpZCIsIkNoYXJ0IiwiVGFibGUiLCJJbml0aWFsTG9hZE1vZGUiLCJTdGFydHVwTW9kZSIsIk5vcm1hbCIsIkRlZXBsaW5rIiwiQ3JlYXRlIiwiQXV0b0NyZWF0ZSIsIkNvbnRleHROYXZpZ2F0aW9uVHlwZSIsIkluaXRpYWxMb2FkVHlwZSIsImNyZWF0ZVR5cGUiLCJkZWZhdWx0VmFsdWUiLCJBdXRvIiwiaXNWYWxpZCIsInZWYWx1ZSIsIkxvZyIsIndhcm5pbmciLCJ1bmRlZmluZWQiLCJoYXNPd25Qcm9wZXJ0eSIsInNldE5vcm1hbGl6ZXIiLCJEaXNhYmxlZCIsIkVuYWJsZWQiLCJTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IiwicmVnaXN0ZXIiLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJSZXNvdXJjZU1vZGVsU2VydmljZUZhY3RvcnkiLCJDYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeSIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnkiLCJOYXZpZ2F0aW9uU2VydmljZSIsIlJvdXRpbmdTZXJ2aWNlRmFjdG9yeSIsIlNpZGVFZmZlY3RzU2VydmljZUZhY3RvcnkiLCJTaGVsbFNlcnZpY2VzRmFjdG9yeSIsIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkiLCJBc3luY0NvbXBvbmVudFNlcnZpY2VGYWN0b3J5IiwiQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnkiLCJUZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeSIsIlZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlRmFjdG9yeSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5IiwiQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSIsIklubGluZUVkaXRTZXJ2aWNlRmFjdG9yeSIsIlhNTFZpZXciLCJyZWdpc3RlclByZXByb2Nlc3NvciIsInhtbFZpZXdQcmVwcm9jZXNzb3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbImxpYnJhcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NyaXRpY2FsaXR5Rm9ybWF0dGVyXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0ZQTUZvcm1hdHRlclwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TdGFuZGFyZEZvcm1hdHRlclwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuXG5pbXBvcnQgQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgTmF2aWdhdGlvblNlcnZpY2UgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWxTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgUm91dGluZ1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTaGVsbFNlcnZpY2VzRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCBTaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5IGZyb20gXCIuL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZUZhY3RvcnkgZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5cbmltcG9ydCB7IHhtbFZpZXdQcmVwcm9jZXNzb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCBcInNhcC9mZS9iYXNlL2xpYnJhcnlcIjtcbmltcG9ydCBJbmxpbmVFZGl0U2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0lubGluZUVkaXRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvdHlwZS9EYXRlXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0RhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0VtYWlsXCI7XG5pbXBvcnQgXCJzYXAvZmUvY29yZS90eXBlL0Zpc2NhbERhdGVcIjtcbmltcG9ydCBcInNhcC9mZS9jb3JlL3R5cGUvSW5wdXRNYXNrXCI7XG5pbXBvcnQgXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgXCJzYXAvZmUvcGxhY2Vob2xkZXIvbGlicmFyeVwiO1xuaW1wb3J0IERhdGFUeXBlIGZyb20gXCJzYXAvdWkvYmFzZS9EYXRhVHlwZVwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IFhNTFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9YTUxWaWV3XCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnlSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwiLi9zZXJ2aWNlcy9Db250ZXh0U2hhcmluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZUZhY3RvcnkgZnJvbSBcIi4vc2VydmljZXMvY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZUZhY3RvcnlcIjtcblxuLyoqXG4gKiBSb290IG5hbWVzcGFjZSBmb3IgYWxsIHRoZSBsaWJyYXJpZXMgcmVsYXRlZCB0byBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZU5hbWVzcGFjZSA9IFwic2FwLmZlXCI7XG4vKipcbiAqIExpYnJhcnkgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJ1bnRpbWUgZm9yIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZUNvcmVOYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlXCI7XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgY29udHJvbGxlciBleHRlbnNpb25zIHVzZWQgaW50ZXJuYWxseSBpbiBTQVAgRmlvcmkgZWxlbWVudHMgZXhwb3NpbmcgYSBtZXRob2QgdGhhdCB5b3UgY2FuIG92ZXJyaWRlIHRvIGFsbG93IG1vcmUgZmxleGliaWxpdHkuXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmZUNleHROYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zXCI7XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgY2xhc3NlcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIHRoZSBGbGV4aWJsZSBQcm9ncmFtbWluZyBNb2RlbFxuICogQG5hbWVzcGFjZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZmVGcG1OYW1lc3BhY2UgPSBcInNhcC5mZS5jb3JlLmZwbVwiO1xuXG5jb25zdCB0aGlzTGliID0gTGlicmFyeS5pbml0KHtcblx0bmFtZTogXCJzYXAuZmUuY29yZVwiLFxuXHRhcGlWZXJzaW9uOiAyLFxuXHRkZXBlbmRlbmNpZXM6IFtcInNhcC51aS5jb3JlXCIsIFwic2FwLmZlLmJhc2VcIiwgXCJzYXAuZmUubmF2aWdhdGlvblwiLCBcInNhcC5mZS5wbGFjZWhvbGRlclwiLCBcInNhcC5mXCJdLFxuXHR0eXBlczogW1wic2FwLmZlLmNvcmUuQ3JlYXRpb25Nb2RlXCIsIFwic2FwLmZlLmNvcmUuVmFyaWFudE1hbmFnZW1lbnRcIl0sXG5cdGludGVyZmFjZXM6IFtdLFxuXHRjb250cm9sczogW10sXG5cdGVsZW1lbnRzOiBbXSxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuXHR2ZXJzaW9uOiBcIiR7dmVyc2lvbn1cIixcblx0bm9MaWJyYXJ5Q1NTOiB0cnVlLFxuXHRleHRlbnNpb25zOiB7XG5cdFx0Ly9Db25maWd1cmF0aW9uIHVzZWQgZm9yIHJ1bGUgbG9hZGluZyBvZiBTdXBwb3J0IEFzc2lzdGFudFxuXHRcdFwic2FwLnVpLnN1cHBvcnRcIjoge1xuXHRcdFx0cHVibGljUnVsZXM6IHRydWUsXG5cdFx0XHRpbnRlcm5hbFJ1bGVzOiB0cnVlXG5cdFx0fVxuXHR9XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59KSBhcyBhbnk7XG5cbi8qKlxuICogQXZhaWxhYmxlIHZhbHVlcyBmb3IgaW52b2NhdGlvbiBncm91cGluZy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5JbnZvY2F0aW9uR3JvdXBpbmcgPSB7XG5cdC8qKlxuXHQgKiBJc29sYXRlZC5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElzb2xhdGVkOiBcIklzb2xhdGVkXCIsXG5cdC8qKlxuXHQgKiBDaGFuZ2VTZXQuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDaGFuZ2VTZXQ6IFwiQ2hhbmdlU2V0XCJcbn07XG4vKipcbiAqIEF2YWlsYWJsZSB2YWx1ZXMgZm9yIGNyZWF0aW9uIG1vZGUuXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbnRoaXNMaWIuQ3JlYXRpb25Nb2RlID0ge1xuXHQvKipcblx0ICogTmV3IFBhZ2UuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHROZXdQYWdlOiBcIk5ld1BhZ2VcIixcblx0LyoqXG5cdCAqIFN5bmMuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRTeW5jOiBcIlN5bmNcIixcblx0LyoqXG5cdCAqIEFzeW5jLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QXN5bmM6IFwiQXN5bmNcIixcblx0LyoqXG5cdCAqIERlZmVycmVkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0RGVmZXJyZWQ6IFwiRGVmZXJyZWRcIixcblx0LyoqXG5cdCAqIElubGluZS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElubGluZTogXCJJbmxpbmVcIixcblx0LyoqXG5cdCAqIENyZWF0aW9uIHJvdy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdENyZWF0aW9uUm93OiBcIkNyZWF0aW9uUm93XCIsXG5cdC8qKlxuXHQgKiBJbmxpbmUgY3JlYXRpb24gcm93cy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdElubGluZUNyZWF0aW9uUm93czogXCJJbmxpbmVDcmVhdGlvblJvd3NcIixcblx0LyoqXG5cdCAqIEV4dGVybmFsIChieSBvdXRib3VuZCBuYXZpZ2F0aW9uKS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEV4dGVybmFsOiBcIkV4dGVybmFsXCIsXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBkaWFsb2cuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDcmVhdGlvbkRpYWxvZzogXCJDcmVhdGlvbkRpYWxvZ1wiXG59O1xuXG5EYXRhVHlwZS5yZWdpc3RlckVudW0oXCJzYXAuZmUuY29yZS5DcmVhdGlvbk1vZGVcIiwgdGhpc0xpYi5DcmVhdGlvbk1vZGUpO1xuLyoqXG4gKiBBdmFpbGFibGUgdmFsdWVzIGZvciBWYXJpYW50IE1hbmFnZW1lbnQuXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbnRoaXNMaWIuVmFyaWFudE1hbmFnZW1lbnQgPSB7XG5cdC8qKlxuXHQgKiBObyB2YXJpYW50IG1hbmFnZW1lbnQgYXQgYWxsLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Tm9uZTogXCJOb25lXCIsXG5cblx0LyoqXG5cdCAqIE9uZSB2YXJpYW50IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0UGFnZTogXCJQYWdlXCIsXG5cblx0LyoqXG5cdCAqIFZhcmlhbnQgbWFuYWdlbWVudCBvbiBjb250cm9sIGxldmVsLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q29udHJvbDogXCJDb250cm9sXCJcbn07XG5EYXRhVHlwZS5yZWdpc3RlckVudW0oXCJzYXAuZmUuY29yZS5WYXJpYW50TWFuYWdlbWVudFwiLCB0aGlzTGliLlZhcmlhbnRNYW5hZ2VtZW50KTtcbi8qKlxuICogQXZhaWxhYmxlIGNvbnN0YW50cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5Db25zdGFudHMgPSB7XG5cdC8qXG5cdCAqIEluZGljYXRlcyBjYW5jZWxsaW5nIG9mIGFuIGFjdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRDYW5jZWxBY3Rpb25EaWFsb2c6IFwiY2FuY2VsXCIsXG5cdC8qXG5cdCAqIEluZGljYXRlcyBmYWlsdXJlIHJldHVybmVkIGZyb20gYmFja2VuZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhbiBhY3Rpb25cblx0ICpcblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEFjdGlvbkV4ZWN1dGlvbkZhaWxlZDogXCJhY3Rpb25FeGVjdXRpb25GYWlsZWRcIixcblx0Lypcblx0ICogSW5kaWNhdGVzIGZhaWx1cmUgcmV0dXJuZWQgZnJvbSBiYWNrZW5kIGR1cmluZyBjcmVhdGlvbiBvZiBhIGJ1c2luZXNzIG9iamVjdCAodmlhIGRpcmVjdCBQT1NUKVxuXHQgKlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q3JlYXRpb25GYWlsZWQ6IFwiY3JlYXRpb25GYWlsZWRcIixcblx0Lypcblx0ICogSW5kaWNhdGVzIGZhaWx1cmUgcmV0dXJuZWQgZnJvbSBvbkJlZm9yZUNyZWF0ZSBFZGl0IEZsb3cgaG9vayBjYWxsZWQgYmVmb3JlIGNyZWF0aW9uIG9mIGEgYnVzaW5lc3Mgb2JqZWN0XG5cdCAqXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRPbkJlZm9yZUNyZWF0ZUZhaWxlZDogXCJvbkJlZm9yZUNyZWF0ZUZhaWxlZFwiXG59O1xuLyoqXG4gKiBBdmFpbGFibGUgdmFsdWVzIGZvciBwcm9ncmFtbWluZyBtb2RlbC5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5Qcm9ncmFtbWluZ01vZGVsID0ge1xuXHQvKlxuXHQgKiBEcmFmdC5cblx0ICpcblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdERyYWZ0OiBcIkRyYWZ0XCIsXG5cdC8qKlxuXHQgKiBTdGlja3kuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRTdGlja3k6IFwiU3RpY2t5XCIsXG5cdC8qKlxuXHQgKiBOb25EcmFmdC5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdE5vbkRyYWZ0OiBcIk5vbkRyYWZ0XCJcbn07XG4vKipcbiAqIEF2YWlsYWJsZSB2YWx1ZXMgZm9yIGRyYWZ0IHN0YXR1cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5EcmFmdFN0YXR1cyA9IHtcblx0LyoqXG5cdCAqIFNhdmluZy5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdFNhdmluZzogXCJTYXZpbmdcIixcblx0LyoqXG5cdCAqIFNhdmVkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0U2F2ZWQ6IFwiU2F2ZWRcIixcblx0LyoqXG5cdCAqIENsZWFyLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Q2xlYXI6IFwiQ2xlYXJcIlxufTtcbi8qKlxuICogRWRpdCBtb2RlIHZhbHVlcy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5FZGl0TW9kZSA9IHtcblx0LyoqXG5cdCAqIFZpZXcgaXMgY3VycmVudGx5IGRpc3BsYXlpbmcgb25seS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdERpc3BsYXk6IFwiRGlzcGxheVwiLFxuXHQvKipcblx0ICogVmlldyBpcyBjdXJyZW50bHkgZWRpdGFibGUuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRFZGl0YWJsZTogXCJFZGl0YWJsZVwiXG59O1xuLyoqXG4gKiBUZW1wbGF0ZSB2aWV3cy5cbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5UZW1wbGF0ZUNvbnRlbnRWaWV3ID0ge1xuXHQvKipcblx0ICogSHlicmlkLlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdEh5YnJpZDogXCJIeWJyaWRcIixcblx0LyoqXG5cdCAqIENoYXJ0LlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdENoYXJ0OiBcIkNoYXJ0XCIsXG5cdC8qKlxuXHQgKiBUYWJsZS5cblx0ICogQGNvbnN0YW50XG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRUYWJsZTogXCJUYWJsZVwiXG59O1xuLyoqXG4gKiBQb3NzaWJsZSBpbml0aWFsIGxvYWQgKGZpcnN0IGFwcCBzdGFydHVwKSBtb2RlcyBmb3IgYSBMaXN0UmVwb3J0LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuODYuMFxuICovXG5leHBvcnQgZW51bSBJbml0aWFsTG9hZE1vZGUge1xuXHQvKipcblx0ICogRGF0YSB3aWxsIGJlIGxvYWRlZCBpbml0aWFsbHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEVuYWJsZWQgPSBcIkVuYWJsZWRcIixcblxuXHQvKipcblx0ICogRGF0YSB3aWxsIG5vdCBiZSBsb2FkZWQgaW5pdGlhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHREaXNhYmxlZCA9IFwiRGlzYWJsZWRcIixcblxuXHQvKipcblx0ICogRGF0YSB3aWxsIGJlIGxvYWRlZCBpbml0aWFsbHkgaWYgZmlsdGVycyBhcmUgc2V0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRBdXRvID0gXCJBdXRvXCJcbn1cbnRoaXNMaWIuSW5pdGlhbExvYWRNb2RlID0gSW5pdGlhbExvYWRNb2RlO1xuXG4vKipcbiAqIFZhbHVlIG9mIHRoZSBzdGFydHVwIG1vZGVcbiAqIEByZWFkb25seVxuICogQGVudW0ge3N0cmluZ31cbiAqL1xudGhpc0xpYi5TdGFydHVwTW9kZSA9IHtcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIG5vcm1hbGx5LlxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdE5vcm1hbDogXCJOb3JtYWxcIixcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIHdpdGggc3RhcnR1cCBrZXlzIChkZWVwbGluaykuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0RGVlcGxpbms6IFwiRGVlcGxpbmtcIixcblx0LyoqXG5cdCAqIEFwcCBoYXMgYmVlbiBzdGFydGVkIGluICdjcmVhdGUnIG1vZGUuXG5cdCAqIEBjb25zdGFudFxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0Q3JlYXRlOiBcIkNyZWF0ZVwiLFxuXHQvKipcblx0ICogQXBwIGhhcyBiZWVuIHN0YXJ0ZWQgaW4gJ2F1dG8gY3JlYXRlJyBtb2RlIHdoaWNoIG1lYW5zIHRvIHNraXAgYW55IGRpYWxvZ3Mgb24gc3RhcnR1cFxuXHQgKiBAY29uc3RhbnRcblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdEF1dG9DcmVhdGU6IFwiQXV0b0NyZWF0ZVwiXG59O1xuXG4vKipcbiAqIFBvc3NpYmxlIG5hdmlnYXRpb24gbW9kZXMgZm9yIGEgcGFnaW5hdGlvbi5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjEzOC4wXG4gKi9cblxuZXhwb3J0IGVudW0gQ29udGV4dE5hdmlnYXRpb25UeXBlIHtcblx0LyoqXG5cdCAqIEluZGljYXRlcyB0aGF0IHRoZXJlIGlzIG5vIG5hdmlnYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdE5vbmUgPSBcIk5vbmVcIixcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIHRoYXQgdGhlIG5hdmlnYXRpb24gaXMgdG8gYSBzdWJvYmplY3QgcGFnZSB3aXRoaW4gdGhlIHNhbWUgYXBwbGljYXRpb24uXG5cdCAqICBAcHVibGljXG5cdCAqL1xuXHRJbnRlcm5hbCA9IFwiSW50ZXJuYWxcIixcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIHRoYXQgdGhlIG5hdmlnYXRpb24gaXMgdG8gYW4gZXh0ZXJuYWwgYXBwbGljYXRpb24uXG5cdCAqICBAcHVibGljXG5cdCAqL1xuXHRFeHRlcm5hbCA9IFwiRXh0ZXJuYWxcIlxufVxuXG50aGlzTGliLkNvbnRleHROYXZpZ2F0aW9uVHlwZSA9IENvbnRleHROYXZpZ2F0aW9uVHlwZTtcblxuLy8gZXhwbGljaXQgdHlwZSB0byBoYW5kbGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGJvb2xlYW4gdmFsdWVzXG5jb25zdCBJbml0aWFsTG9hZFR5cGUgPSBEYXRhVHlwZS5jcmVhdGVUeXBlKFwic2FwLmZlLmNvcmUuSW5pdGlhbExvYWRNb2RlXCIsIHtcblx0ZGVmYXVsdFZhbHVlOiB0aGlzTGliLkluaXRpYWxMb2FkTW9kZS5BdXRvLFxuXHRpc1ZhbGlkOiBmdW5jdGlvbiAodlZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdFx0aWYgKHR5cGVvZiB2VmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XCJERVBSRUNBVEVEOiBib29sZWFuIHZhbHVlIG5vdCBhbGxvd2VkIGZvciAnaW5pdGlhbExvYWQnIG1hbmlmZXN0IHNldHRpbmcgLSBzdXBwb3J0ZWQgdmFsdWVzIGFyZTogRGlzYWJsZWR8RW5hYmxlZHxBdXRvXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB2VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2VmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZWYWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdGhpc0xpYi5Jbml0aWFsTG9hZE1vZGUuaGFzT3duUHJvcGVydHkodlZhbHVlKTtcblx0fVxufSk7XG4vLyBub3JtYWxpemUgYSB2YWx1ZSwgdGFraW5nIGNhcmUgb2YgYm9vbGVhbiB0eXBlXG5Jbml0aWFsTG9hZFR5cGUuc2V0Tm9ybWFsaXplcihmdW5jdGlvbiAodlZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdGlmICghdlZhbHVlKSB7XG5cdFx0Ly8gdW5kZWZpbmVkLCBudWxsIG9yIGZhbHNlXG5cdFx0cmV0dXJuIHRoaXNMaWIuSW5pdGlhbExvYWRNb2RlLkRpc2FibGVkO1xuXHR9XG5cdHJldHVybiB2VmFsdWUgPT09IHRydWUgPyB0aGlzTGliLkluaXRpYWxMb2FkTW9kZS5FbmFibGVkIDogdlZhbHVlO1xufSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuVGVtcGxhdGVkVmlld1NlcnZpY2VcIiwgbmV3IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLCBuZXcgUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIiwgbmV3IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVwiLCBuZXcgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLCBuZXcgTmF2aWdhdGlvblNlcnZpY2UoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIiwgbmV3IFJvdXRpbmdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIiwgbmV3IFNpZGVFZmZlY3RzU2VydmljZUZhY3RvcnkoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLCBuZXcgU2hlbGxTZXJ2aWNlc0ZhY3RvcnkoKSk7XG5TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyKFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsIG5ldyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLCBuZXcgQXN5bmNDb21wb25lbnRTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlXCIsIG5ldyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5UZWxlbWV0cnlTZXJ2aWNlXCIsIG5ldyBUZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5WYWx1ZUhlbHBIaXN0b3J5U2VydmljZVwiLCBuZXcgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VcIiwgbmV3IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5KCkpO1xuU2VydmljZUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlcihcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbnRleHRTaGFyaW5nU2VydmljZVwiLCBuZXcgQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeSgpKTtcblNlcnZpY2VGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXIoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5JbmxpbmVFZGl0U2VydmljZVwiLCBuZXcgSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5KCkpO1xuXG5YTUxWaWV3LnJlZ2lzdGVyUHJlcHJvY2Vzc29yKFwiY29udHJvbHNcIiwgeG1sVmlld1ByZXByb2Nlc3NvciwgXCJYTUxcIiwgZmFsc2UsIHRydWUpO1xuXG5leHBvcnQgdHlwZSBDb3JlTGliID0ge1xuXHRJbnZvY2F0aW9uR3JvdXBpbmc6IHtcblx0XHRDaGFuZ2VTZXQ6IFwiQ2hhbmdlU2V0XCI7XG5cdFx0SXNvbGF0ZWQ6IFwiSXNvbGF0ZWRcIjtcblx0fTtcbn07XG5leHBvcnQgZGVmYXVsdCB0aGlzTGliO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0VBc0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxXQUFXLEdBQUcsUUFBUTtFQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkFDLFFBQUEsQ0FBQUQsV0FBQSxHQUFBQSxXQUFBO0VBS08sTUFBTUUsZUFBZSxHQUFHLGFBQWE7RUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBRCxRQUFBLENBQUFDLGVBQUEsR0FBQUEsZUFBQTtFQUtPLE1BQU1DLGVBQWUsR0FBRyxrQ0FBa0M7RUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBRixRQUFBLENBQUFFLGVBQUEsR0FBQUEsZUFBQTtFQUtPLE1BQU1DLGNBQWMsR0FBRyxpQkFBaUI7RUFBQ0gsUUFBQSxDQUFBRyxjQUFBLEdBQUFBLGNBQUE7RUFFaEQsTUFBTUMsT0FBTyxHQUFHQyxPQUFPLENBQUNDLElBQUksQ0FBQztJQUM1QkMsSUFBSSxFQUFFLGFBQWE7SUFDbkJDLFVBQVUsRUFBRSxDQUFDO0lBQ2JDLFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsbUJB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
|
|
@@ -31,7 +31,7 @@ import "sap/fe/placeholder/library";
|
|
|
31
31
|
import DataType from "sap/ui/base/DataType";
|
|
32
32
|
import Library from "sap/ui/core/Lib";
|
|
33
33
|
import "sap/ui/core/library";
|
|
34
|
-
import
|
|
34
|
+
import XMLView from "sap/ui/core/mvc/XMLView";
|
|
35
35
|
import ServiceFactoryRegistry from "sap/ui/core/service/ServiceFactoryRegistry";
|
|
36
36
|
import ContextSharingServiceFactory from "./services/ContextSharingServiceFactory";
|
|
37
37
|
import CollaborativeDraftServiceFactory from "./services/collaborativeDraftServiceFactory";
|
|
@@ -407,6 +407,37 @@ thisLib.StartupMode = {
|
|
|
407
407
|
*/
|
|
408
408
|
AutoCreate: "AutoCreate"
|
|
409
409
|
};
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Possible navigation modes for a pagination.
|
|
413
|
+
* @enum {string}
|
|
414
|
+
* @readonly
|
|
415
|
+
* @public
|
|
416
|
+
* @since 1.138.0
|
|
417
|
+
*/
|
|
418
|
+
|
|
419
|
+
export enum ContextNavigationType {
|
|
420
|
+
/**
|
|
421
|
+
* Indicates that there is no navigation.
|
|
422
|
+
* @public
|
|
423
|
+
*/
|
|
424
|
+
None = "None",
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Indicates that the navigation is to a subobject page within the same application.
|
|
428
|
+
* @public
|
|
429
|
+
*/
|
|
430
|
+
Internal = "Internal",
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Indicates that the navigation is to an external application.
|
|
434
|
+
* @public
|
|
435
|
+
*/
|
|
436
|
+
External = "External"
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
thisLib.ContextNavigationType = ContextNavigationType;
|
|
440
|
+
|
|
410
441
|
// explicit type to handle backward compatibility with boolean values
|
|
411
442
|
const InitialLoadType = DataType.createType("sap.fe.core.InitialLoadMode", {
|
|
412
443
|
defaultValue: thisLib.InitialLoadMode.Auto,
|
|
@@ -444,7 +475,7 @@ ServiceFactoryRegistry.register("sap.fe.core.services.CollaborativeDraftService"
|
|
|
444
475
|
ServiceFactoryRegistry.register("sap.fe.core.services.ContextSharingService", new ContextSharingServiceFactory());
|
|
445
476
|
ServiceFactoryRegistry.register("sap.fe.core.services.InlineEditService", new InlineEditServiceFactory());
|
|
446
477
|
|
|
447
|
-
|
|
478
|
+
XMLView.registerPreprocessor("controls", xmlViewPreprocessor, "XML", false, true);
|
|
448
479
|
|
|
449
480
|
export type CoreLib = {
|
|
450
481
|
InvocationGrouping: {
|
|
@@ -329,6 +329,10 @@ C_COLLABORATIONDRAFT_DISCARD_DISCARD_WARNING=If you discard the draft, all colla
|
|
|
329
329
|
# YMSG: In the Discard/Save dialog, asks the user on what his action is.
|
|
330
330
|
C_COLLABORATIONDRAFT_DISCARD_QUESTION=What would you like to do?
|
|
331
331
|
|
|
332
|
+
# YMSG: Warning that is shown if users try to access a draft for which they aren't authorized.
|
|
333
|
+
C_COLLABORATIONDRAFT_USER_UNAUTHORIZED=You're not authorized to edit this object, so you will see it in display mode only. \n\
|
|
334
|
+
Please contact your administrator about the required authorization.
|
|
335
|
+
|
|
332
336
|
# ------------------------ ACTION CONTROLLER ------------------------
|
|
333
337
|
|
|
334
338
|
# XTIT,100
|
|
@@ -359,10 +363,10 @@ C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE_BUTTON_CREATE=Create
|
|
|
359
363
|
C_ACTION_PARTIAL_FRAGMENT_SAPFE_CONTINUE_ANYWAY=Continue Anyway
|
|
360
364
|
|
|
361
365
|
# XFLD,100: Text for Partial Processing
|
|
362
|
-
C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION=1
|
|
366
|
+
C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION={0} of {1} objects can\u2019t be processed.
|
|
363
367
|
|
|
364
368
|
# XFLD,100: Text for Partial Processing
|
|
365
|
-
C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION_PLURAL={0}
|
|
369
|
+
C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION_PLURAL={0} of {1} objects can\u2019t be processed.
|
|
366
370
|
|
|
367
371
|
# XFLD,100: Text for Partial Processing
|
|
368
372
|
C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION_SEMANTICKEY=One selected object will not be processed
|
|
@@ -658,6 +662,18 @@ T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT=Link To: {0}
|
|
|
658
662
|
# XBUT: Send Email button text
|
|
659
663
|
T_COMMON_SAPFE_SHARE_MSTEAMS=Share to Microsoft Teams
|
|
660
664
|
|
|
665
|
+
# XBUT: Print button text
|
|
666
|
+
T_SHARE_CONTROL_PRINT=Print
|
|
667
|
+
|
|
668
|
+
# XBUT: Export as Excel button text
|
|
669
|
+
T_SHARE_CONTROL_EXPORT_AS_EXCEL=Export to Spreadsheet
|
|
670
|
+
|
|
671
|
+
# XBUT: Export as PDF button text
|
|
672
|
+
T_SHARE_CONTROL_EXPORT_AS_PDF=Export to PDF
|
|
673
|
+
|
|
674
|
+
# XBUT: Export as CSV button text
|
|
675
|
+
T_SHARE_CONTROL_EXPORT_AS_CSV=Export to CSV
|
|
676
|
+
|
|
661
677
|
# ------------KPI tooltip templates-----------------------
|
|
662
678
|
|
|
663
679
|
# XMSG: Tooltip template when the KPI has an error status
|
|
@@ -113,7 +113,7 @@ ST_DRAFT_DATALOSS_SAVE_DRAFT_TOL=\u0642\u0645 \u0628\u062A\u0637\u0628\u064A\u06
|
|
|
113
113
|
|
|
114
114
|
ST_DRAFT_DATALOSS_SAVE_HIDDEN_DRAFT_TOL=\u0633\u064A\u062A\u0645 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A.
|
|
115
115
|
|
|
116
|
-
ST_DRAFT_DATALOSS_CREATE_ENTITY_TOL=\
|
|
116
|
+
ST_DRAFT_DATALOSS_CREATE_ENTITY_TOL=\u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0643\u0627\u0626\u0646.
|
|
117
117
|
|
|
118
118
|
ST_DRAFT_DATALOSS_KEEP_DRAFT_RBL=\u0627\u062D\u062A\u0641\u0627\u0638 \u0628\u0627\u0644\u0645\u0633\u0648\u062F\u0629
|
|
119
119
|
|
|
@@ -371,7 +371,6 @@ C_DRAFT_POPOVER_ADMIN_DATA_DRAFTINFO_FLAGGED_OBJECT=\u0645\u0648\u0636\u0648\u06
|
|
|
371
371
|
C_DRAFT_POPOVER_ADMIN_DATA_DRAFTINFO_POPOVER_NO_DATA_TEXT=\u0644\u0627 \u062A\u062A\u0648\u0641\u0631 \u0623\u064A\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u062A\u0641\u0635\u064A\u0644\u064A\u0629.
|
|
372
372
|
|
|
373
373
|
|
|
374
|
-
|
|
375
374
|
C_ROUTING_NAVIGATION_DISABLED_TITLE=\u0627\u0644\u062A\u0646\u0642\u0644 \u062D\u0627\u0644\u064A\u064B\u0627 \u063A\u064A\u0631 \u0645\u0645\u0643\u0646.
|
|
376
375
|
|
|
377
376
|
C_DRAFT_OBJECT_PAGE_DRAFT_UNSAVED_CHANGES=\u0642\u0627\u0645 \u0645\u0633\u062A\u062E\u062F\u0645 \u0622\u062E\u0631 \u0628\u062A\u062D\u0631\u064A\u0631 \u0647\u0630\u0627 \u0627\u0644\u0643\u0627\u0626\u0646 \u0628\u062F\u0648\u0646 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u0625\u062C\u0631\u0627\u0624\u0647\u0627\:\n{0} \n\n\u0625\u0630\u0627 \u0628\u062F\u0623\u062A \u0641\u064A \u0627\u0644\u062A\u062D\u0631\u064A\u0631\u060C \u0641\u0633\u062A\u0641\u0642\u062F \u0647\u0630\u0647 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A.
|
|
@@ -532,3 +531,5 @@ C_INLINE_EDIT_BEFORENAVIGATION_DISCARD_RBL=\u062A\u062C\u0627\u0647\u0644 \u0627
|
|
|
532
531
|
C_INLINE_EDIT_BEFORENAVIGATION_DISCARD_TOL=\u0633\u064A\u062A\u0645 \u0641\u0642\u062F\u0627\u0646 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A.
|
|
533
532
|
|
|
534
533
|
C_INLINE_EDIT_BEFORENAVIGATION_MESSAGE=\u0644\u0642\u062F \u0623\u062C\u0631\u064A\u062A \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0639\u0644\u0649 \u062D\u0642\u0644 \u0648\u0627\u062D\u062F \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644. \u0645\u0627 \u0627\u0644\u0630\u064A \u062A\u0631\u064A\u062F \u0641\u0639\u0644\u0647\u061F
|
|
534
|
+
|
|
535
|
+
C_INLINE_EDIT_DRAFT_EXISTS=\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u062A\u062D\u0631\u064A\u0631 \u0647\u0630\u0627 \u0627\u0644\u0643\u0627\u0626\u0646 \u0641\u064A \u0627\u0644\u0648\u0642\u062A \u0627\u0644\u062D\u0627\u0644\u064A.\n\u064A\u062A\u0645 \u062A\u062D\u0631\u064A\u0631\u0647 \u0628\u0627\u0644\u0641\u0639\u0644. \u0627\u0644\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627.
|