@sapui5/sap.fe.templates 1.145.1 → 1.145.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/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +20 -12
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +27 -13
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.js +2 -2
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.tsx +1 -1
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +4 -3
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +4 -4
- package/src/sap/fe/templates/library.js +1 -1
|
@@ -54,6 +54,7 @@ import type InputBase from "sap/m/InputBase";
|
|
|
54
54
|
import InstanceManager from "sap/m/InstanceManager";
|
|
55
55
|
import type NavContainer from "sap/m/NavContainer";
|
|
56
56
|
import type Popover from "sap/m/Popover";
|
|
57
|
+
import type SearchField from "sap/m/SearchField";
|
|
57
58
|
import type ToolbarSpacer from "sap/m/ToolbarSpacer";
|
|
58
59
|
import Device from "sap/ui/Device";
|
|
59
60
|
import type UI5Event from "sap/ui/base/Event";
|
|
@@ -296,12 +297,13 @@ class ObjectPageController extends PageController {
|
|
|
296
297
|
}
|
|
297
298
|
|
|
298
299
|
/**
|
|
299
|
-
*
|
|
300
|
+
* Add the sapUxAPObjectPageSubSectionFitContainer CSS class to every visible subsection that contains only a single GridTable or TreeTable.
|
|
301
|
+
* This makes the table fill the full height of its container so that the scrollbar appears on the table itself rather than on the page.
|
|
300
302
|
* @param subSections The sub sections to look for
|
|
301
303
|
*/
|
|
302
304
|
private checkSectionsForNonResponsiveTable(subSections: ObjectPageSubSection[]): void {
|
|
303
|
-
const changeClassForTables = (event: Event,
|
|
304
|
-
const blocks = [...
|
|
305
|
+
const changeClassForTables = (event: Event, visibleSubSection: ObjectPageSubSection): void => {
|
|
306
|
+
const blocks = [...visibleSubSection.getBlocks(), ...visibleSubSection.getMoreBlocks()];
|
|
305
307
|
if (blocks.length === 1) {
|
|
306
308
|
const table = this.searchTableInBlock(blocks[0] as SubSectionBlock);
|
|
307
309
|
if (!table) {
|
|
@@ -315,17 +317,15 @@ class ObjectPageController extends PageController {
|
|
|
315
317
|
tableAPI?.getTableDefinition().control.rowCountMode === "Auto"
|
|
316
318
|
) {
|
|
317
319
|
//In case there is only a single table in a subSection we fit that to the whole page so that the scrollbar comes only on table and not on page
|
|
318
|
-
|
|
319
|
-
|
|
320
|
+
visibleSubSection.addStyleClass("sapUxAPObjectPageSubSectionFitContainer");
|
|
321
|
+
visibleSubSection.detachEvent("modelContextChange", changeClassForTables, this);
|
|
320
322
|
}
|
|
321
323
|
}
|
|
322
324
|
};
|
|
323
|
-
for (
|
|
324
|
-
if (
|
|
325
|
-
const lastVisibleSubSection = subSections[subSectionIndex];
|
|
325
|
+
for (const subSection of subSections) {
|
|
326
|
+
if (subSection.getVisible()) {
|
|
326
327
|
// We need to attach this event in order to manage the Object Page Lazy Loading mechanism
|
|
327
|
-
|
|
328
|
-
break;
|
|
328
|
+
subSection.attachEvent("modelContextChange", subSection, changeClassForTables, this);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
}
|
|
@@ -646,6 +646,7 @@ class ObjectPageController extends PageController {
|
|
|
646
646
|
/**
|
|
647
647
|
* Set the initial focus in edit mode.
|
|
648
648
|
* @param aSubSections Object page sub sections
|
|
649
|
+
* @param fromTabNavigation Indicates if the focus is set after a tab navigation
|
|
649
650
|
*/
|
|
650
651
|
_updateFocusInEditMode(aSubSections: ObjectPageSubSection[], fromTabNavigation = false): void {
|
|
651
652
|
setTimeout(
|
|
@@ -653,7 +654,7 @@ class ObjectPageController extends PageController {
|
|
|
653
654
|
// We set the focus in a timeeout, otherwise the focus sometimes goes to the TabBar
|
|
654
655
|
const oObjectPage = this._getObjectPageLayoutControl();
|
|
655
656
|
const oMandatoryField = this._getFirstEmptyMandatoryFieldFromSubSection(aSubSections);
|
|
656
|
-
let oFieldToFocus;
|
|
657
|
+
let oFieldToFocus: UI5Element | undefined;
|
|
657
658
|
if (oMandatoryField) {
|
|
658
659
|
if (oMandatoryField.isA("sap.fe.macros.MultiValueField")) {
|
|
659
660
|
oFieldToFocus = (oMandatoryField as unknown as MultiValueFieldBlock).getMultiValueField();
|
|
@@ -669,9 +670,22 @@ class ObjectPageController extends PageController {
|
|
|
669
670
|
const focusInfo = oFieldToFocus.getFocusInfo() as { targetInfo: object };
|
|
670
671
|
focusInfo.targetInfo = { silent: true };
|
|
671
672
|
if (oFieldToFocus.isA("sap.ui.mdc.field.FieldInput")) {
|
|
672
|
-
oFieldToFocus = oFieldToFocus.getParent();
|
|
673
|
+
oFieldToFocus = oFieldToFocus.getParent() as UI5Element | undefined;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
if (
|
|
677
|
+
oFieldToFocus?.isA<SearchField>("sap.m.SearchField") &&
|
|
678
|
+
oFieldToFocus.getEnableSuggestions() &&
|
|
679
|
+
!oFieldToFocus.isBound("enableSuggestions")
|
|
680
|
+
) {
|
|
681
|
+
// In case the focus is set on a search field with suggestions, we temporarily disable the suggestions to avoid triggering them on focus
|
|
682
|
+
// unless this property is bound (to avoid modifying something in a model)
|
|
683
|
+
oFieldToFocus.setEnableSuggestions(false);
|
|
684
|
+
oFieldToFocus.focus(focusInfo);
|
|
685
|
+
oFieldToFocus.setEnableSuggestions(true);
|
|
686
|
+
} else {
|
|
687
|
+
oFieldToFocus?.focus(focusInfo);
|
|
673
688
|
}
|
|
674
|
-
oFieldToFocus.focus(focusInfo);
|
|
675
689
|
}
|
|
676
690
|
}.bind(this),
|
|
677
691
|
fromTabNavigation ? 300 : 0
|
|
@@ -425,7 +425,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
425
425
|
value: "{internal>UserID}",
|
|
426
426
|
additionalValue: "{internal>UserDescription}",
|
|
427
427
|
display: "DescriptionValue",
|
|
428
|
-
width: "
|
|
428
|
+
width: "100%",
|
|
429
429
|
required: true,
|
|
430
430
|
valueHelp: "userValueHelp",
|
|
431
431
|
placeholder: this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER"),
|
|
@@ -636,4 +636,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
636
636
|
_exports = CollaborationDraft;
|
|
637
637
|
return _exports;
|
|
638
638
|
}, false);
|
|
639
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIyMGVtXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
639
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsIlRleHQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImNvbHVtbnMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiZGVwZW5kZW50cyIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwiZ2V0VmFsdWVIZWxwRGVsZWdhdGUiLCJ2YWxpZGF0ZUlucHV0IiwidHlwZWFoZWFkIiwiTURDUG9wb3ZlciIsIk1UYWJsZSIsImNhc2VTZW5zaXRpdmUiLCJ1c2VBc1ZhbHVlSGVscCIsImRpYWxvZyIsIk1EQ0RpYWxvZyIsIlZhbHVlU3RhdGUiLCJTdWNjZXNzIiwiV2FybmluZyIsIkluZm9ybWF0aW9uIiwibmJVc2VycyIsInNvbWUiLCJ0cmFuc2llbnQiLCJpdGVtIiwiZGVsZXRlVXNlcklEIiwiZmlsdGVyIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwiX2dldE93bmVyIiwiZ2V0TWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIml0ZW1zIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGlvbkRyYWZ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgQWN0aW9uIGFzIFZvY2FidWxhcnlBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZm9ybWF0UmVzdWx0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBCYWNrZW5kVXNlciwgVXNlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7XG5cdENvbGxhYm9yYXRpb25VdGlscyxcblx0VXNlckVkaXRpbmdTdGF0ZSxcblx0VXNlclN0YXR1cyxcblx0c2hhcmVPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveCBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTcGFjZUJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8QXZhdGFyIGRpc3BsYXlTaXplPVwiWFNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgaW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCIgLz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIzNSVcIiA6IFwiNmVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IDxUZXh0IHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI0NiVcIiA6IFwiOWVtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9TVEFUVVNfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZT17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1c0NvbG9yIH19XG5cdFx0XHRcdFx0XHRcdFx0dGV4dD17eyBwYXRoOiBcImludGVybmFsPnN0YXR1c1wiLCBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0VXNlclN0YXR1cyB9fVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCI4JVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2RlY2xpbmVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlbW92ZVVzZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gISEke2ludGVybmFsPnRyYW5zaWVudH0gfVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2w+XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHRhYmxlIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKClcblx0XHRcdFx0fX1cblx0XHRcdDwvQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2w+XG5cdFx0KTtcblx0XHRyZXR1cm4gdGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2VjdGlvbiBvbiB0aGUgZGlhbG9nIHJlbGF0ZWQgdG8gdGhlIHVzZXIgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCk6IEhCb3gge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCIgd2lkdGg9XCIxMDAlXCI+XG5cdFx0XHRcdDxGaWVsZFxuXHRcdFx0XHRcdHZhbHVlPVwie2ludGVybmFsPlVzZXJJRH1cIlxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT1cIntpbnRlcm5hbD5Vc2VyRGVzY3JpcHRpb259XCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25WYWx1ZVwiXG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17dHJ1ZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCJ1c2VyVmFsdWVIZWxwXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0Y2hhbmdlPXt0aGlzLmFkZFVzZXJGaWVsZENoYW5nZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHQ8VmFsdWVIZWxwIGlkPVwidXNlclZhbHVlSGVscFwiIGRlbGVnYXRlPXt0aGlzLmdldFZhbHVlSGVscERlbGVnYXRlKCl9IHZhbGlkYXRlSW5wdXQ9e3RydWV9PlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlYWhlYWQ6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PE1EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1UYWJsZSBjYXNlU2Vuc2l0aXZlPVwidHJ1ZVwiIHVzZUFzVmFsdWVIZWxwPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L01EQ1BvcG92ZXI+XG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlhbG9nOiA8TURDRGlhbG9nIC8+XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0PC9WYWx1ZUhlbHA+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdDwvSEJveD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgc3RhdHVzIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXNcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXMgPSAodXNlclN0YXR1czogVXNlclN0YXR1cyk6IHN0cmluZyA9PiB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NVUlJFTlRMWV9FRElUSU5HXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT19DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9OT1RfWUVUX0lOVklURURcIik7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgZWRpdGluZyBzdGF0dXMuXG5cdCAqIEBwYXJhbSB1c2VyU3RhdHVzIFRoZSBlZGl0aW5nIHN0YXR1cyBvZiB0aGUgdXNlclxuXHQgKiBAcmV0dXJucyBUaGUgdXNlciBzdGF0dXMgY29sb3Jcblx0ICovXG5cdGZvcm1hdFVzZXJTdGF0dXNDb2xvcih1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogVmFsdWVTdGF0ZSB7XG5cdFx0c3dpdGNoICh1c2VyU3RhdHVzKSB7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZzpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuU3VjY2Vzcztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuV2FybmluZztcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5JbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIGVuYWJsZSB0aGUgaW52aXRlIGJ1dHRvbiBkZXBlbmRpbmcgb24gdGhlIGludml0ZWQgdXNlcnMgc3RhdHVzLlxuXHQgKiBAcGFyYW0gbmJVc2VycyBOdW1iZXIgb2YgdXNlcnNcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBMaXN0IG9mIHRoZSBpbnZpdGVkIHVzZXJzXG5cdCAqIEByZXR1cm5zIFRydWUgb3IgRmFsc2Vcblx0ICovXG5cdGZvcm1hdEludml0ZUJ1dHRvbihuYlVzZXJzOiBJbnRlZ2VyIHwgdW5kZWZpbmVkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGlmICghbmJVc2Vycykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gISFpbnZpdGVkVXNlcnM/LnNvbWUoKHVzZXIpID0+IHVzZXIuc3RhdHVzID09PSAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhlIGFkZGVkIHVzZXIgdG8gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHBhcmFtIHVzZXJJbnB1dCBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgVGhlIHVzZXJzIGFscmVhZHkgaW52aXRlZFxuXHQgKiBAcGFyYW0gbmV3VXNlciBUaGUgdXNlciB0byBiZSBpbnZpdGVkXG5cdCAqL1xuXHRhZGRVc2VyKHVzZXJJbnB1dDogRmllbGQsIGludml0ZWRVc2VyczogVXNlcltdLCBuZXdVc2VyOiBVc2VyKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBhY3RpdmVVc2VycyA9ICh1c2VySW5wdXQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIik7XG5cdFx0bmV3VXNlci5uYW1lID0gbmV3VXNlci5uYW1lIHx8IG5ld1VzZXIuaWQ7XG5cdFx0bmV3VXNlci5pbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhuZXdVc2VyLm5hbWUpO1xuXHRcdG5ld1VzZXIuY29sb3IgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG5ld1VzZXIuaWQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpO1xuXHRcdG5ld1VzZXIudHJhbnNpZW50ID0gdHJ1ZTtcblx0XHRuZXdVc2VyLnN0YXR1cyA9IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDtcblx0XHRpbnZpdGVkVXNlcnMucHVzaChuZXdVc2VyKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlcklEXCIsIFwiXCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIHN0YXRlIG9mIHRoZSB1c2VyIGZpZWxkIHdoZW5ldmVyIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSB1c2VyIGlucHV0XG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB2YWx1ZSBzdGF0ZSB3YXMgc2V0LlxuXHQgKi9cblx0YWRkVXNlckZpZWxkQ2hhbmdlZCA9IGFzeW5jIChldmVudDogRmllbGQkQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VySW5wdXQgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRyZXR1cm4gZXZlbnRcblx0XHRcdC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpXG5cdFx0XHQ/LnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQsIG5ld1VzZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB1c2VySW5wdXQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlcklEXCIpLFxuXHRcdFx0XHRcdFx0bmFtZTogaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiVXNlckRlc2NyaXB0aW9uXCIpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlcklkKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIkVycm9yXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VyLmlkKSA+IC0xIHx8XG5cdFx0XHRcdFx0XHRcdChuZXdVc2VyLmlkID09PSBuZXdVc2VyLm5hbWUgJiYgbmV3VXNlci5pZCA9PT0gXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkVXNlcih1c2VySW5wdXQsIGludml0ZWRVc2VycywgbmV3VXNlcik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHRcdC5jYXRjaChcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCk6IHZvaWQge1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiV2FybmluZ1wiKTtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9OT1RfRk9VTkRcIikpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHJlbW92ZSBidXR0b25cblx0ICovXG5cdHJlbW92ZVVzZXIoZXZlbnQ6IEV2ZW50PHt9LCBCdXR0b24+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik7XG5cdFx0Y29uc3QgZGVsZXRlVXNlcklEID0gaXRlbT8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJpZFwiKTtcblx0XHRsZXQgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiKTtcblx0XHRpbnZpdGVkVXNlcnMgPSBpbnZpdGVkVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBkZWxldGVVc2VySUQpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFdlIHJlcXVlc3QgdGhlIG51bWJlciBvZiBpbnZpdGVkIHVzZXJzIGFmdGVyIHRoZSBzaGFyZSBhY3Rpb24gdG8gc2VlIGhvdyBtYW55IHVzZXJzIHdlcmUgcmVhbGx5IGludml0ZWRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbc2hhcmVPYmplY3QoYmluZGluZ0NvbnRleHQsIHVzZXJzKSwgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpXSk7XG5cdFx0XHRjb25zdCBuZXdVc2VyczogQ29udGV4dFtdID0gW107XG5cdFx0XHRyZXN1bHRzWzFdLmZvckVhY2goKGludml0ZWRVc2VyKSA9PiB7XG5cdFx0XHRcdGlmIChuZXdseUludml0ZWRVc2Vycy5pbmNsdWRlcyhpbnZpdGVkVXNlci5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSkpIHtcblx0XHRcdFx0XHRuZXdVc2Vycy5wdXNoKGludml0ZWRVc2VyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBtZXNzYWdlSGFuZGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEubWVzc2FnZUhhbmRsZXI7XG5cdFx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZURpYWxvZygpO1xuXG5cdFx0XHRzd2l0Y2ggKG5ld1VzZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX05PX1VTRVJcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUXCIsIFt0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KV0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0bmV3VXNlcnMubGVuZ3RoLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9GQUlMRURfVE9BU1RcIikpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlTWFuYWdlRGlhbG9nKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCBhcmUgYWxyZWFkeSBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIHVzZXIgY29udGV4dHMuXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk6IFByb21pc2U8Q29udGV4dFtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWxlY3Q6IFwiVXNlcklELFVzZXJEZXNjcmlwdGlvbixVc2VyRWRpdGluZ1N0YXRlXCIsXG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fTtcblx0XHRjb25zdCBpbnZpdGVkVXNlckxpc3QgPSBtb2RlbD8uYmluZExpc3QoXG5cdFx0XHRgJHt0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJgLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0W10sXG5cdFx0XHRbXSxcblx0XHRcdHBhcmFtZXRlcnNcblx0XHQpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cblx0XHQvLyBmb3Igbm93IHdlIHNldCBhIGxpbWl0IHRvIDEwMC4gdGhlcmUgc2hvdWxkbid0IGJlIG1vcmUgdGhhbiBhIGZld1xuXHRcdHJldHVybiBpbnZpdGVkVXNlckxpc3QucmVxdWVzdENvbnRleHRzKDAsIDEwMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZHMgdGhlIGN1cnJlbnRseSBpbnZpdGVkIHVzZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnRlcm5hbCBtb2RlbC5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXJzIGFyZSByZWFkLlxuXHQgKi9cblx0cmVhZEludml0ZWRVc2VycyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjdXJyZW50VXNlckxpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCk7XG5cdFx0XHRjb25zdCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSB0aGlzLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIikgfHwgW107XG5cdFx0XHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh0aGlzLmdldEFwcENvbXBvbmVudCgpISk7XG5cdFx0XHRsZXQgdXNlclN0YXR1czogVXNlclN0YXR1cztcblx0XHRcdGlmIChjdXJyZW50VXNlckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjdXJyZW50VXNlckxpc3QuZm9yRWFjaCgodXNlckNvbnRleHQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB1c2VyRGF0YSA9IHVzZXJDb250ZXh0LmdldE9iamVjdCgpIGFzIEJhY2tlbmRVc2VyO1xuXHRcdFx0XHRcdGNvbnN0IGlzTWU6IGJvb2xlYW4gPSBtZT8uaWQgPT09IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVVzZXJzLmZpbmQoKHU6IFVzZXIpID0+IHUuaWQgPT09IHVzZXJEYXRhLlVzZXJJRCk7XG5cdFx0XHRcdFx0bGV0IHVzZXJEZXNjcmlwdGlvbiA9IHVzZXJEYXRhLlVzZXJEZXNjcmlwdGlvbiB8fCB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHModXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR1c2VyRGVzY3JpcHRpb24gPSBpc01lID8gYCR7Q29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9NRVwiLCB1c2VyRGVzY3JpcHRpb24pfWAgOiB1c2VyRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0aWYgKGlzQWN0aXZlKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodXNlckRhdGEuVXNlckVkaXRpbmdTdGF0ZSA9PT0gVXNlckVkaXRpbmdTdGF0ZS5JblByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB1c2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IHVzZXJEYXRhLlVzZXJJRCxcblx0XHRcdFx0XHRcdG5hbWU6IHVzZXJEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdHN0YXR1czogdXNlclN0YXR1cyxcblx0XHRcdFx0XHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKHVzZXJEYXRhLlVzZXJJRCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2VycyksXG5cdFx0XHRcdFx0XHRpbml0aWFsczogaW5pdGlhbHMsXG5cdFx0XHRcdFx0XHRtZTogaXNNZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2godXNlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9ub3QgeWV0IHNoYXJlZCwganVzdCBhZGQgbWVcblx0XHRcdFx0aW52aXRlZFVzZXJzLnB1c2gobWUpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJJRFwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1JFQURJTkdfVVNFUl9GQUlMRURcIikpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdG8gYmUgc2hhcmVkLlxuXHQgKi9cblx0Z2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0bGV0IHNoYXJlZEl0ZW1OYW1lID0gXCJcIjtcblx0XHRjb25zdCB0aXRsZSA9IGhlYWRlckluZm8/LlRpdGxlO1xuXHRcdGlmIChcblx0XHRcdHRpdGxlICYmXG5cdFx0XHRpc0Fubm90YXRpb25PZlR5cGU8RGF0YUZpZWxkVHlwZXM+KHRpdGxlLCBbXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbkdyb3VwLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0XSlcblx0XHQpIHtcblx0XHRcdHNoYXJlZEl0ZW1OYW1lID0gaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGl0bGUuVmFsdWUpID8gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkodGl0bGUuVmFsdWUucGF0aCkgOiB0aXRsZS5WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHNoYXJlZEl0ZW1OYW1lIHx8IChoZWFkZXJJbmZvPy5UeXBlTmFtZSBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGRlbGVnYXRlIHBheWxvYWQgZm9yIHRoZSB1c2VyIGZpZWxkIHZhbHVlIGhlbHAuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBoZWxwIGRlbGVnYXRlIHBheWxvYWRcblx0ICovXG5cdGdldFZhbHVlSGVscERlbGVnYXRlKCk6IHsgbmFtZTogc3RyaW5nOyBwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkIH0ge1xuXHRcdC8vIFRoZSBub24gbnVsbCBhc3NlcnRpb24gaXMgc2FmZSBoZXJlLCBiZWNhdXNlIHRoZSBhY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGFubm90YXRpb24gaXMgcHJlc2VudFxuXHRcdGNvbnN0IGFjdGlvbk5hbWUgPSAoXG5cdFx0XHR0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldCEuYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vblxuXHRcdCkuRHJhZnRSb290IS5TaGFyZUFjdGlvbiEudG9TdHJpbmcoKTtcblx0XHQvLyBXZSBhcmUgYWxzbyBzdXJlIHRoYXQgdGhlIGFjdGlvbiBleGlzdFxuXHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChhY3Rpb25OYW1lKSBhcyBWb2NhYnVsYXJ5QWN0aW9uO1xuXHRcdC8vIEJ5IGRlZmluaXRpb24gdGhlIGFjdGlvbiBoYXMgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgbmFtZSBcIlVzZXJzXCJcblx0XHRjb25zdCB1c2VyUGFyYW1ldGVycyA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtKSA9PiBwYXJhbS5uYW1lID09PSBVU0VSU19QQVJBTUVURVJTKSE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGAvJHt1c2VyUGFyYW1ldGVycy50eXBlfS8ke1VTRVJfSURfUEFSQU1FVEVSfWAsXG5cdFx0XHRcdHF1YWxpZmllcnM6IHt9LFxuXHRcdFx0XHR2YWx1ZUhlbHBRdWFsaWZpZXI6IFwiXCIsXG5cdFx0XHRcdGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSB0aGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSBJbnZpdGF0aW9uIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IGhlYWRlckluZm8gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckluZm87XG5cdFx0Y29uc3QgdGl0bGUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oKGhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IHVuZGVmaW5lZCk/LlZhbHVlLCBbXSwgXCJcIik7XG5cdFx0Y29uc3QgcGFyYW1zID0gW1wiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dcIiwgaGVhZGVySW5mbz8uVHlwZU5hbWUudG9TdHJpbmcoKSwgdGl0bGVdO1xuXHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChwYXJhbXMsIGNvbGxhYm9yYXRpb25Gb3JtYXR0ZXIuZ2V0Rm9ybWF0dGVkVGV4dCk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHRpdGxlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjbG9zZSB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdGNsb3NlTWFuYWdlRGlhbG9nID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5jbG9zZSgpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5kZXN0cm95KCk7XG5cdFx0ZGVsZXRlIHRoaXMubWFuYWdlRGlhbG9nO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpbnZpdGUgYnV0dG9uIGlmIHRoZXJlJ3MgYSBzaGFyZSBhY3Rpb24gb24gcm9vdCBsZXZlbC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SW52aXRlQnV0dG9uKCk6IEhCb3gge1xuXHRcdGlmICgodGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24pPy5EcmFmdFJvb3Q/LlNoYXJlQWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveCB2aXNpYmxlPVwie3VpPi9pc0VkaXRhYmxlfVwiIGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCI+XG5cdFx0XHRcdFx0PEF2YXRhciBiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiIHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCIgZGlzcGxheVNpemU9XCJYU1wiIHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259IC8+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiA8SEJveCAvPjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCkgJiYgTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQodGhpcy5fZ2V0T3duZXIoKSEuZ2V0TWV0YU1vZGVsKCkpKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0aXRlbXM9e3sgcGF0aDogXCJpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiIH19XG5cdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luXCJcblx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAke3VpPi9pc0VkaXRhYmxlfSAmYW1wOyZhbXA7ICR7aW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vY29ubmVjdGVkfSB9XCJcblx0XHRcdFx0XHRcdGFsaWduSXRlbXM9XCJDZW50ZXJcIlxuXHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0XHRpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIlxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiXG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHN9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -287,7 +287,7 @@ export default class CollaborationDraft extends BuildingBlock {
|
|
|
287
287
|
value="{internal>UserID}"
|
|
288
288
|
additionalValue="{internal>UserDescription}"
|
|
289
289
|
display="DescriptionValue"
|
|
290
|
-
width="
|
|
290
|
+
width="100%"
|
|
291
291
|
required={true}
|
|
292
292
|
valueHelp="userValueHelp"
|
|
293
293
|
placeholder={this.getTranslatedText("C_COLLABORATIONDRAFT_INVITATION_INPUT_PLACEHOLDER")}
|
|
@@ -14,9 +14,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
14
14
|
const oAppComponent = CommonUtils.getAppComponent(oView);
|
|
15
15
|
const oMetaModel = oAppComponent.getModel().getMetaModel();
|
|
16
16
|
const oPageContext = oView.getBindingContext();
|
|
17
|
+
|
|
17
18
|
//If the link context is same as page context merging of context should not happen
|
|
18
|
-
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext
|
|
19
|
-
if (oExternalNavigationContext?.page && mergeLinkContext) {
|
|
19
|
+
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
|
|
20
|
+
if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
|
|
20
21
|
const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
|
|
21
22
|
let pageAttributes = oPageContext.getObject();
|
|
22
23
|
pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
|
|
@@ -55,4 +56,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
55
56
|
};
|
|
56
57
|
return IntentBasedNavigationOverride;
|
|
57
58
|
}, false);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1BhZ2VDb250ZXh0IiwibWVyZ2VMaW5rQ29udGV4dCIsImxpbmtDb250ZXh0UGF0aCIsImdldFBhdGgiLCJwYWdlIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJwYWdlQXR0cmlidXRlcyIsImdldE9iamVjdCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcm9jZXNzU2VtYW50aWNBdHRyaWJ1dGVzIiwib1BhZ2VDb250ZXh0RGF0YSIsInJlbW92ZVNlbnNpdGl2ZURhdGEiLCJvUGFnZURhdGEiLCJwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9QYWdlUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsInByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJvUGFnZVNWIiwiYWRkUGFnZUNvbnRleHRUb1NlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50Iiwic2VtYW50aWNBdHRyaWJ1dGVzIiwib1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QiLCJhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsInNQcm9wZXJ0eU5hbWUiLCJnZXRTZWxlY3RPcHRpb24iLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibGlua0NvbnRleHQiLCJzZXRQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZW50QmFzZWROYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcblxuY29uc3QgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0b1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0b1RhcmdldEluZm8/OiB7IGxpbmtDb250ZXh0UGF0aDogc3RyaW5nOyBsaW5rQ29udGV4dD86IHVua25vd247IHByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH1cblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyLFxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0ID0gb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dFwiKTtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9QYWdlQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cblx0XHQvL0lmIHRoZSBsaW5rIGNvbnRleHQgaXMgc2FtZSBhcyBwYWdlIGNvbnRleHQgbWVyZ2luZyBvZiBjb250ZXh0IHNob3VsZCBub3QgaGFwcGVuXG5cdFx0Y29uc3QgbWVyZ2VMaW5rQ29udGV4dCA9IG9UYXJnZXRJbmZvPy5saW5rQ29udGV4dFBhdGggPyBvUGFnZUNvbnRleHQ/LmdldFBhdGgoKSAhPT0gb1RhcmdldEluZm8/LmxpbmtDb250ZXh0UGF0aCA6IHRydWU7XG5cdFx0aWYgKG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0Py5wYWdlICYmIG1lcmdlTGlua0NvbnRleHQgJiYgb1BhZ2VDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9QYWdlQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0bGV0IHBhZ2VBdHRyaWJ1dGVzID0gb1BhZ2VDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0cGFnZUF0dHJpYnV0ZXMgPSBvQ29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uLnByb2Nlc3NTZW1hbnRpY0F0dHJpYnV0ZXMob1BhZ2VDb250ZXh0LCBvUGFnZUNvbnRleHQuZ2V0T2JqZWN0KCkpO1xuXHRcdFx0Y29uc3Qgb1BhZ2VDb250ZXh0RGF0YSA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucmVtb3ZlU2Vuc2l0aXZlRGF0YShwYWdlQXR0cmlidXRlcywgc01ldGFQYXRoKSxcblx0XHRcdFx0b1BhZ2VEYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5wcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbihvUGFnZUNvbnRleHREYXRhLCBvUGFnZUNvbnRleHQpLFxuXHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvUGFnZURhdGEucHJvcGVydGllc1dpdGhvdXRDb25mbGljdCxcblx0XHRcdFx0Ly8gVE9ETzogbW92ZSB0aGlzIGFsc28gaW50byB0aGUgaW50ZW50IGJhc2VkIG5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0XHRcdFx0b1BhZ2VTViA9IENvbW1vblV0aWxzLmFkZFBhZ2VDb250ZXh0VG9TZWxlY3Rpb25WYXJpYW50KFxuXHRcdFx0XHRcdG5ldyBTZWxlY3Rpb25WYXJpYW50KCksXG5cdFx0XHRcdFx0b1BhZ2VEYXRhLnNlbWFudGljQXR0cmlidXRlcyBhcyB1bmtub3duW10sXG5cdFx0XHRcdFx0b1ZpZXdcblx0XHRcdFx0KSxcblx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRcdGNvbnN0IGFTZWxlY3RPcHRpb25Qcm9wZXJ0eU5hbWVzID0gb1BhZ2VTVi5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpO1xuXHRcdFx0YVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMuZm9yRWFjaChmdW5jdGlvbiAoc1Byb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0XHRcdGlmICghb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpKSB7XG5cdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lLCBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIE9ubHkgd2hlbiB0aGVyZSBpcyBubyBjb25mbGljdCBkbyB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmdcblx0XHRcdFx0XHQvLyBpbiBhbGwgb3RoZXIgY2FzZSB0aGUgY29uZmxpY3RlZCBwYXRocyBhcmUgYWxyZWFkeSBhZGRlZCBpbiBwcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvblxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIGluY29taW5nIGNvbnRleHQgdGhlbiBhZGQgcGF0aCBmcm9tIGluY29taW5nIGNvbnRleHQgdG8gU1Zcblx0XHRcdFx0XHQvLyBUTy1ETy4gUmVtb3ZlIHRoZSBjaGVjayBmb3Igb1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Qgb25jZSBzZW1hbnRpYyBsaW5rcyBmdW5jdGlvbmFsaXR5IGlzIGNvdmVyZWRcblx0XHRcdFx0XHRpZiAob1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgJiYgc1Byb3BlcnR5TmFtZSBpbiBvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCkge1xuXHRcdFx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQubWFzc0FkZFNlbGVjdE9wdGlvbihcblx0XHRcdFx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbihzUHJvcGVydHlOYW1lKSFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIHBhZ2UgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gcGFnZSBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0aWYgKHNQcm9wZXJ0eU5hbWUgaW4gb1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpIVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyByZW1vdmUgbm9uIHB1YmxpYyBwcm9wZXJ0aWVzIGZyb20gdGFyZ2V0SW5mb1xuXHRcdGRlbGV0ZSBvVGFyZ2V0SW5mbz8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHRkZWxldGUgb1RhcmdldEluZm8/LmxpbmtDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIiwgeyBwYWdlOiB0cnVlIH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQU1BLE1BQU1BLDZCQUE2QixHQUFHO0lBQ3JDQyxzQkFBc0IsRUFBRSxTQUFBQSxDQUV2QkMsaUJBQW1DLEVBQ25DQyxXQUFvSCxFQUM3RztNQUNQLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCQyxXQUFXLEdBQUdGLEtBQUssQ0FBQ0csYUFBYSxDQUFDLENBQW1CO1FBQ3JEQyxxQkFBcUIsR0FBRyxJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDLENBQUNJLGlCQUFpQixDQUFDLFVBQVUsQ0FBeUI7UUFDNUZDLDBCQUEwQixHQUFHRixxQkFBcUIs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
|
|
@@ -3,7 +3,6 @@ import type IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentB
|
|
|
3
3
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
4
4
|
import type PageController from "sap/fe/core/PageController";
|
|
5
5
|
import SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
6
|
-
import type Context from "sap/ui/model/Context";
|
|
7
6
|
|
|
8
7
|
const IntentBasedNavigationOverride = {
|
|
9
8
|
adaptNavigationContext: function (
|
|
@@ -17,10 +16,11 @@ const IntentBasedNavigationOverride = {
|
|
|
17
16
|
oExternalNavigationContext = oInternalModelContext.getProperty("externalNavigationContext");
|
|
18
17
|
const oAppComponent = CommonUtils.getAppComponent(oView);
|
|
19
18
|
const oMetaModel = oAppComponent.getModel().getMetaModel();
|
|
20
|
-
const oPageContext = oView.getBindingContext()
|
|
19
|
+
const oPageContext = oView.getBindingContext();
|
|
20
|
+
|
|
21
21
|
//If the link context is same as page context merging of context should not happen
|
|
22
|
-
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext
|
|
23
|
-
if (oExternalNavigationContext?.page && mergeLinkContext) {
|
|
22
|
+
const mergeLinkContext = oTargetInfo?.linkContextPath ? oPageContext?.getPath() !== oTargetInfo?.linkContextPath : true;
|
|
23
|
+
if (oExternalNavigationContext?.page && mergeLinkContext && oPageContext) {
|
|
24
24
|
const sMetaPath = oMetaModel.getMetaPath(oPageContext.getPath());
|
|
25
25
|
let pageAttributes = oPageContext.getObject();
|
|
26
26
|
pageAttributes = oController._intentBasedNavigation.processSemanticAttributes(oPageContext, oPageContext.getObject());
|
|
@@ -36,7 +36,7 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
36
36
|
controls: [],
|
|
37
37
|
elements: [],
|
|
38
38
|
// eslint-disable-next-line no-template-curly-in-string
|
|
39
|
-
version: "1.145.
|
|
39
|
+
version: "1.145.2",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
42
|
});
|