@sapui5/sap.fe.macros 1.142.0 → 1.142.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Field.js +5 -5
- package/src/sap/fe/macros/Field.ts +5 -3
- package/src/sap/fe/macros/FooterContent.js +3 -2
- package/src/sap/fe/macros/FooterContent.tsx +2 -10
- package/src/sap/fe/macros/MessageButton.js +3 -3
- package/src/sap/fe/macros/MessageButton.tsx +3 -2
- package/src/sap/fe/macros/Page.js +8 -4
- package/src/sap/fe/macros/Page.tsx +13 -4
- package/src/sap/fe/macros/RichTextEditor.js +12 -14
- package/src/sap/fe/macros/RichTextEditor.tsx +10 -13
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +19 -7
- package/src/sap/fe/macros/chart/Action.ts +8 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +13 -2
- package/src/sap/fe/macros/chart/ChartDelegate.ts +20 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +8 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +13 -22
- package/src/sap/fe/macros/controls/FileWrapper.js +4 -3
- package/src/sap/fe/macros/controls/FileWrapper.ts +3 -2
- package/src/sap/fe/macros/controls/FilterBar.js +1 -1
- package/src/sap/fe/macros/controls/FilterBar.ts +8 -1
- package/src/sap/fe/macros/controls/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +1 -1
- package/src/sap/fe/macros/controls/TextLink.js +15 -1
- package/src/sap/fe/macros/controls/TextLink.tsx +19 -0
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +23 -18
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +27 -25
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +4 -2
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +7 -7
- package/src/sap/fe/macros/field/FieldTemplating.js +8 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +8 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +10 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +10 -0
- package/src/sap/fe/macros/form/FormContainer.block.js +9 -8
- package/src/sap/fe/macros/form/FormContainer.block.ts +10 -7
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +3 -2
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +1 -0
- package/src/sap/fe/macros/internal/field/EditStyle.js +11 -6
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +7 -3
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +36 -7
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +35 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +54 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +59 -0
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +23 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +24 -2
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +1 -1
- package/src/sap/fe/macros/messagebundle.properties +6 -0
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +8 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +9 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/table/ActionsTemplating.js +6 -5
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +4 -4
- package/src/sap/fe/macros/table/MdcTableTemplate.js +31 -13
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +35 -7
- package/src/sap/fe/macros/table/Table.block.js +3 -1
- package/src/sap/fe/macros/table/Table.block.tsx +7 -4
- package/src/sap/fe/macros/table/TableAPI.js +62 -28
- package/src/sap/fe/macros/table/TableAPI.ts +73 -32
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +15 -4
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +16 -3
- package/src/sap/fe/macros/table/TableRuntime.js +6 -4
- package/src/sap/fe/macros/table/TableRuntime.ts +16 -3
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +3 -3
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +3 -4
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +10 -4
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +9 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +6 -6
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +5 -5
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +28 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +33 -14
|
@@ -327,8 +327,6 @@ sap.ui.define(["sap/fe/core/ActionRuntime", "sap/fe/core/CommonUtils", "sap/fe/c
|
|
|
327
327
|
internalModelContext?.setProperty("contextmenu/selectedContextsIncludingInactive", contextMenuSelection);
|
|
328
328
|
internalModelContext?.setProperty("contextmenu/selectedContexts", activeSelectedContexts);
|
|
329
329
|
internalModelContext?.setProperty("contextmenu/navigableContexts", navigableContexts);
|
|
330
|
-
//reset number of selected contexts to ensure callback for custom enable handler
|
|
331
|
-
internalModelContext?.setProperty("contextmenu/numberOfSelectedContexts", -1);
|
|
332
330
|
internalModelContext?.setProperty("contextmenu/numberOfNavigableContexts", navigableContexts.length);
|
|
333
331
|
internalModelContext?.setProperty("contextmenu/numberOfSelectedContexts", activeSelectedContexts.length);
|
|
334
332
|
internalModelContext?.setProperty("contextmenu/numberOfSelectedContextsForDelete", contextMenuSelection.length);
|
|
@@ -386,7 +384,7 @@ sap.ui.define(["sap/fe/core/ActionRuntime", "sap/fe/core/CommonUtils", "sap/fe/c
|
|
|
386
384
|
TableRuntime.updateMoveUpDownEnablement(internalModelContext.getObject(), table, true);
|
|
387
385
|
|
|
388
386
|
// Other action enablement
|
|
389
|
-
ActionRuntime.setActionEnablement(internalModelContext, JSON.parse(tableDefinition.operationAvailableMap), activeSelectedContexts, "table", true);
|
|
387
|
+
ActionRuntime.setActionEnablement(internalModelContext, JSON.parse(tableDefinition.operationAvailableMap), activeSelectedContexts, "table", true, true);
|
|
390
388
|
};
|
|
391
389
|
_proto.getRelevantSelection = function getRelevantSelection(tableContexts, contextMenuContext) {
|
|
392
390
|
let contextMenuSelection;
|
|
@@ -402,4 +400,4 @@ sap.ui.define(["sap/fe/core/ActionRuntime", "sap/fe/core/CommonUtils", "sap/fe/c
|
|
|
402
400
|
_exports = ContextMenuHandler;
|
|
403
401
|
return _exports;
|
|
404
402
|
}, false);
|
|
405
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudUhhbmRsZXIiLCJjb250ZXh0TWVudUFjdGl2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXMiLCJ0YWJsZSIsImNvbnRleHRNZW51IiwiZ2V0Q29udGV4dE1lbnUiLCJzb3J0SGVscGVyRm9yTWVudUl0ZW1zIiwidGFibGVBY3Rpb25zIiwiZ2V0QWN0aW9ucyIsImZvckVhY2giLCJ0YWJsZUFjdGlvbiIsInRhYmxlQWN0aW9uSXRlbSIsImdldEFnZ3JlZ2F0aW9uIiwiX2lzQWN0aW9uU3BsaXQiLCJfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSIsIl9pc0FjdGlvbkNvbWJpbmVkIiwiX2NvbWJpbmVBY3Rpb25JbkNvbnRleHRNZW51IiwiY29udGV4dE1lbnVJdGVtIiwiX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbiIsIl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51IiwicHVzaCIsImxlbmd0aCIsIm1lbnVJdGVtIiwic29ydEluZGV4IiwiaW5kZXhPZkNvbnRleHRNZW51IiwiaW5kZXhPZkl0ZW0iLCJyZW1vdmVJdGVtIiwiaW5zZXJ0SXRlbSIsImhpZGVBbGxDb250ZXh0TWVudUFjdGlvbnNFeGNlcHREZWxldGUiLCJtZW51SXRlbXMiLCJnZXRJdGVtcyIsImRlbGV0ZUFjdGlvbiIsImZpbmQiLCJhY3Rpb24iLCJnZXRJZCIsImVuZHNXaXRoIiwiZGVsZXRlVmlzaWJsZSIsImdldEFjdGlvbiIsImdldFZpc2libGUiLCJpbmNsdWRlcyIsInNldFZpc2libGUiLCJhY3Rpb25JdGVtIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJmbGV4TWFuYWdlZE9iamVjdE1vZGVscyIsImZpbHRlciIsImRlcGVuZGVudCIsIk1hbmFnZWRPYmplY3RNb2RlbCIsInNvbWUiLCJtb2RlbCIsImNvbnRleHRNZW51SXRlbXMiLCJtZW51QnV0dG9uIiwiX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51IiwiYWN0aW9uSXRlbXMiLCJnZXRNZW51IiwidG9vbEJhckFjdGlvbiIsImFjdGlvbklkSW5Db250ZXh0TWVudSIsImRhdGEiLCJhY3Rpb25JZEluVG9vbGJhciIsInJlcGxhY2UiLCJzZXRUZXh0IiwiZ2V0VGV4dCIsImFkZEl0ZW0iLCJhY3Rpb25JblN1Yk1lbnUiLCJfZmluZEFjdGlvbkluU3ViTWVudSIsImRlc3Ryb3kiLCJzdWJNZW51Iiwic3BsaWNlIiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsIm5ld01lbnVCdXR0b24iLCJNZW51SXRlbSIsImlkIiwiZ2VuZXJhdGUiLCJ0ZXh0IiwiaSIsIml0ZW0iLCJzdWJJdGVtcyIsInN1Ykl0ZW0iLCJpbmRleCIsInRhYmxlQWN0aW9uVmlzaWJpbGl0eSIsInNldENvbnRleHRNZW51QWN0aXZlIiwiYWN0aXZlIiwiaXNDb250ZXh0TWVudUFjdGl2ZSIsInNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5IiwiY29udGV4dHMiLCJjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtIiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImNvbGxhYm9yYXRpb25PcHRpb24iLCJjb2xsYWJvcmF0aW9uU2VydmljZSIsImNtSGVscGVyU2VydmljZSIsImdldE9wdGlvbnMiLCJ0YWJsZURlZmluaXRpb24iLCJnZXRQYXJlbnQiLCJnZXRUYWJsZURlZmluaXRpb24iLCJuYXZpZ2F0aW9uVHlwZSIsImFubm90YXRpb24iLCJyb3ciLCJuYXZpZ2F0aW9uSW5mbyIsInR5cGUiLCJ2aWV3IiwiZ2V0VGFyZ2V0VmlldyIsImNvbGxhYm9yYXRpdmVEcmFmdCIsImdldENvbnRyb2xsZXIiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImlzRHJhZnQiLCJNb2RlbEhlbHBlciIsImlzRHJhZnRTdXBwb3J0ZWQiLCJnZXRQYXRoIiwidmlzaWJsZSIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJGRVNSSGVscGVyIiwic2V0U2VtYW50aWNTdGVwbmFtZSIsIl9vbkNvbnRleHRNZW51UHJlc3MiLCJvRXZlbnQiLCJnZXRTb3VyY2UiLCJ0YWJsZUNvbnRleHRzIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImNvbnRleHRNZW51Q29udGV4dCIsImdldFBhcmFtZXRlciIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjb250ZXh0TWVudVNlbGVjdGlvbiIsImdldFJlbGV2YW50U2VsZWN0aW9uIiwib25lQ29udGV4dElzQWN0aXZlIiwiaXNJbmFjdGl2ZSIsInNldFByb3BlcnR5IiwiYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyIsIm9Db250ZXh0Iiwib25seUluQWN0aXZlQ29udGV4dHNTZWxlY3RlZCIsImlzSW5saW5lQ3JlYXRpb25Nb2RlIiwiZ2V0Q3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwibmF2aWdhYmxlQ29udGV4dHMiLCJnZXRMb2NhbEFubm90YXRpb25Nb2RlbCIsImdldFByb3BlcnR5Iiwicm91dGVQYXRoIiwidmlzaWJsZU1lbnVJdGVtcyIsInByZXZlbnREZWZhdWx0IiwiaXNFeHBhbmRhYmxlIiwic2luZ2xlQ29udGV4dCIsImlzRXhwYW5kZWQiLCJpc0NvbGxhcHNhYmxlIiwiZGVsZXRlSGVscGVyIiwidXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMiLCJuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwIiwiVGFibGVSdW50aW1lIiwic2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uRW5hYmxlbWVudCIsInVwZGF0YWJsZVByb3BlcnR5UGF0aCIsImRyYWZ0IiwicmVhZE9ubHlEcmFmdEVuYWJsZWQiLCJ1cGRhdGFibGVDb250ZXh0cyIsInNlbGVjdGVkQ29udGV4dCIsImlzVXBkYXRhYmxlQ29udGV4dCIsImNvbnRyb2wiLCJjcmVhdGVFbmFibGVtZW50IiwiX3VwZGF0ZUNyZWF0ZUVuYWJsZW1lbnQiLCJub2RlVHlwZSIsInVwZGF0ZUN1dENvcHlQYXN0ZUVuYWJsZW1lbnQiLCJ1cGRhdGVNb3ZlVXBEb3duRW5hYmxlbWVudCIsIkFjdGlvblJ1bnRpbWUiLCJzZXRBY3Rpb25FbmFibGVtZW50IiwiSlNPTiIsInBhcnNlIiwib3BlcmF0aW9uQXZhaWxhYmxlTWFwIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb250ZXh0TWVudUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBJSW50ZXJmYWNlV2l0aE1peGluIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEFjdGlvblJ1bnRpbWUgZnJvbSBcInNhcC9mZS9jb3JlL0FjdGlvblJ1bnRpbWVcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBkZWxldGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRGVsZXRlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBNZW51IGZyb20gXCJzYXAvbS9NZW51XCI7XG5pbXBvcnQgdHlwZSBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1vZGVsIGZyb20gXCJzYXAvdWkvZmwvdXRpbC9NYW5hZ2VkT2JqZWN0TW9kZWxcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvblRvb2xiYXJBY3Rpb24gZnJvbSBcInNhcC91aS9tZGMvYWN0aW9udG9vbGJhci9BY3Rpb25Ub29sYmFyQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEZFU1JIZWxwZXIgZnJvbSBcInNhcC91aS9wZXJmb3JtYW5jZS90cmFjZS9GRVNSSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5pbXBvcnQgVGFibGVSdW50aW1lIGZyb20gXCIuLi9UYWJsZVJ1bnRpbWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dE1lbnVIYW5kbGVyIGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdHByb3RlY3RlZCBjb250ZXh0TWVudUFjdGl2ZSA9IGZhbHNlO1xuXG5cdHNldHVwTWl4aW4oX2Jhc2VDbGFzczogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHQvLyBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IGludGVyZmFjZSBJSW50ZXJmYWNlV2l0aE1peGluXG5cdH1cblxuXHQvKipcblx0ICogQWxpZ24gY29udGV4dCBtZW51IHdpdGggdGhlIHRhYmxlIGFjdGlvbnMgYnkgUlRBIGNoYW5nZXMgaW4gdGFibGUgdG9vbGJhci5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB3aXRoIGJvdW5kIHRhYmxlIGFjdGlvbnNcblx0ICovXG5cdGFsaWduQ29udGV4dE1lbnVXaXRoVGFibGVUb29sYmFyQ2hhbmdlcyh0YWJsZTogTURDVGFibGUpOiB2b2lkIHtcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBzb3J0SGVscGVyRm9yTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG5cdFx0Y29uc3QgdGFibGVBY3Rpb25zID0gdGFibGUuZ2V0QWN0aW9ucygpO1xuXHRcdHRhYmxlQWN0aW9ucz8uZm9yRWFjaCgodGFibGVBY3Rpb24pID0+IHtcblx0XHRcdGNvbnN0IHRhYmxlQWN0aW9uSXRlbSA9IHRhYmxlQWN0aW9uLmdldEFnZ3JlZ2F0aW9uKFwiYWN0aW9uXCIpIGFzIEJ1dHRvbjtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBzcGxpdCBieSBSVEFcblx0XHRcdGlmICh0aGlzLl9pc0FjdGlvblNwbGl0KHRhYmxlQWN0aW9uSXRlbSkpIHtcblx0XHRcdFx0Ly8gUmVtb3ZlIG9yaWdpbmFsIG1lbnUgaXRlbSBhbmQgYWRkIHN1YiBpdGVtcyBhcyBuZXcgbWVudSBpdGVtc1xuXHRcdFx0XHR0aGlzLl9zcGxpdEFjdGlvbnNJbkNvbnRleHRNZW51KHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnUpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIGFjdGlvbiBpdGVtIGhhcyBiZWVuIGNyZWF0ZWQgYnkgY29tYmluaW5nIHRoZSB0d28gYWN0aW9uc1xuXHRcdFx0aWYgKHRoaXMuX2lzQWN0aW9uQ29tYmluZWQodGFibGVBY3Rpb25JdGVtKSkge1xuXHRcdFx0XHR0aGlzLl9jb21iaW5lQWN0aW9uSW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0gYXMgdW5rbm93biBhcyBNZW51QnV0dG9uLCBjb250ZXh0TWVudSwgdGFibGUpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtID0gdGhpcy5fZ2V0Q29ycmVzcG9uZGluZ0NvbnRleHRNZW51QWN0aW9uKHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnUpO1xuXHRcdFx0aWYgKGNvbnRleHRNZW51SXRlbSkge1xuXHRcdFx0XHR0aGlzLl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51KHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnVJdGVtLCB0YWJsZUFjdGlvbiBhcyBBY3Rpb25Ub29sYmFyQWN0aW9uKTtcblx0XHRcdFx0c29ydEhlbHBlckZvck1lbnVJdGVtcy5wdXNoKGNvbnRleHRNZW51SXRlbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Ly8gQWxpZ24gdGhlIG9yZGVyIG9mIGNvbnRleHQtbWVudUl0ZW1zIHdpdGggYm91bmQgdGFibGUgYWN0aW9uc1xuXHRcdGlmIChzb3J0SGVscGVyRm9yTWVudUl0ZW1zLmxlbmd0aCkge1xuXHRcdFx0c29ydEhlbHBlckZvck1lbnVJdGVtcy5mb3JFYWNoKChtZW51SXRlbSwgc29ydEluZGV4KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGluZGV4T2ZDb250ZXh0TWVudSA9IGNvbnRleHRNZW51LmluZGV4T2ZJdGVtKG1lbnVJdGVtKTtcblx0XHRcdFx0aWYgKGluZGV4T2ZDb250ZXh0TWVudSAhPT0gc29ydEluZGV4KSB7XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUuaW5zZXJ0SXRlbShtZW51SXRlbSwgc29ydEluZGV4KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhpZGUgYWxsIGNvbnRleHQgbWVudSBhY3Rpb25zIGV4Y2VwdCBkZWxldGUuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICovXG5cdGhpZGVBbGxDb250ZXh0TWVudUFjdGlvbnNFeGNlcHREZWxldGUodGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHRjb25zdCBkZWxldGVBY3Rpb24gPSB0YWJsZS5nZXRBY3Rpb25zKCkuZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uZ2V0SWQoKS5lbmRzV2l0aChcIlN0YW5kYXJkQWN0aW9uOjpEZWxldGU6OkFjdGlvblRvb2xiYXJBY3Rpb25cIikpO1xuXHRcdGNvbnN0IGRlbGV0ZVZpc2libGUgPSAoZGVsZXRlQWN0aW9uIGFzIEFjdGlvblRvb2xiYXJBY3Rpb24pPy5nZXRBY3Rpb24oKS5nZXRWaXNpYmxlKCkgPz8gdHJ1ZTtcblx0XHRtZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW0pID0+IHtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBtZW51IGl0ZW0gaXMgdGhlIGRlbGV0ZSBhY3Rpb25cblx0XHRcdGlmIChtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKFwiU3RhbmRhcmRBY3Rpb246OkRlbGV0ZTo6Q29udGV4dE1lbnVcIikpIHtcblx0XHRcdFx0bWVudUl0ZW0uc2V0VmlzaWJsZShkZWxldGVWaXNpYmxlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1lbnVJdGVtLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGEgQ29tYmluZSBSVEEgY2hhbmdlcyBpbiB0aGUgdGFibGUgdG9vbGJhci5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiB0byBjaGVja1xuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGEgQ29tYmluZSBSVEEgY2hhbmdlcyBpbiB0aGUgdGFibGUgdG9vbGJhclxuXHQgKi9cblx0X2lzQWN0aW9uQ29tYmluZWQoYWN0aW9uSXRlbTogQnV0dG9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKGFjdGlvbkl0ZW0uZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLm0uTWVudUJ1dHRvblwiKSB7XG5cdFx0XHQvLyBXZSBkb24ndCBoYXZlIGN1c3RvbSBkYXRhIGF0dHJpYnV0ZSBvbiB0aGUgTWVudUJ1dHRvbiBjcmVhdGVkIGJ5IFJUQSBjb21iaW5lIGNoYW5nZVxuXHRcdFx0Y29uc3QgZGVwZW5kZW50cyA9IGFjdGlvbkl0ZW0uZ2V0RGVwZW5kZW50cygpO1xuXHRcdFx0Ly8gZmluZCBhbGwgdGhlIGRlcGVuZGVudHMgd2hpY2ggYXJlIGEgRmxleCBNYW5hZ2VkT2JqZWN0TW9kZWxcblx0XHRcdGNvbnN0IGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzID0gZGVwZW5kZW50cy5maWx0ZXIoKGRlcGVuZGVudCkgPT4gZGVwZW5kZW50IGluc3RhbmNlb2YgTWFuYWdlZE9iamVjdE1vZGVsKTtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBuYW1lIG9mIG9uZSBvZiB0aGVtIGluY2x1ZGVzIFwiJHNhcC5tLmZsZXhpYmlsaXR5Lk1lbnVCdXR0b25Nb2RlbFwiXG5cdFx0XHRyZXR1cm4gZmxleE1hbmFnZWRPYmplY3RNb2RlbHMuc29tZSgobW9kZWwpID0+XG5cdFx0XHRcdChtb2RlbCBhcyB1bmtub3duIGFzIE1hbmFnZWRPYmplY3RNb2RlbCkuZ2V0TmFtZSgpLmluY2x1ZGVzKFwiJHNhcC5tLmZsZXhpYmlsaXR5Lk1lbnVCdXR0b25Nb2RlbFwiKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbWJpbmUgdGhlIGFjdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVudSB0byBhbGlnbiB3aXRoIHRoZSB0YWJsZSBhY3Rpb24gdG9vbGJhci5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICovXG5cdF9jb21iaW5lQWN0aW9uSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBNZW51QnV0dG9uLCBjb250ZXh0TWVudTogTWVudSwgdGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Ly8gQ3JlYXRlIGEgbmV3IG1lbnUgYnV0dG9uIGluIHRoZSBjb250ZXh0IG1lbnUgaWYgaXQgZG9lcyBub3QgZXhpc3Rcblx0XHRjb25zdCBtZW51QnV0dG9uID0gdGhpcy5fZmluZE9yQ3JlYXRlTWVudUJ1dHRvbkluQ29udGV4dE1lbnUoYWN0aW9uSXRlbSwgdGFibGUpO1xuXHRcdGNvbnN0IGFjdGlvbkl0ZW1zID0gYWN0aW9uSXRlbS5nZXRNZW51KCkuZ2V0SXRlbXMoKTtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25JdGVtcykge1xuXHRcdFx0Y29uc3QgdG9vbEJhckFjdGlvbiA9IGFjdGlvbjtcblx0XHRcdC8vIG5vdyBmaW5kIHRoZSBhY3Rpb24gaW4gdGhlIGNvbnRleHQgbWVudSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGNvbnRleHQgbWVudVxuXHRcdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBjb250ZXh0TWVudUl0ZW1zKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbklkSW5Db250ZXh0TWVudSA9IG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKTtcblx0XHRcdFx0Y29uc3QgYWN0aW9uSWRJblRvb2xiYXIgPSB0b29sQmFyQWN0aW9uLmRhdGEoXCJhY3Rpb25JZFwiKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFjdGlvbklkSW5Db250ZXh0TWVudSA9PT0gYWN0aW9uSWRJblRvb2xiYXIgKyBcIjo6Q29udGV4dE1lbnVcIiB8fFxuXHRcdFx0XHRcdGFjdGlvbklkSW5Db250ZXh0TWVudSA9PT0gYWN0aW9uSWRJblRvb2xiYXIucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0bWVudUl0ZW0uc2V0VGV4dCh0b29sQmFyQWN0aW9uLmdldFRleHQoKSk7XG5cdFx0XHRcdFx0Ly8gQWRkIHRoZSBhY3Rpb24gdG8gdGhlIG1lbnUgYnV0dG9uXG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0bWVudUJ1dHRvbi5hZGRJdGVtKG1lbnVJdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJZiB3ZSBmaW5kIGFub3RoZXIgbWVudSBpbiB0aGUgY29udGV4dCBtZW51IHdlIGNoZWNrIGlmIHRoZSBhY3Rpb24gaXMgaW4gdGhlIHN1YiBtZW51XG5cdFx0XHRcdGlmIChtZW51SXRlbS5nZXRJdGVtcygpLmxlbmd0aCA+IDAgJiYgIW1lbnVJdGVtLmdldElkKCkuaW5jbHVkZXMoYWN0aW9uSXRlbS5nZXRJZCgpKSkge1xuXHRcdFx0XHRcdGNvbnN0IGFjdGlvbkluU3ViTWVudSA9IHRoaXMuX2ZpbmRBY3Rpb25JblN1Yk1lbnUobWVudUl0ZW0uZ2V0SXRlbXMoKSwgdG9vbEJhckFjdGlvbik7XG5cdFx0XHRcdFx0aWYgKGFjdGlvbkluU3ViTWVudSkge1xuXHRcdFx0XHRcdFx0YWN0aW9uSW5TdWJNZW51LnNldFRleHQodG9vbEJhckFjdGlvbi5nZXRUZXh0KCkpO1xuXHRcdFx0XHRcdFx0bWVudUJ1dHRvbi5hZGRJdGVtKGFjdGlvbkluU3ViTWVudSk7XG5cdFx0XHRcdFx0XHRpZiAobWVudUl0ZW0uZ2V0SXRlbXMoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uZGVzdHJveSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyB0aGUgYWN0aW9uIGluIGFuIGFjdGlvbiBtZW51IGluIHRoZSBjb250ZXh0IG1lbnUsIGl0IHJldHVybiB0aGUgYWN0aW9uIGlmIGZvdW5kIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIG1lbnUuXG5cdCAqIEBwYXJhbSBzdWJNZW51IFRoZSBhcnJheSBvZiBhY3Rpb25zIGluIHRoZSBtZW51XG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gd2UgYXJlIHNlYXJjaGluZyBmb3Jcblx0ICogQHJldHVybnMgVGhlIGFjdGlvbiBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuXHQgKi9cblx0X2ZpbmRBY3Rpb25JblN1Yk1lbnUoc3ViTWVudTogTWVudUl0ZW1bXSwgYWN0aW9uSXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSB8IHVuZGVmaW5lZCB7XG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBzdWJNZW51KSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIikgfHxcblx0XHRcdFx0bWVudUl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSBhY3Rpb25JdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSArIFwiOjpDb250ZXh0TWVudVwiXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uID0gbWVudUl0ZW07XG5cdFx0XHRcdHN1Yk1lbnUuc3BsaWNlKHN1Yk1lbnUuaW5kZXhPZihtZW51SXRlbSksIDEpO1xuXHRcdFx0XHRyZXR1cm4gYWN0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrJ3MgaWYgYSBwYXJ0aWN1bGFyIG1lbnUgYnV0dG9uIGV4aXN0cyBpbiB0aGUgY29udGV4dCBtZW51LCBpZiBub3QgY3JlYXRlcyBhIG5ldyBtZW51IGJ1dHRvbiBhbmQgYWRkcyBpdCB0byB0aGUgY29udGV4dCBtZW51LlxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgbWVudSBidXR0b24gdG8gZmluZCBvciBjcmVhdGVcblx0ICogQHBhcmFtIHRhYmxlIFRoZSBNRENUYWJsZVxuXHQgKiBAcmV0dXJucyBUaGUgTWVudUl0ZW0gaWYgZm91bmQsIG90aGVyd2lzZSBhIG5ldyBNZW51SXRlbVxuXHQgKi9cblx0X2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IE1lbnVCdXR0b24sIHRhYmxlOiBNRENUYWJsZSk6IE1lbnVJdGVtIHtcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBjb250ZXh0TWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHQvL2xvb3Agb3ZlciBjb250ZXh0TWVudUl0ZW1zIGFuZCBjaGVjayBpZiB0aGUgcmVxdWlyZWQgbWVudSBidXR0b24gYWxyZWFkeSBleGlzdHNcblx0XHRmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIGNvbnRleHRNZW51SXRlbXMpIHtcblx0XHRcdGlmIChtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKGFjdGlvbkl0ZW0uZ2V0SWQoKSkpIHtcblx0XHRcdFx0cmV0dXJuIG1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpZiB0aGUgcmVxdWlyZWQgbWVudSBidXR0b24gZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBtZW51IGJ1dHRvbiBhbmQgYWRkIGl0IHRvIHRoZSBjb250ZXh0TWVudVxuXHRcdGNvbnN0IG5ld01lbnVCdXR0b24gPSBuZXcgTWVudUl0ZW0oe1xuXHRcdFx0aWQ6IGdlbmVyYXRlKFt0YWJsZS5nZXRJZCgpLCBhY3Rpb25JdGVtLmdldElkKCksIFwiOjpDb250ZXh0TWVudVwiXSksXG5cdFx0XHR0ZXh0OiBhY3Rpb25JdGVtLmdldFRleHQoKVxuXHRcdH0pO1xuXHRcdGNvbnRleHRNZW51LmFkZEl0ZW0obmV3TWVudUJ1dHRvbik7XG5cdFx0cmV0dXJuIG5ld01lbnVCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogU3BsaXQgdGhlIGFjdGlvbiBpdGVtcyBpbiB0aGUgY29udGV4dCBtZW51LlxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgYWN0aW9uIGl0ZW0gdG8gc3BsaXRcblx0ICogQHBhcmFtIGNvbnRleHRNZW51IFRoZSBjb250ZXh0IG1lbnVcblx0ICovXG5cdF9zcGxpdEFjdGlvbnNJbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IEJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUpOiB2b2lkIHtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvL2NoZWNrIGlmIHRoZSBtZW51IGl0ZW0gaXMgYSBNZW51XG5cdFx0XHRpZiAobWVudUl0ZW1zW2ldLmdldEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWVudUl0ZW1zW2ldXG5cdFx0XHRcdFx0XHQuZ2V0SXRlbXMoKVxuXHRcdFx0XHRcdFx0LnNvbWUoKGl0ZW0pID0+IGl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSBhY3Rpb25JdGVtLmRhdGEoXCJhY3Rpb25JZFwiKS5yZXBsYWNlKFwiOjpBY3Rpb25NZW51XCIsIFwiOjpDb250ZXh0TWVudVwiKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XG5cdFx0XHRcdFx0Y29uc3Qgc3ViSXRlbXMgPSBtZW51SXRlbS5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgbWVudUl0ZW0gZnJvbSB0aGUgY29udGV4dCBtZW51XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRoZXNlIHN1Yi1pdGVtcyBpbnRvIHRoZSBjb250ZXh0TWVudSBzdGFydGluZyBmcm9tIHRoZSBvcmlnaW5hbCBpbmRleFxuXHRcdFx0XHRcdHN1Ykl0ZW1zLmZvckVhY2goKHN1Ykl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRjb250ZXh0TWVudS5pbnNlcnRJdGVtKHN1Ykl0ZW0sIGkgKyBpbmRleCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29ycmVzcG9uZGluZyBjb250ZXh0IG1lbnUgYWN0aW9uIGZvciB0aGUgdGFibGUgYWN0aW9uLlxuXHQgKiBAcGFyYW0gdGFibGVBY3Rpb24gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqIEByZXR1cm5zICBNZW51SXRlbXxudWxsIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQgbWVudSBhY3Rpb24gb3IgbnVsbCBpZiBub3QgZm91bmRcblx0ICovXG5cdF9nZXRDb3JyZXNwb25kaW5nQ29udGV4dE1lbnVBY3Rpb24odGFibGVBY3Rpb246IEJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUpOiBNZW51SXRlbSB8IG51bGwge1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIG1lbnVJdGVtcykge1xuXHRcdFx0Ly8gdGhlIGNvcnJlc3BvbmRpbmcgY29udGV4dCBtZW51IGFjdGlvbiBpcyBlaXRoZXIgYW4gaXRlbSB3aXRoIGFuIGFkZGl0aW9uYWwgXCI6OkNvbnRleHRNZW51XCIgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBpZFxuXHRcdFx0Ly8gb3IgaXQgaXMgYSBzcGxpdHRlZCBtZW51IGl0ZW0gd2hlcmUgdGhlIFwiOjpDb250ZXh0TWVudVwiIHBhcnQgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgaWRcblx0XHRcdGlmIChcblx0XHRcdFx0dGFibGVBY3Rpb24uZ2V0SWQoKSArIFwiOjpDb250ZXh0TWVudVwiID09PSBpdGVtLmdldElkKCkgfHxcblx0XHRcdFx0aXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgPT09IHRhYmxlQWN0aW9uLmRhdGEoXCJhY3Rpb25JZFwiKT8ucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIilcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHRcdC8vIGZvciBjb21iaW5lZCBhY3Rpb25zLCB0aGUgY29udGV4dCBtZW51IGFjdGlvbiBpcyB0aGUgb25lIHdpdGggdGhlIHNhbWUgdGV4dFxuXHRcdFx0aWYgKGl0ZW0uZ2V0SWQoKS5pbmNsdWRlcyh0YWJsZUFjdGlvbi5nZXRJZCgpKSkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQWRqdXN0IHRoZSB0ZXh0IGFuZCB2aXNpYmlsaXR5IG9mIHRoZSBhY3Rpb24gaXRlbXMgaW4gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudUl0ZW0gVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcGFyYW0gdGFibGVBY3Rpb24gVGhlIGFycmF5IG9mIHRhYmxlIGFjdGlvbnNcblx0ICovXG5cdF9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IEJ1dHRvbiwgY29udGV4dE1lbnVJdGVtOiBNZW51SXRlbSwgdGFibGVBY3Rpb246IEFjdGlvblRvb2xiYXJBY3Rpb24pOiB2b2lkIHtcblx0XHQvLyBjaGFuZ2UgdGhlIHRleHQgb2YgdGhlIG1lbnUgaXRlbSBhcyB0aGUgdGV4dCBvZiBhY3Rpb24gaXRlbVxuXHRcdGNvbnRleHRNZW51SXRlbS5zZXRUZXh0KGFjdGlvbkl0ZW0uZ2V0VGV4dCgpKTtcblx0XHQvLyBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNvbnRleHRNZW51IGFjdGlvbiBhcyB0aGUgdmlzaWJpbGl0eSBvZiB0YWJsZSBhY3Rpb25cblx0XHRjb25zdCB0YWJsZUFjdGlvblZpc2liaWxpdHkgPSBhY3Rpb25JdGVtLmdldFZpc2libGUoKSAmJiB0YWJsZUFjdGlvbi5nZXRWaXNpYmxlKCk7XG5cdFx0aWYgKHRhYmxlQWN0aW9uVmlzaWJpbGl0eSAhPT0gY29udGV4dE1lbnVJdGVtLmdldFZpc2libGUoKSkge1xuXHRcdFx0Y29udGV4dE1lbnVJdGVtLnNldFZpc2libGUodGFibGVBY3Rpb25WaXNpYmlsaXR5KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgYW4gYWN0aW9uIGhhcyBiZWVuIHNwbGl0IGJ5IFJUQS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIG9yaWdpbmFsIGFjdGlvbiBpdGVtXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgYWN0aW9uIGhhcyBiZWVuIHNwbGl0XG5cdCAqL1xuXHRfaXNBY3Rpb25TcGxpdChhY3Rpb25JdGVtOiBCdXR0b24pOiBib29sZWFuIHtcblx0XHRpZiAoYWN0aW9uSXRlbS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSA9PT0gXCJzYXAubS5NZW51QnV0dG9uXCIpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgZGVwZW5kZW50cyA9IGFjdGlvbkl0ZW0uZ2V0RGVwZW5kZW50cygpO1xuXHRcdC8vIGZpbmQgYWxsIHRoZSBkZXBlbmRlbnRzIHdoaWNoIGFyZSBhIEZsZXggTWFuYWdlZE9iamVjdE1vZGVsXG5cdFx0Y29uc3QgZmxleE1hbmFnZWRPYmplY3RNb2RlbHMgPSBkZXBlbmRlbnRzLmZpbHRlcigoZGVwZW5kZW50KSA9PiBkZXBlbmRlbnQgaW5zdGFuY2VvZiBNYW5hZ2VkT2JqZWN0TW9kZWwpO1xuXHRcdC8vIGNoZWNrIGlmIG9uZSBvZiB0aGVtIGhhcyB0aGUgbmFtZSBcIiRzYXAubS5mbGV4aWJpbGl0eS5TcGxpdEJ1dHRvbnNNb2RlbFwiXG5cdFx0cmV0dXJuIGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzLnNvbWUoXG5cdFx0XHQobW9kZWwpID0+IChtb2RlbCBhcyB1bmtub3duIGFzIE1hbmFnZWRPYmplY3RNb2RlbCkuZ2V0TmFtZSgpID09PSBcIiRzYXAubS5mbGV4aWJpbGl0eS5TcGxpdEJ1dHRvbnNNb2RlbFwiXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGEgY29udGV4dCBtZW51IGl0ZW0gaGFzIGJlZW4gcHJlc3NlZC5cblx0ICogQHBhcmFtIGFjdGl2ZVxuXHQgKi9cblx0c2V0Q29udGV4dE1lbnVBY3RpdmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZXh0TWVudUFjdGl2ZSA9IGFjdGl2ZTtcblx0fVxuXG5cdGlzQ29udGV4dE1lbnVBY3RpdmUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGV4dE1lbnVBY3RpdmU7XG5cdH1cblxuXHQvKipcblx0ICogTWFrZSB0aGUgbWVudSBpdGVtIG9mIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgdmlzaWJsZSBpZiBpdCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcGFyYW0gY29udGV4dHNcblx0ICovXG5cdHNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5KHRhYmxlOiBNRENUYWJsZSwgY29udGV4dHM6IENvbnRleHRbXSk6IHZvaWQge1xuXHRcdC8vIGdldCBjb2xsYWJvcmF0aW9uIG1lbnUgaXRlbSBmcm9tIGNvbnRleHQgbWVudVxuXHRcdGNvbnN0IGNvbnRleHRNZW51ID0gdGFibGUuZ2V0Q29udGV4dE1lbnUoKSBhcyBNZW51O1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSA9IG1lbnVJdGVtcz8uZmluZCgobWVudUl0ZW0pID0+IG1lbnVJdGVtLmdldElkKCkuaW5jbHVkZXMoXCJDb250ZXh0TWVudTo6Q29sbGFib3JhdGlvbk1hbmFnZXJcIikpO1xuXHRcdGlmIChjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtKSB7XG5cdFx0XHQvLyBnZXQgY29sbGFib3JhdGlvbiBvcHRpb24gZnJvbSBjb2xsYWJvcmF0aXZlIHRvb2xzIHNlcnZpY2Vcblx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gYXBwQ29tcG9uZW50Py5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uID0gY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZT8uY29sbGFib3JhdGlvblNlcnZpY2UuY21IZWxwZXJTZXJ2aWNlPy5nZXRPcHRpb25zKCk7XG5cdFx0XHQvLyBnZXQgbmF2aWdhdGlvbiBpbmZvIGZyb20gdGFibGUgZGVmaW5pdGlvblxuXHRcdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBJVGFibGVCbG9jayk/LmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblR5cGUgPSB0YWJsZURlZmluaXRpb24/LmFubm90YXRpb24/LnJvdz8ubmF2aWdhdGlvbkluZm8/LnR5cGU7XG5cdFx0XHRpZiAoY29sbGFib3JhdGlvbk9wdGlvbiAmJiBuYXZpZ2F0aW9uVHlwZSA9PT0gXCJOYXZpZ2F0aW9uXCIgJiYgY29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBJdGVtcyB0byBzaGFyZSBuZWVkcyB0byBoYXZlIGFuIGFjdGl2ZSBlbnRpdHksIGlmIGl0J3Mgbm90IENvbGxhYm9yYXRpdmUgRHJhZnQgb3IgYSBub24gZHJhZnQgcHJvZ3JhbW1pbmcgbW9kZWxcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGFibGUpO1xuXHRcdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlRHJhZnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aXZlRHJhZnQ7XG5cdFx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRleHRzWzBdLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBpc0RyYWZ0ID0gTW9kZWxIZWxwZXIuaXNEcmFmdFN1cHBvcnRlZChtZXRhTW9kZWwsIGNvbnRleHRzWzBdLmdldFBhdGgoKSk7XG5cdFx0XHRcdC8vIElmIHdlIGFyZSBpbiBDb2xsYWJvcmF0aXZlIERyYWZ0IG9yIGluIGFuIG5vbi1kcmFmdCBhcHAsIHdlIHNldCB2aXNpYmxlIHRvIHRydWUuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB3ZSBvbmx5IHNldCB2aXNpYmxlIHRvIHRydWUsIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgc2VsZWN0ZWQgY29udGV4dHMgaXMgb3IgaGFzIGFuIGFjdGl2ZSB2ZXJzaW9uLlxuXHRcdFx0XHRjb25zdCB2aXNpYmxlID1cblx0XHRcdFx0XHRjb2xsYWJvcmF0aXZlRHJhZnQuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpIHx8ICFpc0RyYWZ0XG5cdFx0XHRcdFx0XHQ/IHRydWVcblx0XHRcdFx0XHRcdDogY29udGV4dHMuc29tZSgoY29udGV4dCkgPT4gY29udGV4dC5nZXRPYmplY3QoKS5Jc0FjdGl2ZUVudGl0eSB8fCBjb250ZXh0LmdldE9iamVjdCgpLkhhc0FjdGl2ZUVudGl0eSk7XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0uc2V0VmlzaWJsZSh2aXNpYmxlKTtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0sIFwicHJlc3NcIiwgXCJDTTpTaGFyZUxpbmtcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgYmVmb3JlT3BlbkNvbnRleHRNZW51IGV2ZW50IG9mIHRoZSBNREMgVGFibGUuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdF9vbkNvbnRleHRNZW51UHJlc3ModGhpczogSVRhYmxlQmxvY2sgJiBDb250ZXh0TWVudUhhbmRsZXIsIG9FdmVudDogVGFibGUkQmVmb3JlT3BlbkNvbnRleHRNZW51RXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdHRhYmxlQ29udGV4dHMgPSB0YWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKCkgYXMgQ29udGV4dFtdLCAvLyBzZWxlY3RlZCBpdGVtcyBpbiB0aGUgdGFibGVcblx0XHRcdGNvbnRleHRNZW51Q29udGV4dCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0LCAvLyByb3cgY2xpY2tlZCBmb3IgY29udGV4dCBtZW51XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdGNvbnN0IGNvbnRleHRNZW51U2VsZWN0aW9uID0gdGhpcy5nZXRSZWxldmFudFNlbGVjdGlvbih0YWJsZUNvbnRleHRzLCBjb250ZXh0TWVudUNvbnRleHQpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgYWxsIGNvbnRleHRzIGluIGNvbnRleHRNZW51U2VsZWN0aW9uIGFyZSBpbmFjdGl2ZVxuXHRcdC8vIGlmIHNvLCBzZXQgdGhlIGluYWN0aXZlQ29udGV4dCBwcm9wZXJ0eSBpbiB0aGUgaW50ZXJuYWwgbW9kZWwgdG8gdHJ1ZVxuXHRcdC8vIGlmIGp1c3Qgb25lIGNvbnRleHQgaXMgbm90IGluYWN0aXZlLCBzZXQgdGhlIGluYWN0aXZlQ29udGV4dCBwcm9wZXJ0eSB0byBmYWxzZVxuXHRcdGxldCBvbmVDb250ZXh0SXNBY3RpdmUgPSB0cnVlO1xuXHRcdG9uZUNvbnRleHRJc0FjdGl2ZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKGNvbnRleHQpID0+ICFjb250ZXh0LmlzSW5hY3RpdmUoKSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaW5hY3RpdmVDb250ZXh0XCIsICFvbmVDb250ZXh0SXNBY3RpdmUpO1xuXG5cdFx0Ly8gRG8gbm90IGNvbnNpZGVyIGVtcHR5IHJvd3MgYXMgc2VsZWN0ZWQgY29udGV4dCwgZm9yIG90aGVyIGFjdGlvbnMgdGhhbiBkZWxldGVcblx0XHRjb25zdCBhY3RpdmVTZWxlY3RlZENvbnRleHRzID0gY29udGV4dE1lbnVTZWxlY3Rpb24uZmlsdGVyKGZ1bmN0aW9uIChvQ29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0cmV0dXJuICFvQ29udGV4dC5pc0luYWN0aXZlKCk7XG5cdFx0fSk7XG5cdFx0Y29uc3Qgb25seUluQWN0aXZlQ29udGV4dHNTZWxlY3RlZCA9IGNvbnRleHRNZW51U2VsZWN0aW9uLmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPT09IDA7XG5cdFx0Y29uc3QgaXNJbmxpbmVDcmVhdGlvbk1vZGUgPVxuXHRcdFx0KHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJICYgeyBnZXRDcmVhdGlvbk1vZGU6IEZ1bmN0aW9uIH0pPy5nZXRDcmVhdGlvbk1vZGUoKS5nZXROYW1lKCkgPT09XG5cdFx0XHRDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzO1xuXHRcdGNvbnN0IHRhYmxlRGVmaW5pdGlvbiA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0Y29uc3QgbmF2aWdhYmxlQ29udGV4dHMgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5maWx0ZXIoZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQhb0NvbnRleHQuaXNJbmFjdGl2ZSgpICYmXG5cdFx0XHRcdG9Db250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQ/LmdldExvY2FsQW5ub3RhdGlvbk1vZGVsKClcblx0XHRcdFx0XHQuZ2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0XHRcIkAkdWk1LmZlLnZpcnR1YWwucm91dGVOYXZpZ2FibGUtXCIgK1xuXHRcdFx0XHRcdFx0XHQodGFibGVEZWZpbml0aW9uLmFubm90YXRpb24ucm93Py5uYXZpZ2F0aW9uSW5mbyBhcyB7IHJvdXRlUGF0aD86IHN0cmluZyB9KT8ucm91dGVQYXRoLFxuXHRcdFx0XHRcdFx0b0NvbnRleHRcblx0XHRcdFx0XHQpICE9PSBmYWxzZVxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9zZWxlY3RlZENvbnRleHRzSW5jbHVkaW5nSW5hY3RpdmVcIiwgY29udGV4dE1lbnVTZWxlY3Rpb24pO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIiwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbmF2aWdhYmxlQ29udGV4dHNcIiwgbmF2aWdhYmxlQ29udGV4dHMpO1xuXHRcdC8vcmVzZXQgbnVtYmVyIG9mIHNlbGVjdGVkIGNvbnRleHRzIHRvIGVuc3VyZSBjYWxsYmFjayBmb3IgY3VzdG9tIGVuYWJsZSBoYW5kbGVyXG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIC0xKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9udW1iZXJPZk5hdmlnYWJsZUNvbnRleHRzXCIsIG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHNGb3JEZWxldGVcIiwgY29udGV4dE1lbnVTZWxlY3Rpb24ubGVuZ3RoKTtcblxuXHRcdGlmIChhY3RpdmVTZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8qIEFsaWduIGNvbnRleHQgbWVudSB3aXRoIFJUQSBjaGFuZ2VzIGluIHRhYmxlIHRvb2xiYXIgKi9cblx0XHRcdHRoaXMuYWxpZ25Db250ZXh0TWVudVdpdGhUYWJsZVRvb2xiYXJDaGFuZ2VzKHRhYmxlKTtcblx0XHR9IGVsc2UgaWYgKG9ubHlJbkFjdGl2ZUNvbnRleHRzU2VsZWN0ZWQgJiYgaXNJbmxpbmVDcmVhdGlvbk1vZGUpIHtcblx0XHRcdC8vIE9ubHkgRGVsZXRlIGlzIHZpc2libGVcblx0XHRcdHRoaXMuaGlkZUFsbENvbnRleHRNZW51QWN0aW9uc0V4Y2VwdERlbGV0ZSh0YWJsZSk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBNZW51SXRlbSBmb3IgQ29sbGFib3JhdGlvbiBNYW5hZ2VyXG5cdFx0dGhpcy5zZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSh0YWJsZSwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyk7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgY29udGV4dCBtZW51IGNvbnRhaW5zIG9ubHkgbm90IHZpc2libGUgaXRlbXNcblx0XHQvLyBpbiB0aGF0IGNhc2UgcHJldmVudCB0aGUgY29udGV4dCBtZW51IGZyb20gb3BlbmluZ1xuXHRcdGNvbnN0IGNvbnRleHRNZW51ID0gdGFibGUuZ2V0Q29udGV4dE1lbnUoKSBhcyBNZW51O1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cblx0XHRjb25zdCB2aXNpYmxlTWVudUl0ZW1zID0gbWVudUl0ZW1zLmZpbHRlcigobWVudUl0ZW0pID0+IG1lbnVJdGVtLmdldFZpc2libGUoKSk7XG5cdFx0aWYgKHZpc2libGVNZW51SXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRvRXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cblx0XHQvLyBFbmFibGVtZW50IG9mIHRoZSBFeHBhbmQvQ29sbGFwc2UgYnV0dG9uc1xuXHRcdGNvbnN0IGlzRXhwYW5kYWJsZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKHNpbmdsZUNvbnRleHQpID0+IHNpbmdsZUNvbnRleHQuaXNFeHBhbmRlZCgpICE9PSB1bmRlZmluZWQpO1xuXHRcdGNvbnN0IGlzQ29sbGFwc2FibGUgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5zb21lKChzaW5nbGVDb250ZXh0KSA9PiBzaW5nbGVDb250ZXh0LmlzRXhwYW5kZWQoKSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaXNFeHBhbmRhYmxlXCIsIGlzRXhwYW5kYWJsZSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaXNDb2xsYXBzYWJsZVwiLCBpc0NvbGxhcHNhYmxlKTtcblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBEZWxldGVcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250cm9sSWRcIiwgdGFibGUuZ2V0SWQoKSk7XG5cdFx0ZGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKGludGVybmFsTW9kZWxDb250ZXh0LCBjb250ZXh0TWVudVNlbGVjdGlvbiwgdHJ1ZSk7XG5cblx0XHQvLyBBY3Rpb24gZW5hYmxlbWVudCBmb3IgSUJOXG5cdFx0aWYgKCF0YWJsZS5kYXRhKFwiZW5hYmxlQW5hbHl0aWNzXCIpKSB7XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwID0gdGFibGU/LmRhdGEoXCJuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwXCIpO1xuXHRcdFx0VGFibGVSdW50aW1lLnNldEludGVudEJhc2VkTmF2aWdhdGlvbkVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQsIG5hdmlnYXRpb25BdmFpbGFibGVNYXAsIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMsIHRydWUpO1xuXHRcdH1cblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBNYXNzIEVkaXRcblx0XHRjb25zdCB1cGRhdGFibGVQcm9wZXJ0eVBhdGggPSB0YWJsZT8uZGF0YShcInVwZGF0YWJsZVByb3BlcnR5UGF0aFwiKTtcblx0XHRjb25zdCBkcmFmdCA9IHRhYmxlPy5kYXRhKFwiZHJhZnRcIik7XG5cdFx0Y29uc3QgcmVhZE9ubHlEcmFmdEVuYWJsZWQgPSB0YWJsZS5kYXRhKFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIikgPT09IFwidHJ1ZVwiICYmIGRyYWZ0ICE9PSBcInVuZGVmaW5lZFwiO1xuXHRcdGNvbnN0IHVwZGF0YWJsZUNvbnRleHRzOiBDb250ZXh0W10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IHNlbGVjdGVkQ29udGV4dCBvZiBhY3RpdmVTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRpZiAoVGFibGVSdW50aW1lLmlzVXBkYXRhYmxlQ29udGV4dCh1cGRhdGFibGVQcm9wZXJ0eVBhdGgsIHNlbGVjdGVkQ29udGV4dCwgcmVhZE9ubHlEcmFmdEVuYWJsZWQpKSB7XG5cdFx0XHRcdHVwZGF0YWJsZUNvbnRleHRzLnB1c2goc2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvdXBkYXRhYmxlQ29udGV4dHNcIiwgdXBkYXRhYmxlQ29udGV4dHMpO1xuXG5cdFx0aWYgKHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmNyZWF0ZUVuYWJsZW1lbnQgJiYgY29udGV4dE1lbnVTZWxlY3Rpb24ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRUYWJsZVJ1bnRpbWUuX3VwZGF0ZUNyZWF0ZUVuYWJsZW1lbnQoXG5cdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0XHR0YWJsZURlZmluaXRpb24uY29udHJvbC5jcmVhdGVFbmFibGVtZW50LFxuXHRcdFx0XHR0YWJsZSxcblx0XHRcdFx0Y29udGV4dE1lbnVTZWxlY3Rpb25bMF0sXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLm5vZGVUeXBlLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdFRhYmxlUnVudGltZS51cGRhdGVDdXRDb3B5UGFzdGVFbmFibGVtZW50KGludGVybmFsTW9kZWxDb250ZXh0LmdldE9iamVjdCgpLCB0YWJsZSwgdHJ1ZSk7XG5cdFx0VGFibGVSdW50aW1lLnVwZGF0ZU1vdmVVcERvd25FbmFibGVtZW50KGludGVybmFsTW9kZWxDb250ZXh0LmdldE9iamVjdCgpLCB0YWJsZSwgdHJ1ZSk7XG5cblx0XHQvLyBPdGhlciBhY3Rpb24gZW5hYmxlbWVudFxuXHRcdEFjdGlvblJ1bnRpbWUuc2V0QWN0aW9uRW5hYmxlbWVudChcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0SlNPTi5wYXJzZSh0YWJsZURlZmluaXRpb24ub3BlcmF0aW9uQXZhaWxhYmxlTWFwKSxcblx0XHRcdGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcInRhYmxlXCIsXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0fVxuXG5cdGdldFJlbGV2YW50U2VsZWN0aW9uKHRhYmxlQ29udGV4dHM6IENvbnRleHRbXSwgY29udGV4dE1lbnVDb250ZXh0OiBDb250ZXh0KTogQ29udGV4dFtdIHtcblx0XHRsZXQgY29udGV4dE1lbnVTZWxlY3Rpb246IENvbnRleHRbXTtcblx0XHRpZiAodGFibGVDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TWVudUNvbnRleHQpKSB7XG5cdFx0XHRjb250ZXh0TWVudVNlbGVjdGlvbiA9IHRhYmxlQ29udGV4dHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHRNZW51U2VsZWN0aW9uID0gW2NvbnRleHRNZW51Q29udGV4dF0gYXMgQ29udGV4dFtdO1xuXHRcdH1cblx0XHRyZXR1cm4gY29udGV4dE1lbnVTZWxlY3Rpb247XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztNQXNCcUJBLGtCQUFrQjtJQUFBLFNBQUFBLG1CQUFBO01BQUEsS0FDNUJDLGlCQUFpQixHQUFHLEtBQUs7SUFBQTtJQUFBQyxRQUFBLEdBQUFGLGtCQUFB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
|
|
403
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudUhhbmRsZXIiLCJjb250ZXh0TWVudUFjdGl2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXMiLCJ0YWJsZSIsImNvbnRleHRNZW51IiwiZ2V0Q29udGV4dE1lbnUiLCJzb3J0SGVscGVyRm9yTWVudUl0ZW1zIiwidGFibGVBY3Rpb25zIiwiZ2V0QWN0aW9ucyIsImZvckVhY2giLCJ0YWJsZUFjdGlvbiIsInRhYmxlQWN0aW9uSXRlbSIsImdldEFnZ3JlZ2F0aW9uIiwiX2lzQWN0aW9uU3BsaXQiLCJfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSIsIl9pc0FjdGlvbkNvbWJpbmVkIiwiX2NvbWJpbmVBY3Rpb25JbkNvbnRleHRNZW51IiwiY29udGV4dE1lbnVJdGVtIiwiX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbiIsIl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51IiwicHVzaCIsImxlbmd0aCIsIm1lbnVJdGVtIiwic29ydEluZGV4IiwiaW5kZXhPZkNvbnRleHRNZW51IiwiaW5kZXhPZkl0ZW0iLCJyZW1vdmVJdGVtIiwiaW5zZXJ0SXRlbSIsImhpZGVBbGxDb250ZXh0TWVudUFjdGlvbnNFeGNlcHREZWxldGUiLCJtZW51SXRlbXMiLCJnZXRJdGVtcyIsImRlbGV0ZUFjdGlvbiIsImZpbmQiLCJhY3Rpb24iLCJnZXRJZCIsImVuZHNXaXRoIiwiZGVsZXRlVmlzaWJsZSIsImdldEFjdGlvbiIsImdldFZpc2libGUiLCJpbmNsdWRlcyIsInNldFZpc2libGUiLCJhY3Rpb25JdGVtIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJmbGV4TWFuYWdlZE9iamVjdE1vZGVscyIsImZpbHRlciIsImRlcGVuZGVudCIsIk1hbmFnZWRPYmplY3RNb2RlbCIsInNvbWUiLCJtb2RlbCIsImNvbnRleHRNZW51SXRlbXMiLCJtZW51QnV0dG9uIiwiX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51IiwiYWN0aW9uSXRlbXMiLCJnZXRNZW51IiwidG9vbEJhckFjdGlvbiIsImFjdGlvbklkSW5Db250ZXh0TWVudSIsImRhdGEiLCJhY3Rpb25JZEluVG9vbGJhciIsInJlcGxhY2UiLCJzZXRUZXh0IiwiZ2V0VGV4dCIsImFkZEl0ZW0iLCJhY3Rpb25JblN1Yk1lbnUiLCJfZmluZEFjdGlvbkluU3ViTWVudSIsImRlc3Ryb3kiLCJzdWJNZW51Iiwic3BsaWNlIiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsIm5ld01lbnVCdXR0b24iLCJNZW51SXRlbSIsImlkIiwiZ2VuZXJhdGUiLCJ0ZXh0IiwiaSIsIml0ZW0iLCJzdWJJdGVtcyIsInN1Ykl0ZW0iLCJpbmRleCIsInRhYmxlQWN0aW9uVmlzaWJpbGl0eSIsInNldENvbnRleHRNZW51QWN0aXZlIiwiYWN0aXZlIiwiaXNDb250ZXh0TWVudUFjdGl2ZSIsInNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5IiwiY29udGV4dHMiLCJjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtIiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImNvbGxhYm9yYXRpb25PcHRpb24iLCJjb2xsYWJvcmF0aW9uU2VydmljZSIsImNtSGVscGVyU2VydmljZSIsImdldE9wdGlvbnMiLCJ0YWJsZURlZmluaXRpb24iLCJnZXRQYXJlbnQiLCJnZXRUYWJsZURlZmluaXRpb24iLCJuYXZpZ2F0aW9uVHlwZSIsImFubm90YXRpb24iLCJyb3ciLCJuYXZpZ2F0aW9uSW5mbyIsInR5cGUiLCJ2aWV3IiwiZ2V0VGFyZ2V0VmlldyIsImNvbGxhYm9yYXRpdmVEcmFmdCIsImdldENvbnRyb2xsZXIiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImlzRHJhZnQiLCJNb2RlbEhlbHBlciIsImlzRHJhZnRTdXBwb3J0ZWQiLCJnZXRQYXRoIiwidmlzaWJsZSIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJGRVNSSGVscGVyIiwic2V0U2VtYW50aWNTdGVwbmFtZSIsIl9vbkNvbnRleHRNZW51UHJlc3MiLCJvRXZlbnQiLCJnZXRTb3VyY2UiLCJ0YWJsZUNvbnRleHRzIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImNvbnRleHRNZW51Q29udGV4dCIsImdldFBhcmFtZXRlciIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjb250ZXh0TWVudVNlbGVjdGlvbiIsImdldFJlbGV2YW50U2VsZWN0aW9uIiwib25lQ29udGV4dElzQWN0aXZlIiwiaXNJbmFjdGl2ZSIsInNldFByb3BlcnR5IiwiYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyIsIm9Db250ZXh0Iiwib25seUluQWN0aXZlQ29udGV4dHNTZWxlY3RlZCIsImlzSW5saW5lQ3JlYXRpb25Nb2RlIiwiZ2V0Q3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwibmF2aWdhYmxlQ29udGV4dHMiLCJnZXRMb2NhbEFubm90YXRpb25Nb2RlbCIsImdldFByb3BlcnR5Iiwicm91dGVQYXRoIiwidmlzaWJsZU1lbnVJdGVtcyIsInByZXZlbnREZWZhdWx0IiwiaXNFeHBhbmRhYmxlIiwic2luZ2xlQ29udGV4dCIsImlzRXhwYW5kZWQiLCJpc0NvbGxhcHNhYmxlIiwiZGVsZXRlSGVscGVyIiwidXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMiLCJuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwIiwiVGFibGVSdW50aW1lIiwic2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uRW5hYmxlbWVudCIsInVwZGF0YWJsZVByb3BlcnR5UGF0aCIsImRyYWZ0IiwicmVhZE9ubHlEcmFmdEVuYWJsZWQiLCJ1cGRhdGFibGVDb250ZXh0cyIsInNlbGVjdGVkQ29udGV4dCIsImlzVXBkYXRhYmxlQ29udGV4dCIsImNvbnRyb2wiLCJjcmVhdGVFbmFibGVtZW50IiwiX3VwZGF0ZUNyZWF0ZUVuYWJsZW1lbnQiLCJub2RlVHlwZSIsInVwZGF0ZUN1dENvcHlQYXN0ZUVuYWJsZW1lbnQiLCJ1cGRhdGVNb3ZlVXBEb3duRW5hYmxlbWVudCIsIkFjdGlvblJ1bnRpbWUiLCJzZXRBY3Rpb25FbmFibGVtZW50IiwiSlNPTiIsInBhcnNlIiwib3BlcmF0aW9uQXZhaWxhYmxlTWFwIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb250ZXh0TWVudUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBJSW50ZXJmYWNlV2l0aE1peGluIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEFjdGlvblJ1bnRpbWUgZnJvbSBcInNhcC9mZS9jb3JlL0FjdGlvblJ1bnRpbWVcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBkZWxldGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRGVsZXRlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBNZW51IGZyb20gXCJzYXAvbS9NZW51XCI7XG5pbXBvcnQgdHlwZSBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1vZGVsIGZyb20gXCJzYXAvdWkvZmwvdXRpbC9NYW5hZ2VkT2JqZWN0TW9kZWxcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvblRvb2xiYXJBY3Rpb24gZnJvbSBcInNhcC91aS9tZGMvYWN0aW9udG9vbGJhci9BY3Rpb25Ub29sYmFyQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEZFU1JIZWxwZXIgZnJvbSBcInNhcC91aS9wZXJmb3JtYW5jZS90cmFjZS9GRVNSSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5pbXBvcnQgVGFibGVSdW50aW1lIGZyb20gXCIuLi9UYWJsZVJ1bnRpbWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dE1lbnVIYW5kbGVyIGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdHByb3RlY3RlZCBjb250ZXh0TWVudUFjdGl2ZSA9IGZhbHNlO1xuXG5cdHNldHVwTWl4aW4oX2Jhc2VDbGFzczogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHQvLyBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IGludGVyZmFjZSBJSW50ZXJmYWNlV2l0aE1peGluXG5cdH1cblxuXHQvKipcblx0ICogQWxpZ24gY29udGV4dCBtZW51IHdpdGggdGhlIHRhYmxlIGFjdGlvbnMgYnkgUlRBIGNoYW5nZXMgaW4gdGFibGUgdG9vbGJhci5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB3aXRoIGJvdW5kIHRhYmxlIGFjdGlvbnNcblx0ICovXG5cdGFsaWduQ29udGV4dE1lbnVXaXRoVGFibGVUb29sYmFyQ2hhbmdlcyh0YWJsZTogTURDVGFibGUpOiB2b2lkIHtcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBzb3J0SGVscGVyRm9yTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG5cdFx0Y29uc3QgdGFibGVBY3Rpb25zID0gdGFibGUuZ2V0QWN0aW9ucygpO1xuXHRcdHRhYmxlQWN0aW9ucz8uZm9yRWFjaCgodGFibGVBY3Rpb24pID0+IHtcblx0XHRcdGNvbnN0IHRhYmxlQWN0aW9uSXRlbSA9IHRhYmxlQWN0aW9uLmdldEFnZ3JlZ2F0aW9uKFwiYWN0aW9uXCIpIGFzIEJ1dHRvbjtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBzcGxpdCBieSBSVEFcblx0XHRcdGlmICh0aGlzLl9pc0FjdGlvblNwbGl0KHRhYmxlQWN0aW9uSXRlbSkpIHtcblx0XHRcdFx0Ly8gUmVtb3ZlIG9yaWdpbmFsIG1lbnUgaXRlbSBhbmQgYWRkIHN1YiBpdGVtcyBhcyBuZXcgbWVudSBpdGVtc1xuXHRcdFx0XHR0aGlzLl9zcGxpdEFjdGlvbnNJbkNvbnRleHRNZW51KHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnUpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIGFjdGlvbiBpdGVtIGhhcyBiZWVuIGNyZWF0ZWQgYnkgY29tYmluaW5nIHRoZSB0d28gYWN0aW9uc1xuXHRcdFx0aWYgKHRoaXMuX2lzQWN0aW9uQ29tYmluZWQodGFibGVBY3Rpb25JdGVtKSkge1xuXHRcdFx0XHR0aGlzLl9jb21iaW5lQWN0aW9uSW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0gYXMgdW5rbm93biBhcyBNZW51QnV0dG9uLCBjb250ZXh0TWVudSwgdGFibGUpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtID0gdGhpcy5fZ2V0Q29ycmVzcG9uZGluZ0NvbnRleHRNZW51QWN0aW9uKHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnUpO1xuXHRcdFx0aWYgKGNvbnRleHRNZW51SXRlbSkge1xuXHRcdFx0XHR0aGlzLl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51KHRhYmxlQWN0aW9uSXRlbSwgY29udGV4dE1lbnVJdGVtLCB0YWJsZUFjdGlvbiBhcyBBY3Rpb25Ub29sYmFyQWN0aW9uKTtcblx0XHRcdFx0c29ydEhlbHBlckZvck1lbnVJdGVtcy5wdXNoKGNvbnRleHRNZW51SXRlbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Ly8gQWxpZ24gdGhlIG9yZGVyIG9mIGNvbnRleHQtbWVudUl0ZW1zIHdpdGggYm91bmQgdGFibGUgYWN0aW9uc1xuXHRcdGlmIChzb3J0SGVscGVyRm9yTWVudUl0ZW1zLmxlbmd0aCkge1xuXHRcdFx0c29ydEhlbHBlckZvck1lbnVJdGVtcy5mb3JFYWNoKChtZW51SXRlbSwgc29ydEluZGV4KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGluZGV4T2ZDb250ZXh0TWVudSA9IGNvbnRleHRNZW51LmluZGV4T2ZJdGVtKG1lbnVJdGVtKTtcblx0XHRcdFx0aWYgKGluZGV4T2ZDb250ZXh0TWVudSAhPT0gc29ydEluZGV4KSB7XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUuaW5zZXJ0SXRlbShtZW51SXRlbSwgc29ydEluZGV4KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhpZGUgYWxsIGNvbnRleHQgbWVudSBhY3Rpb25zIGV4Y2VwdCBkZWxldGUuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICovXG5cdGhpZGVBbGxDb250ZXh0TWVudUFjdGlvbnNFeGNlcHREZWxldGUodGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHRjb25zdCBkZWxldGVBY3Rpb24gPSB0YWJsZS5nZXRBY3Rpb25zKCkuZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uZ2V0SWQoKS5lbmRzV2l0aChcIlN0YW5kYXJkQWN0aW9uOjpEZWxldGU6OkFjdGlvblRvb2xiYXJBY3Rpb25cIikpO1xuXHRcdGNvbnN0IGRlbGV0ZVZpc2libGUgPSAoZGVsZXRlQWN0aW9uIGFzIEFjdGlvblRvb2xiYXJBY3Rpb24pPy5nZXRBY3Rpb24oKS5nZXRWaXNpYmxlKCkgPz8gdHJ1ZTtcblx0XHRtZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW0pID0+IHtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBtZW51IGl0ZW0gaXMgdGhlIGRlbGV0ZSBhY3Rpb25cblx0XHRcdGlmIChtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKFwiU3RhbmRhcmRBY3Rpb246OkRlbGV0ZTo6Q29udGV4dE1lbnVcIikpIHtcblx0XHRcdFx0bWVudUl0ZW0uc2V0VmlzaWJsZShkZWxldGVWaXNpYmxlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1lbnVJdGVtLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGEgQ29tYmluZSBSVEEgY2hhbmdlcyBpbiB0aGUgdGFibGUgdG9vbGJhci5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiB0byBjaGVja1xuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGEgQ29tYmluZSBSVEEgY2hhbmdlcyBpbiB0aGUgdGFibGUgdG9vbGJhclxuXHQgKi9cblx0X2lzQWN0aW9uQ29tYmluZWQoYWN0aW9uSXRlbTogQnV0dG9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKGFjdGlvbkl0ZW0uZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLm0uTWVudUJ1dHRvblwiKSB7XG5cdFx0XHQvLyBXZSBkb24ndCBoYXZlIGN1c3RvbSBkYXRhIGF0dHJpYnV0ZSBvbiB0aGUgTWVudUJ1dHRvbiBjcmVhdGVkIGJ5IFJUQSBjb21iaW5lIGNoYW5nZVxuXHRcdFx0Y29uc3QgZGVwZW5kZW50cyA9IGFjdGlvbkl0ZW0uZ2V0RGVwZW5kZW50cygpO1xuXHRcdFx0Ly8gZmluZCBhbGwgdGhlIGRlcGVuZGVudHMgd2hpY2ggYXJlIGEgRmxleCBNYW5hZ2VkT2JqZWN0TW9kZWxcblx0XHRcdGNvbnN0IGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzID0gZGVwZW5kZW50cy5maWx0ZXIoKGRlcGVuZGVudCkgPT4gZGVwZW5kZW50IGluc3RhbmNlb2YgTWFuYWdlZE9iamVjdE1vZGVsKTtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBuYW1lIG9mIG9uZSBvZiB0aGVtIGluY2x1ZGVzIFwiJHNhcC5tLmZsZXhpYmlsaXR5Lk1lbnVCdXR0b25Nb2RlbFwiXG5cdFx0XHRyZXR1cm4gZmxleE1hbmFnZWRPYmplY3RNb2RlbHMuc29tZSgobW9kZWwpID0+XG5cdFx0XHRcdChtb2RlbCBhcyB1bmtub3duIGFzIE1hbmFnZWRPYmplY3RNb2RlbCkuZ2V0TmFtZSgpLmluY2x1ZGVzKFwiJHNhcC5tLmZsZXhpYmlsaXR5Lk1lbnVCdXR0b25Nb2RlbFwiKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbWJpbmUgdGhlIGFjdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVudSB0byBhbGlnbiB3aXRoIHRoZSB0YWJsZSBhY3Rpb24gdG9vbGJhci5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICovXG5cdF9jb21iaW5lQWN0aW9uSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBNZW51QnV0dG9uLCBjb250ZXh0TWVudTogTWVudSwgdGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Ly8gQ3JlYXRlIGEgbmV3IG1lbnUgYnV0dG9uIGluIHRoZSBjb250ZXh0IG1lbnUgaWYgaXQgZG9lcyBub3QgZXhpc3Rcblx0XHRjb25zdCBtZW51QnV0dG9uID0gdGhpcy5fZmluZE9yQ3JlYXRlTWVudUJ1dHRvbkluQ29udGV4dE1lbnUoYWN0aW9uSXRlbSwgdGFibGUpO1xuXHRcdGNvbnN0IGFjdGlvbkl0ZW1zID0gYWN0aW9uSXRlbS5nZXRNZW51KCkuZ2V0SXRlbXMoKTtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25JdGVtcykge1xuXHRcdFx0Y29uc3QgdG9vbEJhckFjdGlvbiA9IGFjdGlvbjtcblx0XHRcdC8vIG5vdyBmaW5kIHRoZSBhY3Rpb24gaW4gdGhlIGNvbnRleHQgbWVudSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGNvbnRleHQgbWVudVxuXHRcdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBjb250ZXh0TWVudUl0ZW1zKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbklkSW5Db250ZXh0TWVudSA9IG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKTtcblx0XHRcdFx0Y29uc3QgYWN0aW9uSWRJblRvb2xiYXIgPSB0b29sQmFyQWN0aW9uLmRhdGEoXCJhY3Rpb25JZFwiKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFjdGlvbklkSW5Db250ZXh0TWVudSA9PT0gYWN0aW9uSWRJblRvb2xiYXIgKyBcIjo6Q29udGV4dE1lbnVcIiB8fFxuXHRcdFx0XHRcdGFjdGlvbklkSW5Db250ZXh0TWVudSA9PT0gYWN0aW9uSWRJblRvb2xiYXIucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0bWVudUl0ZW0uc2V0VGV4dCh0b29sQmFyQWN0aW9uLmdldFRleHQoKSk7XG5cdFx0XHRcdFx0Ly8gQWRkIHRoZSBhY3Rpb24gdG8gdGhlIG1lbnUgYnV0dG9uXG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0bWVudUJ1dHRvbi5hZGRJdGVtKG1lbnVJdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJZiB3ZSBmaW5kIGFub3RoZXIgbWVudSBpbiB0aGUgY29udGV4dCBtZW51IHdlIGNoZWNrIGlmIHRoZSBhY3Rpb24gaXMgaW4gdGhlIHN1YiBtZW51XG5cdFx0XHRcdGlmIChtZW51SXRlbS5nZXRJdGVtcygpLmxlbmd0aCA+IDAgJiYgIW1lbnVJdGVtLmdldElkKCkuaW5jbHVkZXMoYWN0aW9uSXRlbS5nZXRJZCgpKSkge1xuXHRcdFx0XHRcdGNvbnN0IGFjdGlvbkluU3ViTWVudSA9IHRoaXMuX2ZpbmRBY3Rpb25JblN1Yk1lbnUobWVudUl0ZW0uZ2V0SXRlbXMoKSwgdG9vbEJhckFjdGlvbik7XG5cdFx0XHRcdFx0aWYgKGFjdGlvbkluU3ViTWVudSkge1xuXHRcdFx0XHRcdFx0YWN0aW9uSW5TdWJNZW51LnNldFRleHQodG9vbEJhckFjdGlvbi5nZXRUZXh0KCkpO1xuXHRcdFx0XHRcdFx0bWVudUJ1dHRvbi5hZGRJdGVtKGFjdGlvbkluU3ViTWVudSk7XG5cdFx0XHRcdFx0XHRpZiAobWVudUl0ZW0uZ2V0SXRlbXMoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uZGVzdHJveSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyB0aGUgYWN0aW9uIGluIGFuIGFjdGlvbiBtZW51IGluIHRoZSBjb250ZXh0IG1lbnUsIGl0IHJldHVybiB0aGUgYWN0aW9uIGlmIGZvdW5kIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIG1lbnUuXG5cdCAqIEBwYXJhbSBzdWJNZW51IFRoZSBhcnJheSBvZiBhY3Rpb25zIGluIHRoZSBtZW51XG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gd2UgYXJlIHNlYXJjaGluZyBmb3Jcblx0ICogQHJldHVybnMgVGhlIGFjdGlvbiBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuXHQgKi9cblx0X2ZpbmRBY3Rpb25JblN1Yk1lbnUoc3ViTWVudTogTWVudUl0ZW1bXSwgYWN0aW9uSXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSB8IHVuZGVmaW5lZCB7XG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBzdWJNZW51KSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIikgfHxcblx0XHRcdFx0bWVudUl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSBhY3Rpb25JdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSArIFwiOjpDb250ZXh0TWVudVwiXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uID0gbWVudUl0ZW07XG5cdFx0XHRcdHN1Yk1lbnUuc3BsaWNlKHN1Yk1lbnUuaW5kZXhPZihtZW51SXRlbSksIDEpO1xuXHRcdFx0XHRyZXR1cm4gYWN0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrJ3MgaWYgYSBwYXJ0aWN1bGFyIG1lbnUgYnV0dG9uIGV4aXN0cyBpbiB0aGUgY29udGV4dCBtZW51LCBpZiBub3QgY3JlYXRlcyBhIG5ldyBtZW51IGJ1dHRvbiBhbmQgYWRkcyBpdCB0byB0aGUgY29udGV4dCBtZW51LlxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgbWVudSBidXR0b24gdG8gZmluZCBvciBjcmVhdGVcblx0ICogQHBhcmFtIHRhYmxlIFRoZSBNRENUYWJsZVxuXHQgKiBAcmV0dXJucyBUaGUgTWVudUl0ZW0gaWYgZm91bmQsIG90aGVyd2lzZSBhIG5ldyBNZW51SXRlbVxuXHQgKi9cblx0X2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IE1lbnVCdXR0b24sIHRhYmxlOiBNRENUYWJsZSk6IE1lbnVJdGVtIHtcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBjb250ZXh0TWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHQvL2xvb3Agb3ZlciBjb250ZXh0TWVudUl0ZW1zIGFuZCBjaGVjayBpZiB0aGUgcmVxdWlyZWQgbWVudSBidXR0b24gYWxyZWFkeSBleGlzdHNcblx0XHRmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIGNvbnRleHRNZW51SXRlbXMpIHtcblx0XHRcdGlmIChtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKGFjdGlvbkl0ZW0uZ2V0SWQoKSkpIHtcblx0XHRcdFx0cmV0dXJuIG1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpZiB0aGUgcmVxdWlyZWQgbWVudSBidXR0b24gZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBtZW51IGJ1dHRvbiBhbmQgYWRkIGl0IHRvIHRoZSBjb250ZXh0TWVudVxuXHRcdGNvbnN0IG5ld01lbnVCdXR0b24gPSBuZXcgTWVudUl0ZW0oe1xuXHRcdFx0aWQ6IGdlbmVyYXRlKFt0YWJsZS5nZXRJZCgpLCBhY3Rpb25JdGVtLmdldElkKCksIFwiOjpDb250ZXh0TWVudVwiXSksXG5cdFx0XHR0ZXh0OiBhY3Rpb25JdGVtLmdldFRleHQoKVxuXHRcdH0pO1xuXHRcdGNvbnRleHRNZW51LmFkZEl0ZW0obmV3TWVudUJ1dHRvbik7XG5cdFx0cmV0dXJuIG5ld01lbnVCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogU3BsaXQgdGhlIGFjdGlvbiBpdGVtcyBpbiB0aGUgY29udGV4dCBtZW51LlxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgYWN0aW9uIGl0ZW0gdG8gc3BsaXRcblx0ICogQHBhcmFtIGNvbnRleHRNZW51IFRoZSBjb250ZXh0IG1lbnVcblx0ICovXG5cdF9zcGxpdEFjdGlvbnNJbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IEJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUpOiB2b2lkIHtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvL2NoZWNrIGlmIHRoZSBtZW51IGl0ZW0gaXMgYSBNZW51XG5cdFx0XHRpZiAobWVudUl0ZW1zW2ldLmdldEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWVudUl0ZW1zW2ldXG5cdFx0XHRcdFx0XHQuZ2V0SXRlbXMoKVxuXHRcdFx0XHRcdFx0LnNvbWUoKGl0ZW0pID0+IGl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSBhY3Rpb25JdGVtLmRhdGEoXCJhY3Rpb25JZFwiKS5yZXBsYWNlKFwiOjpBY3Rpb25NZW51XCIsIFwiOjpDb250ZXh0TWVudVwiKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XG5cdFx0XHRcdFx0Y29uc3Qgc3ViSXRlbXMgPSBtZW51SXRlbS5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgbWVudUl0ZW0gZnJvbSB0aGUgY29udGV4dCBtZW51XG5cdFx0XHRcdFx0Y29udGV4dE1lbnUucmVtb3ZlSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRoZXNlIHN1Yi1pdGVtcyBpbnRvIHRoZSBjb250ZXh0TWVudSBzdGFydGluZyBmcm9tIHRoZSBvcmlnaW5hbCBpbmRleFxuXHRcdFx0XHRcdHN1Ykl0ZW1zLmZvckVhY2goKHN1Ykl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRjb250ZXh0TWVudS5pbnNlcnRJdGVtKHN1Ykl0ZW0sIGkgKyBpbmRleCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY29ycmVzcG9uZGluZyBjb250ZXh0IG1lbnUgYWN0aW9uIGZvciB0aGUgdGFibGUgYWN0aW9uLlxuXHQgKiBAcGFyYW0gdGFibGVBY3Rpb24gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqIEByZXR1cm5zICBNZW51SXRlbXxudWxsIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQgbWVudSBhY3Rpb24gb3IgbnVsbCBpZiBub3QgZm91bmRcblx0ICovXG5cdF9nZXRDb3JyZXNwb25kaW5nQ29udGV4dE1lbnVBY3Rpb24odGFibGVBY3Rpb246IEJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUpOiBNZW51SXRlbSB8IG51bGwge1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIG1lbnVJdGVtcykge1xuXHRcdFx0Ly8gdGhlIGNvcnJlc3BvbmRpbmcgY29udGV4dCBtZW51IGFjdGlvbiBpcyBlaXRoZXIgYW4gaXRlbSB3aXRoIGFuIGFkZGl0aW9uYWwgXCI6OkNvbnRleHRNZW51XCIgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBpZFxuXHRcdFx0Ly8gb3IgaXQgaXMgYSBzcGxpdHRlZCBtZW51IGl0ZW0gd2hlcmUgdGhlIFwiOjpDb250ZXh0TWVudVwiIHBhcnQgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgaWRcblx0XHRcdGlmIChcblx0XHRcdFx0dGFibGVBY3Rpb24uZ2V0SWQoKSArIFwiOjpDb250ZXh0TWVudVwiID09PSBpdGVtLmdldElkKCkgfHxcblx0XHRcdFx0aXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgPT09IHRhYmxlQWN0aW9uLmRhdGEoXCJhY3Rpb25JZFwiKT8ucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIilcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHRcdC8vIGZvciBjb21iaW5lZCBhY3Rpb25zLCB0aGUgY29udGV4dCBtZW51IGFjdGlvbiBpcyB0aGUgb25lIHdpdGggdGhlIHNhbWUgdGV4dFxuXHRcdFx0aWYgKGl0ZW0uZ2V0SWQoKS5pbmNsdWRlcyh0YWJsZUFjdGlvbi5nZXRJZCgpKSkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQWRqdXN0IHRoZSB0ZXh0IGFuZCB2aXNpYmlsaXR5IG9mIHRoZSBhY3Rpb24gaXRlbXMgaW4gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudUl0ZW0gVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcGFyYW0gdGFibGVBY3Rpb24gVGhlIGFycmF5IG9mIHRhYmxlIGFjdGlvbnNcblx0ICovXG5cdF9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51KGFjdGlvbkl0ZW06IEJ1dHRvbiwgY29udGV4dE1lbnVJdGVtOiBNZW51SXRlbSwgdGFibGVBY3Rpb246IEFjdGlvblRvb2xiYXJBY3Rpb24pOiB2b2lkIHtcblx0XHQvLyBjaGFuZ2UgdGhlIHRleHQgb2YgdGhlIG1lbnUgaXRlbSBhcyB0aGUgdGV4dCBvZiBhY3Rpb24gaXRlbVxuXHRcdGNvbnRleHRNZW51SXRlbS5zZXRUZXh0KGFjdGlvbkl0ZW0uZ2V0VGV4dCgpKTtcblx0XHQvLyBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNvbnRleHRNZW51IGFjdGlvbiBhcyB0aGUgdmlzaWJpbGl0eSBvZiB0YWJsZSBhY3Rpb25cblx0XHRjb25zdCB0YWJsZUFjdGlvblZpc2liaWxpdHkgPSBhY3Rpb25JdGVtLmdldFZpc2libGUoKSAmJiB0YWJsZUFjdGlvbi5nZXRWaXNpYmxlKCk7XG5cdFx0aWYgKHRhYmxlQWN0aW9uVmlzaWJpbGl0eSAhPT0gY29udGV4dE1lbnVJdGVtLmdldFZpc2libGUoKSkge1xuXHRcdFx0Y29udGV4dE1lbnVJdGVtLnNldFZpc2libGUodGFibGVBY3Rpb25WaXNpYmlsaXR5KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgYW4gYWN0aW9uIGhhcyBiZWVuIHNwbGl0IGJ5IFJUQS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIG9yaWdpbmFsIGFjdGlvbiBpdGVtXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgYWN0aW9uIGhhcyBiZWVuIHNwbGl0XG5cdCAqL1xuXHRfaXNBY3Rpb25TcGxpdChhY3Rpb25JdGVtOiBCdXR0b24pOiBib29sZWFuIHtcblx0XHRpZiAoYWN0aW9uSXRlbS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSA9PT0gXCJzYXAubS5NZW51QnV0dG9uXCIpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgZGVwZW5kZW50cyA9IGFjdGlvbkl0ZW0uZ2V0RGVwZW5kZW50cygpO1xuXHRcdC8vIGZpbmQgYWxsIHRoZSBkZXBlbmRlbnRzIHdoaWNoIGFyZSBhIEZsZXggTWFuYWdlZE9iamVjdE1vZGVsXG5cdFx0Y29uc3QgZmxleE1hbmFnZWRPYmplY3RNb2RlbHMgPSBkZXBlbmRlbnRzLmZpbHRlcigoZGVwZW5kZW50KSA9PiBkZXBlbmRlbnQgaW5zdGFuY2VvZiBNYW5hZ2VkT2JqZWN0TW9kZWwpO1xuXHRcdC8vIGNoZWNrIGlmIG9uZSBvZiB0aGVtIGhhcyB0aGUgbmFtZSBcIiRzYXAubS5mbGV4aWJpbGl0eS5TcGxpdEJ1dHRvbnNNb2RlbFwiXG5cdFx0cmV0dXJuIGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzLnNvbWUoXG5cdFx0XHQobW9kZWwpID0+IChtb2RlbCBhcyB1bmtub3duIGFzIE1hbmFnZWRPYmplY3RNb2RlbCkuZ2V0TmFtZSgpID09PSBcIiRzYXAubS5mbGV4aWJpbGl0eS5TcGxpdEJ1dHRvbnNNb2RlbFwiXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGEgY29udGV4dCBtZW51IGl0ZW0gaGFzIGJlZW4gcHJlc3NlZC5cblx0ICogQHBhcmFtIGFjdGl2ZVxuXHQgKi9cblx0c2V0Q29udGV4dE1lbnVBY3RpdmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZXh0TWVudUFjdGl2ZSA9IGFjdGl2ZTtcblx0fVxuXG5cdGlzQ29udGV4dE1lbnVBY3RpdmUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGV4dE1lbnVBY3RpdmU7XG5cdH1cblxuXHQvKipcblx0ICogTWFrZSB0aGUgbWVudSBpdGVtIG9mIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgdmlzaWJsZSBpZiBpdCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEBwYXJhbSB0YWJsZVxuXHQgKiBAcGFyYW0gY29udGV4dHNcblx0ICovXG5cdHNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5KHRhYmxlOiBNRENUYWJsZSwgY29udGV4dHM6IENvbnRleHRbXSk6IHZvaWQge1xuXHRcdC8vIGdldCBjb2xsYWJvcmF0aW9uIG1lbnUgaXRlbSBmcm9tIGNvbnRleHQgbWVudVxuXHRcdGNvbnN0IGNvbnRleHRNZW51ID0gdGFibGUuZ2V0Q29udGV4dE1lbnUoKSBhcyBNZW51O1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSA9IG1lbnVJdGVtcz8uZmluZCgobWVudUl0ZW0pID0+IG1lbnVJdGVtLmdldElkKCkuaW5jbHVkZXMoXCJDb250ZXh0TWVudTo6Q29sbGFib3JhdGlvbk1hbmFnZXJcIikpO1xuXHRcdGlmIChjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtKSB7XG5cdFx0XHQvLyBnZXQgY29sbGFib3JhdGlvbiBvcHRpb24gZnJvbSBjb2xsYWJvcmF0aXZlIHRvb2xzIHNlcnZpY2Vcblx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gYXBwQ29tcG9uZW50Py5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uID0gY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZT8uY29sbGFib3JhdGlvblNlcnZpY2UuY21IZWxwZXJTZXJ2aWNlPy5nZXRPcHRpb25zKCk7XG5cdFx0XHQvLyBnZXQgbmF2aWdhdGlvbiBpbmZvIGZyb20gdGFibGUgZGVmaW5pdGlvblxuXHRcdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBJVGFibGVCbG9jayk/LmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblR5cGUgPSB0YWJsZURlZmluaXRpb24/LmFubm90YXRpb24/LnJvdz8ubmF2aWdhdGlvbkluZm8/LnR5cGU7XG5cdFx0XHRpZiAoY29sbGFib3JhdGlvbk9wdGlvbiAmJiBuYXZpZ2F0aW9uVHlwZSA9PT0gXCJOYXZpZ2F0aW9uXCIgJiYgY29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBJdGVtcyB0byBzaGFyZSBuZWVkcyB0byBoYXZlIGFuIGFjdGl2ZSBlbnRpdHksIGlmIGl0J3Mgbm90IENvbGxhYm9yYXRpdmUgRHJhZnQgb3IgYSBub24gZHJhZnQgcHJvZ3JhbW1pbmcgbW9kZWxcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGFibGUpO1xuXHRcdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlRHJhZnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aXZlRHJhZnQ7XG5cdFx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRleHRzWzBdLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBpc0RyYWZ0ID0gTW9kZWxIZWxwZXIuaXNEcmFmdFN1cHBvcnRlZChtZXRhTW9kZWwsIGNvbnRleHRzWzBdLmdldFBhdGgoKSk7XG5cdFx0XHRcdC8vIElmIHdlIGFyZSBpbiBDb2xsYWJvcmF0aXZlIERyYWZ0IG9yIGluIGFuIG5vbi1kcmFmdCBhcHAsIHdlIHNldCB2aXNpYmxlIHRvIHRydWUuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB3ZSBvbmx5IHNldCB2aXNpYmxlIHRvIHRydWUsIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgc2VsZWN0ZWQgY29udGV4dHMgaXMgb3IgaGFzIGFuIGFjdGl2ZSB2ZXJzaW9uLlxuXHRcdFx0XHRjb25zdCB2aXNpYmxlID1cblx0XHRcdFx0XHRjb2xsYWJvcmF0aXZlRHJhZnQuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpIHx8ICFpc0RyYWZ0XG5cdFx0XHRcdFx0XHQ/IHRydWVcblx0XHRcdFx0XHRcdDogY29udGV4dHMuc29tZSgoY29udGV4dCkgPT4gY29udGV4dC5nZXRPYmplY3QoKS5Jc0FjdGl2ZUVudGl0eSB8fCBjb250ZXh0LmdldE9iamVjdCgpLkhhc0FjdGl2ZUVudGl0eSk7XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0uc2V0VmlzaWJsZSh2aXNpYmxlKTtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0sIFwicHJlc3NcIiwgXCJDTTpTaGFyZUxpbmtcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgYmVmb3JlT3BlbkNvbnRleHRNZW51IGV2ZW50IG9mIHRoZSBNREMgVGFibGUuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdF9vbkNvbnRleHRNZW51UHJlc3ModGhpczogSVRhYmxlQmxvY2sgJiBDb250ZXh0TWVudUhhbmRsZXIsIG9FdmVudDogVGFibGUkQmVmb3JlT3BlbkNvbnRleHRNZW51RXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdHRhYmxlQ29udGV4dHMgPSB0YWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKCkgYXMgQ29udGV4dFtdLCAvLyBzZWxlY3RlZCBpdGVtcyBpbiB0aGUgdGFibGVcblx0XHRcdGNvbnRleHRNZW51Q29udGV4dCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0LCAvLyByb3cgY2xpY2tlZCBmb3IgY29udGV4dCBtZW51XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdGNvbnN0IGNvbnRleHRNZW51U2VsZWN0aW9uID0gdGhpcy5nZXRSZWxldmFudFNlbGVjdGlvbih0YWJsZUNvbnRleHRzLCBjb250ZXh0TWVudUNvbnRleHQpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgYWxsIGNvbnRleHRzIGluIGNvbnRleHRNZW51U2VsZWN0aW9uIGFyZSBpbmFjdGl2ZVxuXHRcdC8vIGlmIHNvLCBzZXQgdGhlIGluYWN0aXZlQ29udGV4dCBwcm9wZXJ0eSBpbiB0aGUgaW50ZXJuYWwgbW9kZWwgdG8gdHJ1ZVxuXHRcdC8vIGlmIGp1c3Qgb25lIGNvbnRleHQgaXMgbm90IGluYWN0aXZlLCBzZXQgdGhlIGluYWN0aXZlQ29udGV4dCBwcm9wZXJ0eSB0byBmYWxzZVxuXHRcdGxldCBvbmVDb250ZXh0SXNBY3RpdmUgPSB0cnVlO1xuXHRcdG9uZUNvbnRleHRJc0FjdGl2ZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKGNvbnRleHQpID0+ICFjb250ZXh0LmlzSW5hY3RpdmUoKSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaW5hY3RpdmVDb250ZXh0XCIsICFvbmVDb250ZXh0SXNBY3RpdmUpO1xuXG5cdFx0Ly8gRG8gbm90IGNvbnNpZGVyIGVtcHR5IHJvd3MgYXMgc2VsZWN0ZWQgY29udGV4dCwgZm9yIG90aGVyIGFjdGlvbnMgdGhhbiBkZWxldGVcblx0XHRjb25zdCBhY3RpdmVTZWxlY3RlZENvbnRleHRzID0gY29udGV4dE1lbnVTZWxlY3Rpb24uZmlsdGVyKGZ1bmN0aW9uIChvQ29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0cmV0dXJuICFvQ29udGV4dC5pc0luYWN0aXZlKCk7XG5cdFx0fSk7XG5cdFx0Y29uc3Qgb25seUluQWN0aXZlQ29udGV4dHNTZWxlY3RlZCA9IGNvbnRleHRNZW51U2VsZWN0aW9uLmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPT09IDA7XG5cdFx0Y29uc3QgaXNJbmxpbmVDcmVhdGlvbk1vZGUgPVxuXHRcdFx0KHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJICYgeyBnZXRDcmVhdGlvbk1vZGU6IEZ1bmN0aW9uIH0pPy5nZXRDcmVhdGlvbk1vZGUoKS5nZXROYW1lKCkgPT09XG5cdFx0XHRDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzO1xuXHRcdGNvbnN0IHRhYmxlRGVmaW5pdGlvbiA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0Y29uc3QgbmF2aWdhYmxlQ29udGV4dHMgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5maWx0ZXIoZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQhb0NvbnRleHQuaXNJbmFjdGl2ZSgpICYmXG5cdFx0XHRcdG9Db250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQ/LmdldExvY2FsQW5ub3RhdGlvbk1vZGVsKClcblx0XHRcdFx0XHQuZ2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0XHRcIkAkdWk1LmZlLnZpcnR1YWwucm91dGVOYXZpZ2FibGUtXCIgK1xuXHRcdFx0XHRcdFx0XHQodGFibGVEZWZpbml0aW9uLmFubm90YXRpb24ucm93Py5uYXZpZ2F0aW9uSW5mbyBhcyB7IHJvdXRlUGF0aD86IHN0cmluZyB9KT8ucm91dGVQYXRoLFxuXHRcdFx0XHRcdFx0b0NvbnRleHRcblx0XHRcdFx0XHQpICE9PSBmYWxzZVxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9zZWxlY3RlZENvbnRleHRzSW5jbHVkaW5nSW5hY3RpdmVcIiwgY29udGV4dE1lbnVTZWxlY3Rpb24pO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIiwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbmF2aWdhYmxlQ29udGV4dHNcIiwgbmF2aWdhYmxlQ29udGV4dHMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L251bWJlck9mTmF2aWdhYmxlQ29udGV4dHNcIiwgbmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGgpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L251bWJlck9mU2VsZWN0ZWRDb250ZXh0c0ZvckRlbGV0ZVwiLCBjb250ZXh0TWVudVNlbGVjdGlvbi5sZW5ndGgpO1xuXG5cdFx0aWYgKGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0LyogQWxpZ24gY29udGV4dCBtZW51IHdpdGggUlRBIGNoYW5nZXMgaW4gdGFibGUgdG9vbGJhciAqL1xuXHRcdFx0dGhpcy5hbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXModGFibGUpO1xuXHRcdH0gZWxzZSBpZiAob25seUluQWN0aXZlQ29udGV4dHNTZWxlY3RlZCAmJiBpc0lubGluZUNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Ly8gT25seSBEZWxldGUgaXMgdmlzaWJsZVxuXHRcdFx0dGhpcy5oaWRlQWxsQ29udGV4dE1lbnVBY3Rpb25zRXhjZXB0RGVsZXRlKHRhYmxlKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIHZpc2liaWxpdHkgb2YgdGhlIE1lbnVJdGVtIGZvciBDb2xsYWJvcmF0aW9uIE1hbmFnZXJcblx0XHR0aGlzLnNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5KHRhYmxlLCBhY3RpdmVTZWxlY3RlZENvbnRleHRzKTtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBjb250ZXh0IG1lbnUgY29udGFpbnMgb25seSBub3QgdmlzaWJsZSBpdGVtc1xuXHRcdC8vIGluIHRoYXQgY2FzZSBwcmV2ZW50IHRoZSBjb250ZXh0IG1lbnUgZnJvbSBvcGVuaW5nXG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblxuXHRcdGNvbnN0IHZpc2libGVNZW51SXRlbXMgPSBtZW51SXRlbXMuZmlsdGVyKChtZW51SXRlbSkgPT4gbWVudUl0ZW0uZ2V0VmlzaWJsZSgpKTtcblx0XHRpZiAodmlzaWJsZU1lbnVJdGVtcy5sZW5ndGggPT09IDApIHtcblx0XHRcdG9FdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblxuXHRcdC8vIEVuYWJsZW1lbnQgb2YgdGhlIEV4cGFuZC9Db2xsYXBzZSBidXR0b25zXG5cdFx0Y29uc3QgaXNFeHBhbmRhYmxlID0gY29udGV4dE1lbnVTZWxlY3Rpb24uc29tZSgoc2luZ2xlQ29udGV4dCkgPT4gc2luZ2xlQ29udGV4dC5pc0V4cGFuZGVkKCkgIT09IHVuZGVmaW5lZCk7XG5cdFx0Y29uc3QgaXNDb2xsYXBzYWJsZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKHNpbmdsZUNvbnRleHQpID0+IHNpbmdsZUNvbnRleHQuaXNFeHBhbmRlZCgpKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9pc0V4cGFuZGFibGVcIiwgaXNFeHBhbmRhYmxlKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9pc0NvbGxhcHNhYmxlXCIsIGlzQ29sbGFwc2FibGUpO1xuXG5cdFx0Ly8gQWN0aW9uIGVuYWJsZW1lbnQgZm9yIERlbGV0ZVxuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRyb2xJZFwiLCB0YWJsZS5nZXRJZCgpKTtcblx0XHRkZWxldGVIZWxwZXIudXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMoaW50ZXJuYWxNb2RlbENvbnRleHQsIGNvbnRleHRNZW51U2VsZWN0aW9uLCB0cnVlKTtcblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBJQk5cblx0XHRpZiAoIXRhYmxlLmRhdGEoXCJlbmFibGVBbmFseXRpY3NcIikpIHtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25BdmFpbGFibGVNYXAgPSB0YWJsZT8uZGF0YShcIm5hdmlnYXRpb25BdmFpbGFibGVNYXBcIik7XG5cdFx0XHRUYWJsZVJ1bnRpbWUuc2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uRW5hYmxlbWVudChpbnRlcm5hbE1vZGVsQ29udGV4dCwgbmF2aWdhdGlvbkF2YWlsYWJsZU1hcCwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cywgdHJ1ZSk7XG5cdFx0fVxuXG5cdFx0Ly8gQWN0aW9uIGVuYWJsZW1lbnQgZm9yIE1hc3MgRWRpdFxuXHRcdGNvbnN0IHVwZGF0YWJsZVByb3BlcnR5UGF0aCA9IHRhYmxlPy5kYXRhKFwidXBkYXRhYmxlUHJvcGVydHlQYXRoXCIpO1xuXHRcdGNvbnN0IGRyYWZ0ID0gdGFibGU/LmRhdGEoXCJkcmFmdFwiKTtcblx0XHRjb25zdCByZWFkT25seURyYWZ0RW5hYmxlZCA9IHRhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIgJiYgZHJhZnQgIT09IFwidW5kZWZpbmVkXCI7XG5cdFx0Y29uc3QgdXBkYXRhYmxlQ29udGV4dHM6IENvbnRleHRbXSA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc2VsZWN0ZWRDb250ZXh0IG9mIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMpIHtcblx0XHRcdGlmIChUYWJsZVJ1bnRpbWUuaXNVcGRhdGFibGVDb250ZXh0KHVwZGF0YWJsZVByb3BlcnR5UGF0aCwgc2VsZWN0ZWRDb250ZXh0LCByZWFkT25seURyYWZ0RW5hYmxlZCkpIHtcblx0XHRcdFx0dXBkYXRhYmxlQ29udGV4dHMucHVzaChzZWxlY3RlZENvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS91cGRhdGFibGVDb250ZXh0c1wiLCB1cGRhdGFibGVDb250ZXh0cyk7XG5cblx0XHRpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuY3JlYXRlRW5hYmxlbWVudCAmJiBjb250ZXh0TWVudVNlbGVjdGlvbi5sZW5ndGggPT09IDEpIHtcblx0XHRcdFRhYmxlUnVudGltZS5fdXBkYXRlQ3JlYXRlRW5hYmxlbWVudChcblx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmNyZWF0ZUVuYWJsZW1lbnQsXG5cdFx0XHRcdHRhYmxlLFxuXHRcdFx0XHRjb250ZXh0TWVudVNlbGVjdGlvblswXSxcblx0XHRcdFx0dGFibGVEZWZpbml0aW9uLmNvbnRyb2wubm9kZVR5cGUsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0VGFibGVSdW50aW1lLnVwZGF0ZUN1dENvcHlQYXN0ZUVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCksIHRhYmxlLCB0cnVlKTtcblx0XHRUYWJsZVJ1bnRpbWUudXBkYXRlTW92ZVVwRG93bkVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCksIHRhYmxlLCB0cnVlKTtcblxuXHRcdC8vIE90aGVyIGFjdGlvbiBlbmFibGVtZW50XG5cdFx0QWN0aW9uUnVudGltZS5zZXRBY3Rpb25FbmFibGVtZW50KFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRKU09OLnBhcnNlKHRhYmxlRGVmaW5pdGlvbi5vcGVyYXRpb25BdmFpbGFibGVNYXApLFxuXHRcdFx0YWN0aXZlU2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdFwidGFibGVcIixcblx0XHRcdHRydWUsXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0fVxuXG5cdGdldFJlbGV2YW50U2VsZWN0aW9uKHRhYmxlQ29udGV4dHM6IENvbnRleHRbXSwgY29udGV4dE1lbnVDb250ZXh0OiBDb250ZXh0KTogQ29udGV4dFtdIHtcblx0XHRsZXQgY29udGV4dE1lbnVTZWxlY3Rpb246IENvbnRleHRbXTtcblx0XHRpZiAodGFibGVDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TWVudUNvbnRleHQpKSB7XG5cdFx0XHRjb250ZXh0TWVudVNlbGVjdGlvbiA9IHRhYmxlQ29udGV4dHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHRNZW51U2VsZWN0aW9uID0gW2NvbnRleHRNZW51Q29udGV4dF0gYXMgQ29udGV4dFtdO1xuXHRcdH1cblx0XHRyZXR1cm4gY29udGV4dE1lbnVTZWxlY3Rpb247XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztNQXNCcUJBLGtCQUFrQjtJQUFBLFNBQUFBLG1CQUFBO01BQUEsS0FDNUJDLGlCQUFpQixHQUFHLEtBQUs7SUFBQTtJQUFBQyxRQUFBLEdBQUFGLGtCQUFBO0lBQUEsSUFBQUcsTUFBQSxHQUFBSCxrQkFBQSxDQUFBSSxTQUFBO0lBQUFELE1BQUEsQ0FFbkNFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLHVDQUF1QyxH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
|
|
@@ -368,8 +368,6 @@ export default class ContextMenuHandler implements IInterfaceWithMixin {
|
|
|
368
368
|
internalModelContext?.setProperty("contextmenu/selectedContextsIncludingInactive", contextMenuSelection);
|
|
369
369
|
internalModelContext?.setProperty("contextmenu/selectedContexts", activeSelectedContexts);
|
|
370
370
|
internalModelContext?.setProperty("contextmenu/navigableContexts", navigableContexts);
|
|
371
|
-
//reset number of selected contexts to ensure callback for custom enable handler
|
|
372
|
-
internalModelContext?.setProperty("contextmenu/numberOfSelectedContexts", -1);
|
|
373
371
|
internalModelContext?.setProperty("contextmenu/numberOfNavigableContexts", navigableContexts.length);
|
|
374
372
|
internalModelContext?.setProperty("contextmenu/numberOfSelectedContexts", activeSelectedContexts.length);
|
|
375
373
|
internalModelContext?.setProperty("contextmenu/numberOfSelectedContextsForDelete", contextMenuSelection.length);
|
|
@@ -443,6 +441,7 @@ export default class ContextMenuHandler implements IInterfaceWithMixin {
|
|
|
443
441
|
JSON.parse(tableDefinition.operationAvailableMap),
|
|
444
442
|
activeSelectedContexts,
|
|
445
443
|
"table",
|
|
444
|
+
true,
|
|
446
445
|
true
|
|
447
446
|
);
|
|
448
447
|
}
|
|
@@ -75,6 +75,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
75
75
|
// Since the path of the context has changed during activation, we need to update all collaboration locks
|
|
76
76
|
// that were using the transient path
|
|
77
77
|
collaborativeDraft.updateLocksForContextPath(transientPath, activatedContext.getPath());
|
|
78
|
+
|
|
79
|
+
// Load the properties that are part of the 'requestAtLeast' annotation from the table (if any)
|
|
80
|
+
const requestAtLeast = Object.keys(this.getTableDefinition().requestAtLeast ?? {});
|
|
81
|
+
if (requestAtLeast.length > 0) {
|
|
82
|
+
await activatedContext.requestProperty(requestAtLeast);
|
|
83
|
+
}
|
|
78
84
|
} catch (error) {
|
|
79
85
|
Log.error("Failed to activate new row -", error);
|
|
80
86
|
}
|
|
@@ -126,7 +132,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
126
132
|
|
|
127
133
|
/**
|
|
128
134
|
* Remove and recreate the empty rows in order to get any updated default values.
|
|
129
|
-
*
|
|
135
|
+
* @param this
|
|
136
|
+
* @returns Promise
|
|
130
137
|
*/;
|
|
131
138
|
_proto.updateEmptyRows = async function updateEmptyRows() {
|
|
132
139
|
const table = this.getContent();
|
|
@@ -318,7 +325,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
318
325
|
length: inlineCreationRowCount
|
|
319
326
|
}, () => ({})),
|
|
320
327
|
atEnd = table.data("tableType") !== "ResponsiveTable",
|
|
321
|
-
inactive = true,
|
|
322
328
|
view = CommonUtils.getTargetView(table),
|
|
323
329
|
controller = view.getController(),
|
|
324
330
|
editFlow = controller.editFlow;
|
|
@@ -329,7 +335,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
329
335
|
// during a live change, only 1 new document is created
|
|
330
336
|
dataForCreate,
|
|
331
337
|
// When editing an empty row, the new empty row is to be created just below and not above
|
|
332
|
-
recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate,
|
|
338
|
+
recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate, true, undefined, defaultValueFunctionData);
|
|
333
339
|
contexts?.forEach(async function (context) {
|
|
334
340
|
try {
|
|
335
341
|
await context.created();
|
|
@@ -351,4 +357,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
351
357
|
_exports = EmptyRowsHandler;
|
|
352
358
|
return _exports;
|
|
353
359
|
}, false);
|
|
354
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJhcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldFJvd0JpbmRpbmciLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJnZXRUYXJnZXRWaWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsIlByb21pc2UiLCJhbGwiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkiLCJjcmVhdGVkIiwicmVzb2x2ZSIsIm9uQWZ0ZXJDcmVhdGUiLCJjb250ZXh0IiwiZSIsIkxvZyIsIndhcm5pbmciLCJjb250ZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0Iiwic2VuZCIsImFjdGlvbiIsIkFjdGl2aXR5IiwiQ3JlYXRlIiwidXBkYXRlTG9ja3NGb3JDb250ZXh0UGF0aCIsImVycm9yIiwiZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwibGlzdEJpbmRpbmciLCJtb2RlbCIsImdldE1vZGVsIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldFJlc29sdmVkUGF0aCIsImxpc3RCaW5kaW5nT2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QiLCJ0YXJnZXRPYmplY3QiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzZXRFbXB0eVJvd3NFbmFibGVkIiwiZW5hYmxlbWVudCIsInNldFByb3BlcnR5IiwibmF2aWdhdGlvblBhdGgiLCJkYXRhIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJ0YWJsZURlZmF1bHRzUHJvbWlzZSIsInRoZW4iLCJ0YWJsZURlZmF1bHREYXRhIiwic2V0VXBFbXB0eVJvd3MiLCJjYXRjaCIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiY29udHJvbCIsImNyZWF0aW9uTW9kZSIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsInVpTW9kZWwiLCJnZXRQcm9wZXJ0eSIsIndhdGNoQmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImZuSGFuZGxlciIsImRldGFjaENoYW5nZSIsImRlc3Ryb3kiLCJhdHRhY2hDaGFuZ2UiLCJnZXRUYWJsZURlZmF1bHRzIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImVtcHR5Um93c0VuYWJsZWQiLCJyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyIsImdldElzRWRpdGFibGUiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwiaW5hY3RpdmVDb250ZXh0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJkZWxldGUiLCJnZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIiLCJmaWx0ZXIiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJhbm5vdGF0aW9uIiwibWlzc2luZ1Byb3BlcnRpZXMiLCJyZXF1aXJlZFByb3BlcnR5IiwiZ2V0T2JqZWN0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJtZXNzYWdlcyIsImRpc3BsYXllZENvbHVtbiIsIm1pc3NpbmdQcm9wZXJ0eSIsImVycm9yTWVzc2FnZSIsIm1pc3NpbmdDb2x1bW4iLCJjb2x1bW5zIiwidGFibGVDb2x1bW4iLCJyZWxhdGl2ZVBhdGgiLCJwcm9wZXJ0eUluZm9zIiwiaW5jbHVkZXMiLCJnZXRUZXh0IiwiZ2V0Q29sdW1ucyIsIm1kY0NvbHVtbiIsImdldFByb3BlcnR5S2V5IiwibmFtZSIsImdldEhlYWRlciIsImxhYmVsIiwicHVzaCIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwidHlwZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJ0ZWNobmljYWwiLCJwZXJzaXN0ZW50IiwidGVjaG5pY2FsRGV0YWlscyIsInRhYmxlSWQiLCJnZXRJZCIsImVtcHR5Um93TWVzc2FnZSIsInRhcmdldCIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiaW5hY3RpdmVDb250ZXh0cyIsInJlbW92ZU1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsIm1zZyIsImdldFRlY2huaWNhbERldGFpbHMiLCJjb250ZXh0TWF0Y2hlcyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJnZXRUYXJnZXRzIiwidmFsdWUiLCJyZWNyZWF0ZU9uZVJvdyIsIm5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIiwiZm9yY2VDcmVhdGVhdEVuZCIsImRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YSIsImlubGluZUNyZWF0aW9uUm93Q291bnQiLCJjcmVhdGluZ0VtcHR5Um93cyIsImZyb20iLCJhdEVuZCIsImluYWN0aXZlIiwiZGF0YUZvckNyZWF0ZSIsImNvbnRleHRzIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJvbkJlZm9yZUNyZWF0ZSIsImZvckVhY2giLCJjYW5jZWxlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRW1wdHlSb3dzSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERlZmF1bHRWYWx1ZXNGdW5jdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IFRyYW5zYWN0aW9uSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9UcmFuc2FjdGlvbkhlbHBlclwiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFubm90YXRpb25UYWJsZUNvbHVtbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9Db2x1bW5zXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgTURDQ29sdW1uIGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRFcnJvclR5cGUgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgeyB0eXBlIElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtcHR5Um93c0hhbmRsZXIgaW1wbGVtZW50cyBJSW50ZXJmYWNlV2l0aE1peGluIHtcblx0Y3JlYXRpbmdFbXB0eVJvd3M/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHRhYmxlJ3MgZGVmYXVsdCB2YWx1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgdGFibGVEZWZhdWx0c1Byb21pc2U/OiBQcm9taXNlPG9iamVjdD47XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdF9vbkZpZWxkTGl2ZUNoYW5nZSh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWVsZCA9IHVpNUV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRiaW5kaW5nID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdC8vIGNyZWF0aW9uIG9mIGEgbmV3IGluYWN0aXZlIHJvdyBpZiByZWxldmFudFxuXHRcdGlmIChiaW5kaW5nQ29udGV4dC5pc0luYWN0aXZlKCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcz8uZ2V0Q29udGVudCgpO1xuXHRcdFx0dGhpcz8uY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcgYXMgT0RhdGFMaXN0QmluZGluZywgdGFibGUsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0YXN5bmMgX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aXZhdGVkQ29udGV4dCA9IGFjdGl2YXRlRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKTtcblx0XHQvLyB3ZSBzdGFydCBieSBhc2tpbmcgdG8gcmVjcmVhdGUgYW4gZW1wdHkgcm93IChpZiBsaXZlIGNoYW5nZSBoYXMgYWxyZWFkeSBkb25lIGl0IHRoaXMgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0KVxuXHRcdC8vIGJ1dCB3ZSBkbyBub3Qgd2FpdFxuXHRcdHRoaXMuY3JlYXRlRW1wdHlSb3dzKGFjdGl2YXRlRXZlbnQuZ2V0U291cmNlKCksIHRoaXMuZ2V0Q29udGVudCgpLCB0cnVlKTtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cdFx0Y29uc3QgYmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVFbXB0eVJvdyhhY3RpdmF0ZWRDb250ZXh0KSkge1xuXHRcdFx0YWN0aXZhdGVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdHJhbnNpZW50UGF0aCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpLFxuXHRcdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKSxcblx0XHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCBQcm9taXNlLmFsbChbXG5cdFx0XHRcdFx0YXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0XHQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKClcblx0XHRcdFx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkoYmluZGluZy5nZXRQYXRoKCksIHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSksXG5cdFx0XHRcdFx0YWN0aXZhdGVkQ29udGV4dC5jcmVhdGVkPy4oKSA/PyBQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0XHRdKTtcblx0XHRcdFx0YXdhaXQgZWRpdEZsb3cub25BZnRlckNyZWF0ZSh7IGNvbnRleHQ6IGFjdGl2YXRlZENvbnRleHQgfSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy53YXJuaW5nKGBGYWlsZWQgdG8gYWN0aXZhdGUgY29udGV4dCAke2FjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpfWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb250ZW50ID0gYWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlRHJhZnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aXZlRHJhZnQ7XG5cdFx0XHQvLyBTZW5kIG5vdGlmaWNhdGlvbiB0byBvdGhlciB1c2VycyBvbmx5IGFmdGVyIHRoZSBjcmVhdGlvbiBoYXMgYmVlbiBmaW5hbGl6ZWRcblx0XHRcdGNvbGxhYm9yYXRpdmVEcmFmdC5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5DcmVhdGUsIGNvbnRlbnQgfSk7XG5cdFx0XHQvLyBTaW5jZSB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCBoYXMgY2hhbmdlZCBkdXJpbmcgYWN0aXZhdGlvbiwgd2UgbmVlZCB0byB1cGRhdGUgYWxsIGNvbGxhYm9yYXRpb24gbG9ja3Ncblx0XHRcdC8vIHRoYXQgd2VyZSB1c2luZyB0aGUgdHJhbnNpZW50IHBhdGhcblx0XHRcdGNvbGxhYm9yYXRpdmVEcmFmdC51cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoKHRyYW5zaWVudFBhdGgsIGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiRmFpbGVkIHRvIGFjdGl2YXRlIG5ldyByb3cgLVwiLCBlcnJvciBhcyBFcnJvcik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgRGVmYXVsdFZhbHVlcyBmdW5jdGlvbi5cblx0ICogQHBhcmFtIGxpc3RCaW5kaW5nIFRoZSBjdXJyZW50IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBUaGUgRGVmYXVsdFZhbHVlcyBmdW5jdGlvbiAob3IgdW5kZWZpbmVkIGlmIG5vIGZ1bmN0aW9uIGlzIGZvdW5kKVxuXHQgKi9cblx0Z2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nKTogRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtb2RlbCA9IGxpc3RCaW5kaW5nLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gbW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQobGlzdEJpbmRpbmcuZ2V0UmVzb2x2ZWRQYXRoKCkgYXMgc3RyaW5nKTtcblx0XHRjb25zdCBsaXN0QmluZGluZ09iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YUNvbnRleHQpO1xuXG5cdFx0Y29uc3QgZGVmYXVsdEZ1bmNPblRhcmdldE9iamVjdCA9IChsaXN0QmluZGluZ09iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSB8IEVudGl0eVNldCkuYW5ub3RhdGlvbnMuQ29tbW9uXG5cdFx0XHQ/LkRlZmF1bHRWYWx1ZXNGdW5jdGlvbjtcblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0RW50aXR5U2V0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0IHwgdW5kZWZpbmVkKT8uYW5ub3RhdGlvbnMuQ29tbW9uXG5cdFx0XHQ/LkRlZmF1bHRWYWx1ZXNGdW5jdGlvbjtcblxuXHRcdHJldHVybiBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID8/IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQ7XG5cdH1cblxuXHQvKipcblx0ICogRW1wdHlSb3dzRW5hYmxlZCBzZXR0ZXIuXG5cdCAqIEBwYXJhbSBlbmFibGVtZW50XG5cdCAqL1xuXHRzZXRFbXB0eVJvd3NFbmFibGVkKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgZW5hYmxlbWVudDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbXB0eVJvd3NFbmFibGVkXCIsIGVuYWJsZW1lbnQpO1xuXHRcdGNvbnN0IG5hdmlnYXRpb25QYXRoID0gdGhpcy5nZXRDb250ZW50KCkuZGF0YSgpLm5hdmlnYXRpb25QYXRoLFxuXHRcdFx0YXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0Q29udGVudCgpKTtcblx0XHRpZiAoZW5hYmxlbWVudCkge1xuXHRcdFx0Y29uc3QgbGlzdEJpbmRpbmcgPSB0aGlzLmdldENvbnRlbnQoKS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRjb25zdCBkZWZhdWx0VmFsdWVzRnVuY3Rpb24gPSBsaXN0QmluZGluZz8uZ2V0UmVzb2x2ZWRQYXRoKCkgPyB0aGlzLmdldERlZmF1bHRWYWx1ZXNGdW5jdGlvbihsaXN0QmluZGluZykgOiB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoZGVmYXVsdFZhbHVlc0Z1bmN0aW9uKSB7XG5cdFx0XHRcdGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5yZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoLCB0aGlzLnVwZGF0ZUVtcHR5Um93cy5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLmRlcmVnaXN0ZXJUYXJnZXRDYWxsYmFjayhuYXZpZ2F0aW9uUGF0aCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZhdWx0c1Byb21pc2UpIHtcblx0XHRcdHRoaXMudGFibGVEZWZhdWx0c1Byb21pc2Vcblx0XHRcdFx0LnRoZW4oKHRhYmxlRGVmYXVsdERhdGEpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNldFVwRW1wdHlSb3dzKHRoaXMuZ2V0Q29udGVudCgpLCBmYWxzZSwgdGFibGVEZWZhdWx0RGF0YSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRhYmxlRGVmYXVsdERhdGE7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIHVwIGVtcHR5IHJvd3M6XCIsIGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0VXBFbXB0eVJvd3ModGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYW5kIHJlY3JlYXRlIHRoZSBlbXB0eSByb3dzIGluIG9yZGVyIHRvIGdldCBhbnkgdXBkYXRlZCBkZWZhdWx0IHZhbHVlcy5cblx0ICpcblx0ICovXG5cdGFzeW5jIHVwZGF0ZUVtcHR5Um93cyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0Y29uc3QgYmluZGluZ0hlYWRlckNvbnRleHQgPSBiaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblx0XHRpZiAoYmluZGluZyAmJiBiaW5kaW5nLmlzUmVzb2x2ZWQoKSAmJiBiaW5kaW5nLmlzTGVuZ3RoRmluYWwoKSAmJiBiaW5kaW5nSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBiaW5kaW5nSGVhZGVyQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHR0aGlzLl9kZWxldGVFbXB0eVJvd3MoYmluZGluZywgY29udGV4dFBhdGgpO1xuXHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVFbXB0eVJvd3MoYmluZGluZywgdGFibGUpO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29tbW9uIGNoZWNrcyBmb3IgdGFibGUgZGVmYXVsdHMgYW5kIGVtcHR5IHJvd3Mgc2V0dXAuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmVpbmcgcHJvY2Vzc2VkXG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIG9iamVjdCBpZiBjaGVja3MgcGFzcywgb3IgdW5kZWZpbmVkIGlmIGNoZWNrcyBmYWlsXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIF92YWxpZGF0ZUFuZFJldHJpZXZlQmluZGluZyhcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0dGFibGU6IE1EQ1RhYmxlXG5cdCk6IFByb21pc2U8T0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZD4ge1xuXHRcdGlmICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w/LmNyZWF0aW9uTW9kZSAhPT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93cykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCB1aU1vZGVsID0gdGFibGUuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCF1aU1vZGVsKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICh1aU1vZGVsLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVQZW5kaW5nXCIpKSB7XG5cdFx0XHQvLyBXYWl0IHVudGlsIHRoZSBlZGl0IG1vZGUgY29tcHV0YXRpb24gaXMgY29tcGxldGVcblx0XHRcdGNvbnN0IHdhdGNoQmluZGluZyA9IHVpTW9kZWwuYmluZFByb3BlcnR5KFwiL2lzRWRpdGFibGVQZW5kaW5nXCIpO1xuXHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0Y29uc3QgZm5IYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHdhdGNoQmluZGluZy5kZXRhY2hDaGFuZ2UoZm5IYW5kbGVyKTtcblx0XHRcdFx0XHR3YXRjaEJpbmRpbmcuZGVzdHJveSgpO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0d2F0Y2hCaW5kaW5nLmF0dGFjaENoYW5nZShmbkhhbmRsZXIpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKSBhcyBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKCFiaW5kaW5nKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRyZXR1cm4gYmluZGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB0YWJsZSBkZWZhdWx0cyBieSB2YWxpZGF0aW5nIGFuZCByZXRyaWV2aW5nIHRoZSBiaW5kaW5nLCB0aGVuIGZldGNoaW5nIGRhdGEgZnJvbSB0aGUgRGVmYXVsdFZhbHVlRnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmVpbmcgcHJvY2Vzc2VkXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWZhdWx0IHZhbHVlcywgb3IgdW5kZWZpbmVkIGlmIG5vIGJpbmRpbmcgaXMgYXZhaWxhYmxlIG9yIHRoZSBEZWZhdWx0VmFsdWVGdW5jdGlvbiByZXR1cm5zIG5vIGRhdGFcblx0ICovXG5cdGFzeW5jIGdldFRhYmxlRGVmYXVsdHModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCB0YWJsZTogTURDVGFibGUpOiBQcm9taXNlPG9iamVjdCB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IGJpbmRpbmcgPSBhd2FpdCB0aGlzLl92YWxpZGF0ZUFuZFJldHJpZXZlQmluZGluZyh0YWJsZSk7XG5cdFx0aWYgKCFiaW5kaW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGFibGUpKTtcblx0XHRyZXR1cm4gYXBwQ29tcG9uZW50ID8gVHJhbnNhY3Rpb25IZWxwZXIuZ2V0RGF0YUZyb21EZWZhdWx0VmFsdWVGdW5jdGlvbihiaW5kaW5nLCBhcHBDb21wb25lbnQpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0YXN5bmMgc2V0VXBFbXB0eVJvd3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRjcmVhdGVCdXR0b25XYXNQcmVzc2VkID0gZmFsc2UsXG5cdFx0dGFibGVEZWZhdWx0RGF0YSA9IHt9XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGJpbmRpbmcgPSBhd2FpdCB0aGlzLl92YWxpZGF0ZUFuZFJldHJpZXZlQmluZGluZyh0YWJsZSk7XG5cdFx0aWYgKCFiaW5kaW5nKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGJpbmRpbmdIZWFkZXJDb250ZXh0ID0gYmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0aWYgKGJpbmRpbmcgJiYgYmluZGluZy5pc1Jlc29sdmVkKCkgJiYgYmluZGluZy5pc0xlbmd0aEZpbmFsKCkgJiYgYmluZGluZ0hlYWRlckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gYmluZGluZ0hlYWRlckNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0aWYgKCF0aGlzLmVtcHR5Um93c0VuYWJsZWQpIHtcblx0XHRcdFx0dGhpcy5yZW1vdmVFbXB0eVJvd3NNZXNzYWdlcygpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fZGVsZXRlRW1wdHlSb3dzKGJpbmRpbmcsIGNvbnRleHRQYXRoKTtcblx0XHRcdH1cblx0XHRcdGlmICghQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZSh0YWJsZSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHR0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w/LmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUgJiZcblx0XHRcdFx0IXRhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwicGFnZUludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcImNyZWF0ZU1vZGVcIikgJiZcblx0XHRcdFx0IWNyZWF0ZUJ1dHRvbldhc1ByZXNzZWRcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbmFjdGl2ZUNvbnRleHQgPSBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbmQoZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdFx0Ly8gd2hlbiB0aGlzIGlzIGNhbGxlZCBmcm9tIGNvbnRyb2xsZXIgY29kZSB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgaW5hY3RpdmUgY29udGV4dHMgYXJlIHN0aWxsIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRhYmxlIGNvbnRleHRcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuaXNJbmFjdGl2ZSgpICYmIGNvbnRleHQuZ2V0UGF0aCgpLnN0YXJ0c1dpdGgoY29udGV4dFBhdGgpO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoIWluYWN0aXZlQ29udGV4dCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKCk7XG5cdFx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcsIHRhYmxlLCBmYWxzZSwgdW5kZWZpbmVkLCBmYWxzZSwgdGFibGVEZWZhdWx0RGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgaW5hY3RpdmUgcm93cyBmcm9tIHRoZSB0YWJsZSBsaXN0QmluZGluZy5cblx0ICogQHBhcmFtIGJpbmRpbmdcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoXG5cdCAqL1xuXHRfZGVsZXRlRW1wdHlSb3dzKGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIGNvbnRleHRQYXRoOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IGNvbnRleHQgb2YgYmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKSkge1xuXHRcdFx0aWYgKGNvbnRleHQuaXNJbmFjdGl2ZSgpICYmIGNvbnRleHQuZ2V0UGF0aCgpLnN0YXJ0c1dpdGgoY29udGV4dFBhdGgpKSB7XG5cdFx0XHRcdGNvbnRleHQuZGVsZXRlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGluYWN0aXZlIGNvbnRleHRzIHdpdGhpbiB0aGUgbGlzdCBiaW5kaW5nLlxuXHQgKiBAcGFyYW0gYmluZGluZyBEYXRhIGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGluYWN0aXZlIGNvbnRleHRzXG5cdCAqL1xuXHRnZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIoYmluZGluZzogT0RhdGFMaXN0QmluZGluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkuZmlsdGVyKChjb250ZXh0KSA9PiBjb250ZXh0LmlzSW5hY3RpdmUoKSkubGVuZ3RoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGVtcHR5IHJvdy5cblx0ICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGVtcHR5IHJvd1xuXHQgKiBAcmV0dXJucyBUaGUgdmFsaWRhdGlvbiBzdGF0dXNcblx0ICovXG5cdHZhbGlkYXRlRW1wdHlSb3codGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcmVxdWlyZWRQcm9wZXJ0aWVzID0gdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5hbm5vdGF0aW9uLnJlcXVpcmVkUHJvcGVydGllcztcblx0XHRpZiAocmVxdWlyZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoY29udGV4dCk7XG5cdFx0XHRjb25zdCBtaXNzaW5nUHJvcGVydGllcyA9IHJlcXVpcmVkUHJvcGVydGllcy5maWx0ZXIoKHJlcXVpcmVkUHJvcGVydHkpID0+ICFjb250ZXh0LmdldE9iamVjdChyZXF1aXJlZFByb3BlcnR5KSk7XG5cdFx0XHRpZiAobWlzc2luZ1Byb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlczogTWVzc2FnZVtdID0gW107XG5cdFx0XHRcdGxldCBkaXNwbGF5ZWRDb2x1bW46IE1EQ0NvbHVtbiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0Zm9yIChjb25zdCBtaXNzaW5nUHJvcGVydHkgb2YgbWlzc2luZ1Byb3BlcnRpZXMpIHtcblx0XHRcdFx0XHRsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cdFx0XHRcdFx0Y29uc3QgbWlzc2luZ0NvbHVtbiA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29sdW1ucy5maW5kKFxuXHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uKSA9PlxuXHRcdFx0XHRcdFx0XHQodGFibGVDb2x1bW4gYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uKS5yZWxhdGl2ZVBhdGggPT09IG1pc3NpbmdQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0XHQodGFibGVDb2x1bW4ucHJvcGVydHlJbmZvcyAmJiB0YWJsZUNvbHVtbi5wcm9wZXJ0eUluZm9zLmluY2x1ZGVzKG1pc3NpbmdQcm9wZXJ0eSkpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGlmICghbWlzc2luZ0NvbHVtbikge1xuXHRcdFx0XHRcdFx0ZXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZXCIsIFttaXNzaW5nUHJvcGVydHldKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGlzcGxheWVkQ29sdW1uID0gdGhpcy5nZXRDb250ZW50KClcblx0XHRcdFx0XHRcdFx0LmdldENvbHVtbnMoKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgobWRjQ29sdW1uKSA9PiBtZGNDb2x1bW4uZ2V0UHJvcGVydHlLZXkoKSA9PT0gbWlzc2luZ0NvbHVtbi5uYW1lKTtcblx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXllZENvbHVtbiA/IFwiTV9UQUJMRV9FTVBUWVJPV19NQU5EQVRPUllcIiA6IFwiTV9UQUJMRV9FTVBUWVJPV19NQU5EQVRPUllfSElEREVOXCIsXG5cdFx0XHRcdFx0XHRcdFtkaXNwbGF5ZWRDb2x1bW4/LmdldEhlYWRlcigpIHx8IG1pc3NpbmdDb2x1bW4ubGFiZWxdXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG1lc3NhZ2VzLnB1c2goXG5cdFx0XHRcdFx0XHRuZXcgTWVzc2FnZSh7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0cHJvY2Vzc29yOiB0aGlzLmdldE1vZGVsKCksXG5cdFx0XHRcdFx0XHRcdHR5cGU6IE1lc3NhZ2VUeXBlLkVycm9yLFxuXHRcdFx0XHRcdFx0XHR0ZWNobmljYWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRwZXJzaXN0ZW50OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR0ZWNobmljYWxEZXRhaWxzOiB7XG5cdFx0XHRcdFx0XHRcdFx0dGFibGVJZDogdGhpcy5nZXRDb250ZW50KCkuZ2V0SWQoKSwgLy8gTmVlZCB0byBkbyBpdCBzaW5jZSBoYW5kbGVDcmVhdGVBY3RpdmF0ZSBjYW4gYmUgdHJpZ2dlcmVkIG11bHRpcGxlIHRpbWVzIChleHRyYSBwcm9wZXJ0aWVzIHNldCBieSB2YWx1ZSBoZWxwKSBiZWZvcmUgY29udHJvbElkcyBhcmUgc2V0IG9uIHRoZSBtZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0ZW1wdHlSb3dNZXNzYWdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG1pc3NpbmdDb2x1bW46IGRpc3BsYXllZENvbHVtbiA/IHVuZGVmaW5lZCA6IG1pc3NpbmdQcm9wZXJ0eSAvLyBuZWVkZWQgdG8gY2hhbmdlIHRoZSBtZXNzYWdlU3RyaXAgbWVzc2FnZVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6IGAke2NvbnRleHQ/LmdldFBhdGgoKX0vJHttaXNzaW5nUHJvcGVydHl9YFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdE1lc3NhZ2luZy5hZGRNZXNzYWdlcyhtZXNzYWdlcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgbWVzc2FnZXMgcmVsYXRlZCB0byB0aGUgZW1wdHkgcm93cy5cblx0ICogQHBhcmFtIGluYWN0aXZlQ29udGV4dHMgVGhlIGNvbnRleHRzIG9mIHRoZSBlbXB0eSByb3dzLCBpZiBub3QgcHJvdmlkZWQsIHRoZSBtZXNzYWdlcyBvZiBhbGwgZW1wdHkgcm93cyBhcmUgcmVtb3ZlZFxuXHQgKi9cblx0cmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBpbmFjdGl2ZUNvbnRleHRzPzogQ29udGV4dCB8IENvbnRleHRbXSk6IHZvaWQge1xuXHRcdE1lc3NhZ2luZy5yZW1vdmVNZXNzYWdlcyhcblx0XHRcdChNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpIGFzIE1lc3NhZ2VbXSkuZmlsdGVyKChtc2cpID0+IHtcblx0XHRcdFx0Y29uc3QgdGVjaG5pY2FsRGV0YWlscyA9IChtc2cuZ2V0VGVjaG5pY2FsRGV0YWlscygpIHx8IHt9KSBhcyB7IHRhYmxlSWQ/OiBzdHJpbmc7IGVtcHR5Um93TWVzc2FnZT86IGJvb2xlYW4gfTtcblxuXHRcdFx0XHQvLyBDaGVjayBpZiBtc2cgdGFyZ2V0IHN0YXJ0cyB3aXRoIGFueSBwYXRoIGluIHRoZSBpbmFjdGl2ZUNvbnRleHQgYXJyYXlcblx0XHRcdFx0Y29uc3QgY29udGV4dE1hdGNoZXMgPSBBcnJheS5pc0FycmF5KGluYWN0aXZlQ29udGV4dHMpXG5cdFx0XHRcdFx0PyBpbmFjdGl2ZUNvbnRleHRzLnNvbWUoKGNvbnRleHQpID0+IG1zZy5nZXRUYXJnZXRzKCkuc29tZSgodmFsdWUpID0+IHZhbHVlLnN0YXJ0c1dpdGgoY29udGV4dC5nZXRQYXRoKCkpKSlcblx0XHRcdFx0XHQ6ICFpbmFjdGl2ZUNvbnRleHRzIHx8IG1zZy5nZXRUYXJnZXRzKCkuc29tZSgodmFsdWUpID0+IHZhbHVlLnN0YXJ0c1dpdGgoaW5hY3RpdmVDb250ZXh0cy5nZXRQYXRoKCkpKTtcblxuXHRcdFx0XHRyZXR1cm4gY29udGV4dE1hdGNoZXMgJiYgdGVjaG5pY2FsRGV0YWlscy5lbXB0eVJvd01lc3NhZ2UgJiYgdGVjaG5pY2FsRGV0YWlscy50YWJsZUlkID09PSB0aGlzLmdldENvbnRlbnQoKS5nZXRJZCgpO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0aW9uIG9mIGluYWN0aXZlIHJvd3MgZm9yIHRoZSB0YWJsZSBpbiBjcmVhdGlvbiBtb2RlIFwiSW5saW5lQ3JlYXRpb25Sb3dzXCIuXG5cdCAqIEBwYXJhbSBiaW5kaW5nIERhdGEgbGlzdCBiaW5kaW5nXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmVpbmcgZWRpdGVkXG5cdCAqIEBwYXJhbSByZWNyZWF0ZU9uZVJvdyBgdHJ1ZWAgaWYgdGhlIGNhbGwgaXMgdG8gcmVjcmVhdGUgYW4gZW1wdHlMaW5lXG5cdCAqIEBwYXJhbSBuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZSBOdW1iZXIgb2YgbmV3IGluYWN0aXZlIHJvd3MgdG8gYmUgY3JlYXRlZFxuXHQgKiBAcGFyYW0gZm9yY2VDcmVhdGVhdEVuZCBgdHJ1ZWAgaWYgdGhlIG5ldyByb3cgaXMgdG8gYmUgY3JlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSB0YWJsZVxuXHQgKiBAcGFyYW0gZGVmYXVsdFZhbHVlRnVuY3Rpb25EYXRhIERlZmF1bHQgdmFsdWVzIHJldHJpZXZlZCBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gdG8gYmUgYXBwbGllZCB0byB0aGUgbmV3IHJvd3Ncblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgY29udGV4dHMgb3Igdm9pZCBpZiB0aGUgY3JlYXRpb24gZmFpbGVkXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVFbXB0eVJvd3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdHJlY3JlYXRlT25lUm93ID0gZmFsc2UsXG5cdFx0bmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGU/OiBudW1iZXIsXG5cdFx0Zm9yY2VDcmVhdGVhdEVuZCA9IGZhbHNlLFxuXHRcdGRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YT86IG9iamVjdCB8IHVuZGVmaW5lZFxuXHQpOiBQcm9taXNlPHZvaWQgfCBDb250ZXh0W10+IHtcblx0XHRjb25zdCBpbmxpbmVDcmVhdGlvblJvd0NvdW50ID0gbmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUgPz8gKHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uaW5saW5lQ3JlYXRpb25Sb3dDb3VudCB8fCAxKTtcblx0XHRpZiAodGhpcy5jcmVhdGluZ0VtcHR5Um93cyB8fCB0aGlzLmdldEluYWN0aXZlQ29udGV4dE51bWJlcihiaW5kaW5nKSA+IGlubGluZUNyZWF0aW9uUm93Q291bnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgZGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGlubGluZUNyZWF0aW9uUm93Q291bnQgfSwgKCkgPT4gKHt9KSksXG5cdFx0XHRhdEVuZCA9IHRhYmxlLmRhdGEoXCJ0YWJsZVR5cGVcIikgIT09IFwiUmVzcG9uc2l2ZVRhYmxlXCIsXG5cdFx0XHRpbmFjdGl2ZSA9IHRydWUsXG5cdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0YWJsZSksXG5cdFx0XHRjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cblx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YUZvckNyZWF0ZSA9IHJlY3JlYXRlT25lUm93ID8gW3t9XSA6IGRhdGE7XG5cdFx0XHRjb25zdCBjb250ZXh0cyA9IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRiaW5kaW5nLFxuXHRcdFx0XHQvLyBkdXJpbmcgYSBsaXZlIGNoYW5nZSwgb25seSAxIG5ldyBkb2N1bWVudCBpcyBjcmVhdGVkXG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUsXG5cdFx0XHRcdC8vIFdoZW4gZWRpdGluZyBhbiBlbXB0eSByb3csIHRoZSBuZXcgZW1wdHkgcm93IGlzIHRvIGJlIGNyZWF0ZWQganVzdCBiZWxvdyBhbmQgbm90IGFib3ZlXG5cdFx0XHRcdHJlY3JlYXRlT25lUm93IHx8IGZvcmNlQ3JlYXRlYXRFbmQgPyB0cnVlIDogYXRFbmQsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93Lm9uQmVmb3JlQ3JlYXRlLFxuXHRcdFx0XHRpbmFjdGl2ZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGFcblx0XHRcdCk7XG5cdFx0XHRjb250ZXh0cz8uZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGF3YWl0IGNvbnRleHQuY3JlYXRlZCgpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGlmICghKGVycm9yIGFzIENvbnRleHRFcnJvclR5cGUpLmNhbmNlbGVkKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGNvbnRleHRzO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMuY3JlYXRpbmdFbXB0eVJvd3MgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7TUF3QnFCQSxnQkFBZ0I7SUFBQSxTQUFBQSxpQkFBQTtJQUFBQyxRQUFBLEdBQUFELGdCQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixnQkFBQSxDQUFBRyxTQUFBO0lBR3BDO0FBQ0Q7QUFDQTtJQUZDRCxNQUFBLENBS0FFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLGtCQUFrQixHQUFsQixTQUFBQSxrQkFBa0JBLENBQXVDQyxRQUErQixFQUFRO01BQy9GLE1BQU1DLEtBQUssR0FBR0QsUUFBUSxDQUFDRSxTQUFTLENBQUMsQ0FBQztRQUNqQ0MsY0FBYyxHQUFHRixLQUFLLENBQUNHLGlCQUFpQixDQUFDLENBQVk7UUFDckRDLE9BQU8sR0FBR0YsY0FBYyxDQUFDRyxVQUFVLENBQUMsQ0FBQztNQUN0QztNQUNBLElBQUlILGNBQWMsQ0FBQ0ksVUFBVSxDQUFDLENBQUMsRUFBRTtRQUNoQyxNQUFNQyxLQUFLLEdBQUcsSUFBSSxFQUFFQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxJQUFJLEVBQUVDLGVBQWUsQ0FBQ0wsT0FBTyxFQUFzQkcsS0FBSyxFQUFFLElBQUksQ0FBQztNQUNoRTtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFB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
|
|
360
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJhcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldFJvd0JpbmRpbmciLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJnZXRUYXJnZXRWaWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsIlByb21pc2UiLCJhbGwiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkiLCJjcmVhdGVkIiwicmVzb2x2ZSIsIm9uQWZ0ZXJDcmVhdGUiLCJjb250ZXh0IiwiZSIsIkxvZyIsIndhcm5pbmciLCJjb250ZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0Iiwic2VuZCIsImFjdGlvbiIsIkFjdGl2aXR5IiwiQ3JlYXRlIiwidXBkYXRlTG9ja3NGb3JDb250ZXh0UGF0aCIsInJlcXVlc3RBdExlYXN0IiwiT2JqZWN0Iiwia2V5cyIsImdldFRhYmxlRGVmaW5pdGlvbiIsImxlbmd0aCIsInJlcXVlc3RQcm9wZXJ0eSIsImVycm9yIiwiZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwibGlzdEJpbmRpbmciLCJtb2RlbCIsImdldE1vZGVsIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldFJlc29sdmVkUGF0aCIsImxpc3RCaW5kaW5nT2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QiLCJ0YXJnZXRPYmplY3QiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzZXRFbXB0eVJvd3NFbmFibGVkIiwiZW5hYmxlbWVudCIsInNldFByb3BlcnR5IiwibmF2aWdhdGlvblBhdGgiLCJkYXRhIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJ0YWJsZURlZmF1bHRzUHJvbWlzZSIsInRoZW4iLCJ0YWJsZURlZmF1bHREYXRhIiwic2V0VXBFbXB0eVJvd3MiLCJjYXRjaCIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nIiwiY29udHJvbCIsImNyZWF0aW9uTW9kZSIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsInVpTW9kZWwiLCJnZXRQcm9wZXJ0eSIsIndhdGNoQmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImZuSGFuZGxlciIsImRldGFjaENoYW5nZSIsImRlc3Ryb3kiLCJhdHRhY2hDaGFuZ2UiLCJnZXRUYWJsZURlZmF1bHRzIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImVtcHR5Um93c0VuYWJsZWQiLCJyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyIsImdldElzRWRpdGFibGUiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwiaW5hY3RpdmVDb250ZXh0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJkZWxldGUiLCJnZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIiLCJmaWx0ZXIiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJhbm5vdGF0aW9uIiwibWlzc2luZ1Byb3BlcnRpZXMiLCJyZXF1aXJlZFByb3BlcnR5IiwiZ2V0T2JqZWN0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJtZXNzYWdlcyIsImRpc3BsYXllZENvbHVtbiIsIm1pc3NpbmdQcm9wZXJ0eSIsImVycm9yTWVzc2FnZSIsIm1pc3NpbmdDb2x1bW4iLCJjb2x1bW5zIiwidGFibGVDb2x1bW4iLCJyZWxhdGl2ZVBhdGgiLCJwcm9wZXJ0eUluZm9zIiwiaW5jbHVkZXMiLCJnZXRUZXh0IiwiZ2V0Q29sdW1ucyIsIm1kY0NvbHVtbiIsImdldFByb3BlcnR5S2V5IiwibmFtZSIsImdldEhlYWRlciIsImxhYmVsIiwicHVzaCIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwidHlwZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJ0ZWNobmljYWwiLCJwZXJzaXN0ZW50IiwidGVjaG5pY2FsRGV0YWlscyIsInRhYmxlSWQiLCJnZXRJZCIsImVtcHR5Um93TWVzc2FnZSIsInRhcmdldCIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiaW5hY3RpdmVDb250ZXh0cyIsInJlbW92ZU1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsIm1zZyIsImdldFRlY2huaWNhbERldGFpbHMiLCJjb250ZXh0TWF0Y2hlcyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJnZXRUYXJnZXRzIiwidmFsdWUiLCJyZWNyZWF0ZU9uZVJvdyIsIm5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIiwiZm9yY2VDcmVhdGVhdEVuZCIsImRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YSIsImlubGluZUNyZWF0aW9uUm93Q291bnQiLCJjcmVhdGluZ0VtcHR5Um93cyIsImZyb20iLCJhdEVuZCIsImRhdGFGb3JDcmVhdGUiLCJjb250ZXh0cyIsImNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzIiwib25CZWZvcmVDcmVhdGUiLCJmb3JFYWNoIiwiY2FuY2VsZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVtcHR5Um93c0hhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIElJbnRlcmZhY2VXaXRoTWl4aW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBUcmFuc2FjdGlvbkhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvVHJhbnNhY3Rpb25IZWxwZXJcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uVGFibGVDb2x1bW4gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvQ29sdW1uc1wiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIE1EQ0NvbHVtbiBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0RXJyb3JUeXBlIH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHsgdHlwZSBJVGFibGVCbG9jayB9IGZyb20gXCIuLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbXB0eVJvd3NIYW5kbGVyIGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdGNyZWF0aW5nRW1wdHlSb3dzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSB0YWJsZSdzIGRlZmF1bHQgdmFsdWVzLlxuXHQgKi9cblx0cHVibGljIHRhYmxlRGVmYXVsdHNQcm9taXNlPzogUHJvbWlzZTxvYmplY3Q+O1xuXG5cdHNldHVwTWl4aW4oX2Jhc2VDbGFzczogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHQvLyBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IGludGVyZmFjZSBJSW50ZXJmYWNlV2l0aE1peGluXG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uRmllbGRMaXZlQ2hhbmdlIGV2ZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIG9uRmllbGRMaXZlQ2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRfb25GaWVsZExpdmVDaGFuZ2UodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCB1aTVFdmVudDogVUk1RXZlbnQ8e30sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Y29uc3QgZmllbGQgPSB1aTVFdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGJpbmRpbmdDb250ZXh0ID0gZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0LFxuXHRcdFx0YmluZGluZyA9IGJpbmRpbmdDb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHQvLyBjcmVhdGlvbiBvZiBhIG5ldyBpbmFjdGl2ZSByb3cgaWYgcmVsZXZhbnRcblx0XHRpZiAoYmluZGluZ0NvbnRleHQuaXNJbmFjdGl2ZSgpKSB7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHRoaXM/LmdldENvbnRlbnQoKTtcblx0XHRcdHRoaXM/LmNyZWF0ZUVtcHR5Um93cyhiaW5kaW5nIGFzIE9EYXRhTGlzdEJpbmRpbmcsIHRhYmxlLCB0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3JlYXRlQWN0aXZhdGUgZXZlbnQgZnJvbSB0aGUgT0RhdGFMaXN0QmluZGluZy5cblx0ICogQHBhcmFtIGFjdGl2YXRlRXZlbnQgVGhlIGV2ZW50IHNlbnQgYnkgdGhlIGJpbmRpbmdcblx0ICovXG5cdGFzeW5jIF9oYW5kbGVDcmVhdGVBY3RpdmF0ZShcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0YWN0aXZhdGVFdmVudDogVUk1RXZlbnQ8eyBjb250ZXh0OiBDb250ZXh0IH0sIE9EYXRhTGlzdEJpbmRpbmc+XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGFjdGl2YXRlZENvbnRleHQgPSBhY3RpdmF0ZUV2ZW50LmdldFBhcmFtZXRlcihcImNvbnRleHRcIik7XG5cdFx0Ly8gd2Ugc3RhcnQgYnkgYXNraW5nIHRvIHJlY3JlYXRlIGFuIGVtcHR5IHJvdyAoaWYgbGl2ZSBjaGFuZ2UgaGFzIGFscmVhZHkgZG9uZSBpdCB0aGlzIHdvbid0IGhhdmUgYW55IGVmZmVjdClcblx0XHQvLyBidXQgd2UgZG8gbm90IHdhaXRcblx0XHR0aGlzLmNyZWF0ZUVtcHR5Um93cyhhY3RpdmF0ZUV2ZW50LmdldFNvdXJjZSgpLCB0aGlzLmdldENvbnRlbnQoKSwgdHJ1ZSk7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGFibGUpO1xuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0aWYgKCF0aGlzLnZhbGlkYXRlRW1wdHlSb3coYWN0aXZhdGVkQ29udGV4dCkpIHtcblx0XHRcdGFjdGl2YXRlRXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHRyYW5zaWVudFBhdGggPSBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0dmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyksXG5cdFx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdFx0ZWRpdEZsb3cgPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRcdGFwcENvbXBvbmVudFxuXHRcdFx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdFx0XHQucmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5KGJpbmRpbmcuZ2V0UGF0aCgpLCB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCkpLFxuXHRcdFx0XHRcdGFjdGl2YXRlZENvbnRleHQuY3JlYXRlZD8uKCkgPz8gUHJvbWlzZS5yZXNvbHZlKClcblx0XHRcdFx0XSk7XG5cdFx0XHRcdGF3YWl0IGVkaXRGbG93Lm9uQWZ0ZXJDcmVhdGUoeyBjb250ZXh0OiBhY3RpdmF0ZWRDb250ZXh0IH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cud2FybmluZyhgRmFpbGVkIHRvIGFjdGl2YXRlIGNvbnRleHQgJHthY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKX1gKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGVudCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZURyYWZ0ID0gdmlldy5nZXRDb250cm9sbGVyKCkuY29sbGFib3JhdGl2ZURyYWZ0O1xuXHRcdFx0Ly8gU2VuZCBub3RpZmljYXRpb24gdG8gb3RoZXIgdXNlcnMgb25seSBhZnRlciB0aGUgY3JlYXRpb24gaGFzIGJlZW4gZmluYWxpemVkXG5cdFx0XHRjb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ3JlYXRlLCBjb250ZW50IH0pO1xuXHRcdFx0Ly8gU2luY2UgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgZHVyaW5nIGFjdGl2YXRpb24sIHdlIG5lZWQgdG8gdXBkYXRlIGFsbCBjb2xsYWJvcmF0aW9uIGxvY2tzXG5cdFx0XHQvLyB0aGF0IHdlcmUgdXNpbmcgdGhlIHRyYW5zaWVudCBwYXRoXG5cdFx0XHRjb2xsYWJvcmF0aXZlRHJhZnQudXBkYXRlTG9ja3NGb3JDb250ZXh0UGF0aCh0cmFuc2llbnRQYXRoLCBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKSk7XG5cblx0XHRcdC8vIExvYWQgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgJ3JlcXVlc3RBdExlYXN0JyBhbm5vdGF0aW9uIGZyb20gdGhlIHRhYmxlIChpZiBhbnkpXG5cdFx0XHRjb25zdCByZXF1ZXN0QXRMZWFzdCA9IE9iamVjdC5rZXlzKHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkucmVxdWVzdEF0TGVhc3QgPz8ge30pO1xuXHRcdFx0aWYgKHJlcXVlc3RBdExlYXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgYWN0aXZhdGVkQ29udGV4dC5yZXF1ZXN0UHJvcGVydHkocmVxdWVzdEF0TGVhc3QpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gYWN0aXZhdGUgbmV3IHJvdyAtXCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbGlzdEJpbmRpbmcgVGhlIGN1cnJlbnQgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uIChvciB1bmRlZmluZWQgaWYgbm8gZnVuY3Rpb24gaXMgZm91bmQpXG5cdCAqL1xuXHRnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24obGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1vZGVsID0gbGlzdEJpbmRpbmcuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChsaXN0QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5IHwgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXHRcdGNvbnN0IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQgPSAobGlzdEJpbmRpbmdPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXG5cdFx0cmV0dXJuIGRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QgPz8gZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbXB0eVJvd3NFbmFibGVkIHNldHRlci5cblx0ICogQHBhcmFtIGVuYWJsZW1lbnRcblx0ICovXG5cdHNldEVtcHR5Um93c0VuYWJsZWQodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBlbmFibGVtZW50OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVtcHR5Um93c0VuYWJsZWRcIiwgZW5hYmxlbWVudCk7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSB0aGlzLmdldENvbnRlbnQoKS5kYXRhKCkubmF2aWdhdGlvblBhdGgsXG5cdFx0XHRhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGlmIChlbmFibGVtZW50KSB7XG5cdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHRoaXMuZ2V0Q29udGVudCgpLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGRlZmF1bHRWYWx1ZXNGdW5jdGlvbiA9IGxpc3RCaW5kaW5nPy5nZXRSZXNvbHZlZFBhdGgoKSA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nKSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChkZWZhdWx0VmFsdWVzRnVuY3Rpb24pIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2sobmF2aWdhdGlvblBhdGgsIHRoaXMudXBkYXRlRW1wdHlSb3dzLmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZGVyZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZSkge1xuXHRcdFx0dGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZVxuXHRcdFx0XHQudGhlbigodGFibGVEZWZhdWx0RGF0YSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0VXBFbXB0eVJvd3ModGhpcy5nZXRDb250ZW50KCksIGZhbHNlLCB0YWJsZURlZmF1bHREYXRhKTtcblx0XHRcdFx0XHRyZXR1cm4gdGFibGVEZWZhdWx0RGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgZW1wdHkgcm93czpcIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRVcEVtcHR5Um93cyh0aGlzLmdldENvbnRlbnQoKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhbmQgcmVjcmVhdGUgdGhlIGVtcHR5IHJvd3MgaW4gb3JkZXIgdG8gZ2V0IGFueSB1cGRhdGVkIGRlZmF1bHQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gdGhpc1xuXHQgKiBAcmV0dXJucyBQcm9taXNlXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVFbXB0eVJvd3ModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBiaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdGNvbnN0IGJpbmRpbmdIZWFkZXJDb250ZXh0ID0gYmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0aWYgKGJpbmRpbmcgJiYgYmluZGluZy5pc1Jlc29sdmVkKCkgJiYgYmluZGluZy5pc0xlbmd0aEZpbmFsKCkgJiYgYmluZGluZ0hlYWRlckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gYmluZGluZ0hlYWRlckNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0dGhpcy5fZGVsZXRlRW1wdHlSb3dzKGJpbmRpbmcsIGNvbnRleHRQYXRoKTtcblx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcsIHRhYmxlKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhlbHBlciBmdW5jdGlvbiB0byBwZXJmb3JtIGNvbW1vbiBjaGVja3MgZm9yIHRhYmxlIGRlZmF1bHRzIGFuZCBlbXB0eSByb3dzIHNldHVwLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJlaW5nIHByb2Nlc3NlZFxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBvYmplY3QgaWYgY2hlY2tzIHBhc3MsIG9yIHVuZGVmaW5lZCBpZiBjaGVja3MgZmFpbFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBfdmFsaWRhdGVBbmRSZXRyaWV2ZUJpbmRpbmcoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdHRhYmxlOiBNRENUYWJsZVxuXHQpOiBQcm9taXNlPE9EYXRhTGlzdEJpbmRpbmcgfCB1bmRlZmluZWQ+IHtcblx0XHRpZiAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5jcmVhdGlvbk1vZGUgIT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3MpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdWlNb2RlbCA9IHRhYmxlLmdldE1vZGVsKFwidWlcIikgYXMgSlNPTk1vZGVsIHwgdW5kZWZpbmVkO1xuXHRcdGlmICghdWlNb2RlbCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodWlNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlUGVuZGluZ1wiKSkge1xuXHRcdFx0Ly8gV2FpdCB1bnRpbCB0aGUgZWRpdCBtb2RlIGNvbXB1dGF0aW9uIGlzIGNvbXBsZXRlXG5cdFx0XHRjb25zdCB3YXRjaEJpbmRpbmcgPSB1aU1vZGVsLmJpbmRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlUGVuZGluZ1wiKTtcblx0XHRcdGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZuSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR3YXRjaEJpbmRpbmcuZGV0YWNoQ2hhbmdlKGZuSGFuZGxlcik7XG5cdFx0XHRcdFx0d2F0Y2hCaW5kaW5nLmRlc3Ryb3koKTtcblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHdhdGNoQmluZGluZy5hdHRhY2hDaGFuZ2UoZm5IYW5kbGVyKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkgYXMgT0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZDtcblxuXHRcdGlmICghYmluZGluZykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIGJpbmRpbmc7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdGFibGUgZGVmYXVsdHMgYnkgdmFsaWRhdGluZyBhbmQgcmV0cmlldmluZyB0aGUgYmluZGluZywgdGhlbiBmZXRjaGluZyBkYXRhIGZyb20gdGhlIERlZmF1bHRWYWx1ZUZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJlaW5nIHByb2Nlc3NlZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGVmYXVsdCB2YWx1ZXMsIG9yIHVuZGVmaW5lZCBpZiBubyBiaW5kaW5nIGlzIGF2YWlsYWJsZSBvciB0aGUgRGVmYXVsdFZhbHVlRnVuY3Rpb24gcmV0dXJucyBubyBkYXRhXG5cdCAqL1xuXHRhc3luYyBnZXRUYWJsZURlZmF1bHRzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgdGFibGU6IE1EQ1RhYmxlKTogUHJvbWlzZTxvYmplY3QgfCB1bmRlZmluZWQ+IHtcblx0XHRjb25zdCBiaW5kaW5nID0gYXdhaXQgdGhpcy5fdmFsaWRhdGVBbmRSZXRyaWV2ZUJpbmRpbmcodGFibGUpO1xuXHRcdGlmICghYmluZGluZykgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKSk7XG5cdFx0cmV0dXJuIGFwcENvbXBvbmVudCA/IFRyYW5zYWN0aW9uSGVscGVyLmdldERhdGFGcm9tRGVmYXVsdFZhbHVlRnVuY3Rpb24oYmluZGluZywgYXBwQ29tcG9uZW50KSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGFzeW5jIHNldFVwRW1wdHlSb3dzKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHR0YWJsZTogTURDVGFibGUsXG5cdFx0Y3JlYXRlQnV0dG9uV2FzUHJlc3NlZCA9IGZhbHNlLFxuXHRcdHRhYmxlRGVmYXVsdERhdGEgPSB7fVxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBiaW5kaW5nID0gYXdhaXQgdGhpcy5fdmFsaWRhdGVBbmRSZXRyaWV2ZUJpbmRpbmcodGFibGUpO1xuXHRcdGlmICghYmluZGluZykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBiaW5kaW5nSGVhZGVyQ29udGV4dCA9IGJpbmRpbmcuZ2V0SGVhZGVyQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nICYmIGJpbmRpbmcuaXNSZXNvbHZlZCgpICYmIGJpbmRpbmcuaXNMZW5ndGhGaW5hbCgpICYmIGJpbmRpbmdIZWFkZXJDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGJpbmRpbmdIZWFkZXJDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGlmICghdGhpcy5lbXB0eVJvd3NFbmFibGVkKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoKTtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nLCBjb250ZXh0UGF0aCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGFibGUpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5pbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlICYmXG5cdFx0XHRcdCF0YWJsZS5nZXRCaW5kaW5nQ29udGV4dChcInBhZ2VJbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJjcmVhdGVNb2RlXCIpICYmXG5cdFx0XHRcdCFjcmVhdGVCdXR0b25XYXNQcmVzc2VkXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5hY3RpdmVDb250ZXh0ID0gYmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5maW5kKGZ1bmN0aW9uIChjb250ZXh0KSB7XG5cdFx0XHRcdC8vIHdoZW4gdGhpcyBpcyBjYWxsZWQgZnJvbSBjb250cm9sbGVyIGNvZGUgd2UgbmVlZCB0byBjaGVjayB0aGF0IGluYWN0aXZlIGNvbnRleHRzIGFyZSBzdGlsbCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0YWJsZSBjb250ZXh0XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmlzSW5hY3RpdmUoKSAmJiBjb250ZXh0LmdldFBhdGgoKS5zdGFydHNXaXRoKGNvbnRleHRQYXRoKTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFpbmFjdGl2ZUNvbnRleHQpIHtcblx0XHRcdFx0dGhpcy5yZW1vdmVFbXB0eVJvd3NNZXNzYWdlcygpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLmNyZWF0ZUVtcHR5Um93cyhiaW5kaW5nLCB0YWJsZSwgZmFsc2UsIHVuZGVmaW5lZCwgZmFsc2UsIHRhYmxlRGVmYXVsdERhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGluYWN0aXZlIHJvd3MgZnJvbSB0aGUgdGFibGUgbGlzdEJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKi9cblx0X2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBjb250ZXh0IG9mIGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkpIHtcblx0XHRcdGlmIChjb250ZXh0LmlzSW5hY3RpdmUoKSAmJiBjb250ZXh0LmdldFBhdGgoKS5zdGFydHNXaXRoKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0XHRjb250ZXh0LmRlbGV0ZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0cyB3aXRoaW4gdGhlIGxpc3QgYmluZGluZy5cblx0ICogQHBhcmFtIGJpbmRpbmcgRGF0YSBsaXN0IGJpbmRpbmdcblx0ICogQHJldHVybnMgVGhlIG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0c1xuXHQgKi9cblx0Z2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbHRlcigoY29udGV4dCkgPT4gY29udGV4dC5pc0luYWN0aXZlKCkpLmxlbmd0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBlbXB0eSByb3cuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBlbXB0eSByb3dcblx0ICogQHJldHVybnMgVGhlIHZhbGlkYXRpb24gc3RhdHVzXG5cdCAqL1xuXHR2YWxpZGF0ZUVtcHR5Um93KHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJlcXVpcmVkUHJvcGVydGllcyA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuYW5ub3RhdGlvbi5yZXF1aXJlZFByb3BlcnRpZXM7XG5cdFx0aWYgKHJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKGNvbnRleHQpO1xuXHRcdFx0Y29uc3QgbWlzc2luZ1Byb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnRpZXMuZmlsdGVyKChyZXF1aXJlZFByb3BlcnR5KSA9PiAhY29udGV4dC5nZXRPYmplY3QocmVxdWlyZWRQcm9wZXJ0eSkpO1xuXHRcdFx0aWYgKG1pc3NpbmdQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXHRcdFx0XHRsZXQgZGlzcGxheWVkQ29sdW1uOiBNRENDb2x1bW4gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGZvciAoY29uc3QgbWlzc2luZ1Byb3BlcnR5IG9mIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdFx0bGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXHRcdFx0XHRcdGNvbnN0IG1pc3NpbmdDb2x1bW4gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbHVtbnMuZmluZChcblx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbikgPT5cblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbikucmVsYXRpdmVQYXRoID09PSBtaXNzaW5nUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uLnByb3BlcnR5SW5mb3MgJiYgdGFibGVDb2x1bW4ucHJvcGVydHlJbmZvcy5pbmNsdWRlcyhtaXNzaW5nUHJvcGVydHkpKVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAoIW1pc3NpbmdDb2x1bW4pIHtcblx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWVwiLCBbbWlzc2luZ1Byb3BlcnR5XSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGRpc3BsYXllZENvbHVtbiA9IHRoaXMuZ2V0Q29udGVudCgpXG5cdFx0XHRcdFx0XHRcdC5nZXRDb2x1bW5zKClcblx0XHRcdFx0XHRcdFx0LmZpbmQoKG1kY0NvbHVtbikgPT4gbWRjQ29sdW1uLmdldFByb3BlcnR5S2V5KCkgPT09IG1pc3NpbmdDb2x1bW4ubmFtZSk7XG5cdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5ZWRDb2x1bW4gPyBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZXCIgOiBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiLFxuXHRcdFx0XHRcdFx0XHRbZGlzcGxheWVkQ29sdW1uPy5nZXRIZWFkZXIoKSB8fCBtaXNzaW5nQ29sdW1uLmxhYmVsXVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHRcdFx0bmV3IE1lc3NhZ2Uoe1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdHByb2Nlc3NvcjogdGhpcy5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBNZXNzYWdlVHlwZS5FcnJvcixcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0cGVyc2lzdGVudDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsRGV0YWlsczoge1xuXHRcdFx0XHRcdFx0XHRcdHRhYmxlSWQ6IHRoaXMuZ2V0Q29udGVudCgpLmdldElkKCksIC8vIE5lZWQgdG8gZG8gaXQgc2luY2UgaGFuZGxlQ3JlYXRlQWN0aXZhdGUgY2FuIGJlIHRyaWdnZXJlZCBtdWx0aXBsZSB0aW1lcyAoZXh0cmEgcHJvcGVydGllcyBzZXQgYnkgdmFsdWUgaGVscCkgYmVmb3JlIGNvbnRyb2xJZHMgYXJlIHNldCBvbiB0aGUgbWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdGVtcHR5Um93TWVzc2FnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRtaXNzaW5nQ29sdW1uOiBkaXNwbGF5ZWRDb2x1bW4gPyB1bmRlZmluZWQgOiBtaXNzaW5nUHJvcGVydHkgLy8gbmVlZGVkIHRvIGNoYW5nZSB0aGUgbWVzc2FnZVN0cmlwIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiBgJHtjb250ZXh0Py5nZXRQYXRoKCl9LyR7bWlzc2luZ1Byb3BlcnR5fWBcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXNzYWdpbmcuYWRkTWVzc2FnZXMobWVzc2FnZXMpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gdGhlIGVtcHR5IHJvd3MuXG5cdCAqIEBwYXJhbSBpbmFjdGl2ZUNvbnRleHRzIFRoZSBjb250ZXh0cyBvZiB0aGUgZW1wdHkgcm93cywgaWYgbm90IHByb3ZpZGVkLCB0aGUgbWVzc2FnZXMgb2YgYWxsIGVtcHR5IHJvd3MgYXJlIHJlbW92ZWRcblx0ICovXG5cdHJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgaW5hY3RpdmVDb250ZXh0cz86IENvbnRleHQgfCBDb250ZXh0W10pOiB2b2lkIHtcblx0XHRNZXNzYWdpbmcucmVtb3ZlTWVzc2FnZXMoXG5cdFx0XHQoTWVzc2FnaW5nLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKSBhcyBNZXNzYWdlW10pLmZpbHRlcigobXNnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRlY2huaWNhbERldGFpbHMgPSAobXNnLmdldFRlY2huaWNhbERldGFpbHMoKSB8fCB7fSkgYXMgeyB0YWJsZUlkPzogc3RyaW5nOyBlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuIH07XG5cblx0XHRcdFx0Ly8gQ2hlY2sgaWYgbXNnIHRhcmdldCBzdGFydHMgd2l0aCBhbnkgcGF0aCBpbiB0aGUgaW5hY3RpdmVDb250ZXh0IGFycmF5XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRNYXRjaGVzID0gQXJyYXkuaXNBcnJheShpbmFjdGl2ZUNvbnRleHRzKVxuXHRcdFx0XHRcdD8gaW5hY3RpdmVDb250ZXh0cy5zb21lKChjb250ZXh0KSA9PiBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGNvbnRleHQuZ2V0UGF0aCgpKSkpXG5cdFx0XHRcdFx0OiAhaW5hY3RpdmVDb250ZXh0cyB8fCBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGluYWN0aXZlQ29udGV4dHMuZ2V0UGF0aCgpKSk7XG5cblx0XHRcdFx0cmV0dXJuIGNvbnRleHRNYXRjaGVzICYmIHRlY2huaWNhbERldGFpbHMuZW1wdHlSb3dNZXNzYWdlICYmIHRlY2huaWNhbERldGFpbHMudGFibGVJZCA9PT0gdGhpcy5nZXRDb250ZW50KCkuZ2V0SWQoKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBpbmFjdGl2ZSByb3dzIGZvciB0aGUgdGFibGUgaW4gY3JlYXRpb24gbW9kZSBcIklubGluZUNyZWF0aW9uUm93c1wiLlxuXHQgKiBAcGFyYW0gYmluZGluZyBEYXRhIGxpc3QgYmluZGluZ1xuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJlaW5nIGVkaXRlZFxuXHQgKiBAcGFyYW0gcmVjcmVhdGVPbmVSb3cgYHRydWVgIGlmIHRoZSBjYWxsIGlzIHRvIHJlY3JlYXRlIGFuIGVtcHR5TGluZVxuXHQgKiBAcGFyYW0gbmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUgTnVtYmVyIG9mIG5ldyBpbmFjdGl2ZSByb3dzIHRvIGJlIGNyZWF0ZWRcblx0ICogQHBhcmFtIGZvcmNlQ3JlYXRlYXRFbmQgYHRydWVgIGlmIHRoZSBuZXcgcm93IGlzIHRvIGJlIGNyZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGFibGVcblx0ICogQHBhcmFtIGRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YSBEZWZhdWx0IHZhbHVlcyByZXRyaWV2ZWQgZnJvbSB0aGUgRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG5ldyByb3dzXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjcmVhdGVkIGNvbnRleHRzIG9yIHZvaWQgaWYgdGhlIGNyZWF0aW9uIGZhaWxlZFxuXHQgKi9cblx0YXN5bmMgY3JlYXRlRW1wdHlSb3dzKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRyZWNyZWF0ZU9uZVJvdyA9IGZhbHNlLFxuXHRcdG5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlPzogbnVtYmVyLFxuXHRcdGZvcmNlQ3JlYXRlYXRFbmQgPSBmYWxzZSxcblx0XHRkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGE/OiBvYmplY3QgfCB1bmRlZmluZWRcblx0KTogUHJvbWlzZTx2b2lkIHwgQ29udGV4dFtdPiB7XG5cdFx0Y29uc3QgaW5saW5lQ3JlYXRpb25Sb3dDb3VudCA9IG5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlID8/ICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w/LmlubGluZUNyZWF0aW9uUm93Q291bnQgfHwgMSk7XG5cdFx0aWYgKHRoaXMuY3JlYXRpbmdFbXB0eVJvd3MgfHwgdGhpcy5nZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIoYmluZGluZykgPiBpbmxpbmVDcmVhdGlvblJvd0NvdW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGRhdGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpbmxpbmVDcmVhdGlvblJvd0NvdW50IH0sICgpID0+ICh7fSkpLFxuXHRcdFx0YXRFbmQgPSB0YWJsZS5kYXRhKFwidGFibGVUeXBlXCIpICE9PSBcIlJlc3BvbnNpdmVUYWJsZVwiLFxuXHRcdFx0dmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGFibGUpLFxuXHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0ZWRpdEZsb3cgPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXG5cdFx0dGhpcy5jcmVhdGluZ0VtcHR5Um93cyA9IHRydWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGRhdGFGb3JDcmVhdGUgPSByZWNyZWF0ZU9uZVJvdyA/IFt7fV0gOiBkYXRhO1xuXHRcdFx0Y29uc3QgY29udGV4dHMgPSBhd2FpdCBlZGl0Rmxvdy5jcmVhdGVNdWx0aXBsZURvY3VtZW50cyhcblx0XHRcdFx0YmluZGluZyxcblx0XHRcdFx0Ly8gZHVyaW5nIGEgbGl2ZSBjaGFuZ2UsIG9ubHkgMSBuZXcgZG9jdW1lbnQgaXMgY3JlYXRlZFxuXHRcdFx0XHRkYXRhRm9yQ3JlYXRlLFxuXHRcdFx0XHQvLyBXaGVuIGVkaXRpbmcgYW4gZW1wdHkgcm93LCB0aGUgbmV3IGVtcHR5IHJvdyBpcyB0byBiZSBjcmVhdGVkIGp1c3QgYmVsb3cgYW5kIG5vdCBhYm92ZVxuXHRcdFx0XHRyZWNyZWF0ZU9uZVJvdyB8fCBmb3JjZUNyZWF0ZWF0RW5kID8gdHJ1ZSA6IGF0RW5kLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0Y29udHJvbGxlci5lZGl0Rmxvdy5vbkJlZm9yZUNyZWF0ZSxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGFcblx0XHRcdCk7XG5cdFx0XHRjb250ZXh0cz8uZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGF3YWl0IGNvbnRleHQuY3JlYXRlZCgpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGlmICghKGVycm9yIGFzIENvbnRleHRFcnJvclR5cGUpLmNhbmNlbGVkKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGNvbnRleHRzO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMuY3JlYXRpbmdFbXB0eVJvd3MgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7TUF3QnFCQSxnQkFBZ0I7SUFBQSxTQUFBQSxpQkFBQTtJQUFBQyxRQUFBLEdBQUFELGdCQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixnQkFBQSxDQUFBRyxTQUFBO0lBR3BDO0FBQ0Q7QUFDQTtJQUZDRCxNQUFBLENBS0FFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLGtCQUFrQixHQUFsQixTQUFBQSxrQkFB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
|
|
@@ -92,6 +92,12 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
92
92
|
// Since the path of the context has changed during activation, we need to update all collaboration locks
|
|
93
93
|
// that were using the transient path
|
|
94
94
|
collaborativeDraft.updateLocksForContextPath(transientPath, activatedContext.getPath());
|
|
95
|
+
|
|
96
|
+
// Load the properties that are part of the 'requestAtLeast' annotation from the table (if any)
|
|
97
|
+
const requestAtLeast = Object.keys(this.getTableDefinition().requestAtLeast ?? {});
|
|
98
|
+
if (requestAtLeast.length > 0) {
|
|
99
|
+
await activatedContext.requestProperty(requestAtLeast);
|
|
100
|
+
}
|
|
95
101
|
} catch (error) {
|
|
96
102
|
Log.error("Failed to activate new row -", error as Error);
|
|
97
103
|
}
|
|
@@ -150,7 +156,8 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
150
156
|
|
|
151
157
|
/**
|
|
152
158
|
* Remove and recreate the empty rows in order to get any updated default values.
|
|
153
|
-
*
|
|
159
|
+
* @param this
|
|
160
|
+
* @returns Promise
|
|
154
161
|
*/
|
|
155
162
|
async updateEmptyRows(this: ITableBlock & EmptyRowsHandler): Promise<void> {
|
|
156
163
|
const table = this.getContent();
|
|
@@ -377,7 +384,6 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
377
384
|
}
|
|
378
385
|
const data = Array.from({ length: inlineCreationRowCount }, () => ({})),
|
|
379
386
|
atEnd = table.data("tableType") !== "ResponsiveTable",
|
|
380
|
-
inactive = true,
|
|
381
387
|
view = CommonUtils.getTargetView(table),
|
|
382
388
|
controller = view.getController(),
|
|
383
389
|
editFlow = controller.editFlow;
|
|
@@ -393,7 +399,7 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
393
399
|
recreateOneRow || forceCreateatEnd ? true : atEnd,
|
|
394
400
|
false,
|
|
395
401
|
controller.editFlow.onBeforeCreate,
|
|
396
|
-
|
|
402
|
+
true,
|
|
397
403
|
undefined,
|
|
398
404
|
defaultValueFunctionData
|
|
399
405
|
);
|