@sapui5/sap.fe.core 1.136.0 → 1.136.1
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/AppComponent.js +4 -6
- package/src/sap/fe/core/AppComponent.ts +4 -4
- package/src/sap/fe/core/CommonUtils.js +41 -14
- package/src/sap/fe/core/CommonUtils.ts +47 -16
- package/src/sap/fe/core/IRowBindingInterface.js +1 -1
- package/src/sap/fe/core/IRowBindingInterface.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +4 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +12 -4
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +10 -3
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +139 -5
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +169 -4
- package/src/sap/fe/core/controllerextensions/EditFlow.js +48 -43
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +54 -51
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +39 -5
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +38 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -13
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +10 -11
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +32 -21
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +31 -20
- package/src/sap/fe/core/controllerextensions/PageReady.js +6 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +6 -2
- package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -2
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +7 -5
- package/src/sap/fe/core/controllerextensions/Share.js +6 -6
- package/src/sap/fe/core/controllerextensions/Share.ts +3 -4
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +9 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +8 -13
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +9 -9
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +20 -10
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +31 -8
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +46 -9
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +20 -18
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +37 -23
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +4 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +6 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +6 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +11 -3
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -2
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +3 -2
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +2 -2
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +1 -1
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +3 -2
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +2 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -2
- package/src/sap/fe/core/converters/controls/Common/Action.ts +4 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js +7 -2
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -1
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +41 -58
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +43 -111
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +14 -6
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +6 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -2
- package/src/sap/fe/core/formatters/ValueFormatter.js +21 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +2 -2
- package/src/sap/fe/core/helpers/DeleteHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +2 -2
- package/src/sap/fe/core/helpers/ModelHelper.ts +1 -1
- 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/helpers/StableIdHelper.js +2 -2
- package/src/sap/fe/core/helpers/StableIdHelper.ts +4 -1
- package/src/sap/fe/core/helpers/TitleHelper.js +13 -6
- package/src/sap/fe/core/helpers/TitleHelper.ts +19 -6
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +0 -1
- package/src/sap/fe/core/rootView/Fcl.controller.js +9 -15
- package/src/sap/fe/core/rootView/Fcl.controller.ts +9 -15
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +9 -6
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -6
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +60 -48
- package/src/sap/fe/core/templating/EntitySetHelper.ts +80 -58
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -4
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +5 -5
- package/src/sap/fe/core/templating/UIFormatters.js +7 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
|
@@ -1482,29 +1482,53 @@ function getConverterContextForPath(
|
|
|
1482
1482
|
return ConverterContext?.createConverterContextForMacro(sEntitySet, oContext || oMetaModel, oDiagnostics, mergeObjects);
|
|
1483
1483
|
}
|
|
1484
1484
|
|
|
1485
|
+
async function createRootContext(
|
|
1486
|
+
programmingModel: string,
|
|
1487
|
+
view: View,
|
|
1488
|
+
appComponent: AppComponent,
|
|
1489
|
+
bindingParameters?: BaseAggregationBindingInfo["parameters"]
|
|
1490
|
+
): Promise<Context | undefined> {
|
|
1491
|
+
const result = findOrCreateRootContext(
|
|
1492
|
+
view.getBindingContext() as ODataV4Context,
|
|
1493
|
+
programmingModel,
|
|
1494
|
+
view,
|
|
1495
|
+
appComponent,
|
|
1496
|
+
bindingParameters,
|
|
1497
|
+
true
|
|
1498
|
+
);
|
|
1499
|
+
if (result.isNew && result.rootContext !== undefined) {
|
|
1500
|
+
await CommonUtils.waitForContextRequested(result.rootContext);
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
return result.rootContext;
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1485
1506
|
/**
|
|
1486
|
-
*
|
|
1487
|
-
*
|
|
1488
|
-
* Where no view is found a new created context is returned.
|
|
1489
|
-
* The new created context request the key of the entity in order to get the Etag of this entity.
|
|
1507
|
+
* Sync function to find or create a root context for a given context.
|
|
1508
|
+
* @param context
|
|
1490
1509
|
* @param programmingModel
|
|
1491
1510
|
* @param view
|
|
1492
1511
|
* @param appComponent
|
|
1493
1512
|
* @param bindingParameters
|
|
1494
|
-
* @
|
|
1513
|
+
* @param useCache
|
|
1514
|
+
* @returns The context and a boolean to specify if a new context was created
|
|
1495
1515
|
*/
|
|
1496
|
-
|
|
1516
|
+
function findOrCreateRootContext(
|
|
1517
|
+
context: ODataV4Context | undefined | null,
|
|
1497
1518
|
programmingModel: string,
|
|
1498
1519
|
view: View,
|
|
1499
1520
|
appComponent: AppComponent,
|
|
1500
|
-
bindingParameters?: BaseAggregationBindingInfo["parameters"]
|
|
1501
|
-
|
|
1502
|
-
|
|
1521
|
+
bindingParameters?: BaseAggregationBindingInfo["parameters"],
|
|
1522
|
+
useCache = false
|
|
1523
|
+
): { rootContext: ODataV4Context | undefined; isNew: boolean } {
|
|
1503
1524
|
if (context) {
|
|
1504
1525
|
const rootContextPath =
|
|
1505
1526
|
programmingModel === "Draft" ? ModelHelper.getDraftRootPath(context) : ModelHelper.getStickyRootPath(context);
|
|
1506
1527
|
let simpleRootContext: ODataV4Context;
|
|
1507
1528
|
if (rootContextPath) {
|
|
1529
|
+
if (context.getPath() === rootContextPath) {
|
|
1530
|
+
return { rootContext: context, isNew: false };
|
|
1531
|
+
}
|
|
1508
1532
|
// Check if a view matches with the draft root path, and had already loaded its context
|
|
1509
1533
|
const existingBindingContextOnPage = appComponent
|
|
1510
1534
|
.getRootViewController()
|
|
@@ -1514,23 +1538,29 @@ async function createRootContext(
|
|
|
1514
1538
|
pageView.getBindingContext()?.getPath() === rootContextPath &&
|
|
1515
1539
|
pageView.getBindingContext()?.getObject() !== undefined
|
|
1516
1540
|
)
|
|
1517
|
-
?.getBindingContext() as
|
|
1541
|
+
?.getBindingContext() as ODataV4Context;
|
|
1518
1542
|
if (existingBindingContextOnPage) {
|
|
1519
|
-
return existingBindingContextOnPage;
|
|
1543
|
+
return { rootContext: existingBindingContextOnPage, isNew: false };
|
|
1520
1544
|
}
|
|
1521
1545
|
const internalModel = view.getModel("internal") as JSONModel;
|
|
1522
1546
|
simpleRootContext = internalModel.getProperty("/simpleRootContext");
|
|
1523
|
-
if (simpleRootContext?.getPath() === rootContextPath) {
|
|
1524
|
-
return simpleRootContext;
|
|
1547
|
+
if (useCache && simpleRootContext?.getPath() === rootContextPath) {
|
|
1548
|
+
return { rootContext: simpleRootContext, isNew: false };
|
|
1525
1549
|
}
|
|
1526
1550
|
const model = context.getModel();
|
|
1527
1551
|
simpleRootContext = model.bindContext(rootContextPath, undefined, bindingParameters).getBoundContext();
|
|
1528
|
-
await CommonUtils.waitForContextRequested(simpleRootContext);
|
|
1529
1552
|
// Store this new created context to use it on the next iterations
|
|
1530
|
-
|
|
1531
|
-
|
|
1553
|
+
if (useCache) {
|
|
1554
|
+
internalModel.setProperty("/simpleRootContext", simpleRootContext);
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
return { rootContext: simpleRootContext, isNew: true };
|
|
1532
1558
|
}
|
|
1533
1559
|
}
|
|
1560
|
+
return {
|
|
1561
|
+
rootContext: undefined,
|
|
1562
|
+
isNew: false
|
|
1563
|
+
};
|
|
1534
1564
|
}
|
|
1535
1565
|
|
|
1536
1566
|
/**
|
|
@@ -1590,6 +1620,7 @@ const CommonUtils = {
|
|
|
1590
1620
|
getSemanticObjectAnnotations: _getSemanticObjectAnnotations,
|
|
1591
1621
|
getFiltersFromAnnotation: getFiltersFromAnnotation,
|
|
1592
1622
|
createRootContext: createRootContext,
|
|
1623
|
+
findOrCreateRootContext,
|
|
1593
1624
|
updateMenuButtonVisiblity: updateMenuButtonVisiblity,
|
|
1594
1625
|
isSmallDevice,
|
|
1595
1626
|
getConverterContextForPath,
|
|
@@ -14,4 +14,4 @@ sap.ui.define(["sap/fe/base/ClassSupport"], function (ClassSupport) {
|
|
|
14
14
|
_exports = IRowBindingInterface;
|
|
15
15
|
return _exports;
|
|
16
16
|
}, false);
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJUm93QmluZGluZ0ludGVyZmFjZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfSVJvd0JpbmRpbmdJbnRlcmZhY2UiLCJfZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSVJvd0JpbmRpbmdJbnRlcmZhY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5JUm93QmluZGluZ0ludGVyZmFjZVwiKVxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgSVJvd0JpbmRpbmdJbnRlcmZhY2Uge1xuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9jb3JlX0lSb3dCaW5kaW5nSW50ZXJmYWNlID0gdHJ1ZTtcblxuXHRhYnN0cmFjdCBnZXRSb3dCaW5kaW5nKHBhcmFtZXRlcnM/OiBvYmplY3QpOiBPRGF0YUxpc3RCaW5kaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O01BSThCQSxvQkFBb0IsSUFBQUMsSUFBQSxHQURqREMsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSxZQUFBSCxxQkFBQTtJQUFBLEtBRWxESSw4Q0FBOEMsR0FBRyxJQUFJO0VBQUEsTUFBQUQsTUFBQTtFQUFBRSxRQUFBLEdBQUFMLG9CQUFBO0VBQUEsT0FBQUssUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -5,5 +5,5 @@ import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
|
5
5
|
export default abstract class IRowBindingInterface {
|
|
6
6
|
__implements__sap_fe_core_IRowBindingInterface = true;
|
|
7
7
|
|
|
8
|
-
abstract getRowBinding(): ODataListBinding;
|
|
8
|
+
abstract getRowBinding(parameters?: object): ODataListBinding;
|
|
9
9
|
}
|
|
@@ -250,6 +250,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
250
250
|
try {
|
|
251
251
|
return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse);
|
|
252
252
|
} catch (e) {
|
|
253
|
+
if (!contextPathToUse.endsWith("/")) {
|
|
254
|
+
return this.getMetaPathObject(metaPath, contextPathToUse + "/");
|
|
255
|
+
}
|
|
253
256
|
Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
|
|
254
257
|
return null;
|
|
255
258
|
}
|
|
@@ -282,4 +285,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
282
285
|
}), _class2)) || _class);
|
|
283
286
|
return BuildingBlock;
|
|
284
287
|
}, false);
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNB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
|
|
288
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0aWYgKCFjb250ZXh0UGF0aFRvVXNlLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlICsgXCIvXCIpO1xuXHRcdFx0fVxuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FE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
|
|
@@ -282,6 +282,9 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
|
|
|
282
282
|
try {
|
|
283
283
|
return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse);
|
|
284
284
|
} catch (e) {
|
|
285
|
+
if (!contextPathToUse.endsWith("/")) {
|
|
286
|
+
return this.getMetaPathObject<ExpectedDataModelType>(metaPath, contextPathToUse + "/");
|
|
287
|
+
}
|
|
285
288
|
Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
|
|
286
289
|
return null;
|
|
287
290
|
}
|