@sapui5/sap.fe.templates 1.104.1 → 1.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/Component.js +2 -2
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -1
- package/src/sap/fe/templates/Feedback.js +1 -1
- package/src/sap/fe/templates/ListComponent.js +2 -2
- package/src/sap/fe/templates/ListReport/Component.js +2 -2
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +5 -3
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +2 -1
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +10 -73
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +30 -116
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +25 -105
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js +1 -1
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +166 -62
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +129 -41
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/Chart.fragment.xml +3 -0
- package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +10 -4
- package/src/sap/fe/templates/{controls → ListReport/view/fragments}/MacroChart.fragment.xml +3 -2
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +3 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +6 -2
- package/src/sap/fe/templates/{controls → ListReport/view/fragments}/Table.fragment.xml +6 -6
- package/src/sap/fe/templates/ListReport/view/fragments/VariantManagement.fragment.xml +31 -0
- package/src/sap/fe/templates/ObjectPage/Component.js +9 -9
- package/src/sap/fe/templates/ObjectPage/Component.ts +10 -6
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +10 -5
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +6 -2
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +48 -143
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +48 -34
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +45 -29
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +15 -3
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +9 -1
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +178 -0
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +2 -2
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +2 -2
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -2
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Chart.fragment.xml +13 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +2 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +22 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +7 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +8 -49
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionPresentationVisualization.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +23 -0
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +2 -2
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +2 -2
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +2 -2
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
- package/src/sap/fe/templates/TableScroller.js +1 -1
- package/src/sap/fe/templates/library.js +2 -2
- package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
- package/src/sap/fe/templates/messagebundle_cy.properties +2 -2
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -7
- package/src/sap/fe/templates/messagebundle_lv.properties +2 -2
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleModeOld.fragment.xml +0 -50
- package/src/sap/fe/templates/controls/Chart.fragment.xml +0 -25
|
@@ -18,7 +18,7 @@ sap.ui.define(["sap/base/Log", "sap/f/FlexibleColumnLayoutSemanticHelper", "sap/
|
|
|
18
18
|
|
|
19
19
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
20
20
|
|
|
21
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf
|
|
21
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
22
22
|
|
|
23
23
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
24
24
|
|
|
@@ -896,4 +896,4 @@ sap.ui.define(["sap/base/Log", "sap/f/FlexibleColumnLayoutSemanticHelper", "sap/
|
|
|
896
896
|
})), _class2)) || _class);
|
|
897
897
|
return FclController;
|
|
898
898
|
}, false);
|
|
899
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZjbC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkxheW91dFR5cGUiLCJmTGlicmFyeSIsIkNPTlNUQU5UUyIsInBhZ2UiLCJuYW1lcyIsImN1cnJlbnRHZXR0ZXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJnZXR0ZXIiLCJfZ2V0Vmlld0Zyb21Db250YWluZXIiLCJvQ29udGFpbmVyIiwiaXNBIiwiZ2V0Q29tcG9uZW50SW5zdGFuY2UiLCJnZXRSb290Q29udHJvbCIsIkZjbENvbnRyb2xsZXIiLCJkZWZpbmVVSTVDbGFzcyIsInVzaW5nRXh0ZW5zaW9uIiwiVmlld1N0YXRlIiwib3ZlcnJpZGUiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHMiLCJhQ29udHJvbHMiLCJnZXRWaWV3IiwiZ2V0Q29udHJvbGxlciIsIl9nZXRBbGxWaXNpYmxlVmlld3MiLCJmb3JFYWNoIiwib0NoaWxkVmlldyIsInBDaGlsZFZpZXciLCJQcm9taXNlIiwicmVzb2x2ZSIsInB1c2giLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9uUmVzdG9yZSIsIm9WaWV3Iiwib05hdkNvbnRhaW5lciIsImJ5SWQiLCJvRkNMQ29udHJvbGxlciIsIm9JbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJvUGFnZXMiLCJnZXRQcm9wZXJ0eSIsInNDb21wb25lbnRJZCIsInNldFByb3BlcnR5Iiwib25Db250YWluZXJSZWFkeSIsIm9uU3VzcGVuZCIsIm9GQ0xDb250cm9sIiwiZ2V0RmNsQ29udHJvbCIsImFCZWdpbkNvbHVtblBhZ2VzIiwiZ2V0QmVnaW5Db2x1bW5QYWdlcyIsImFNaWRDb2x1bW5QYWdlcyIsImdldE1pZENvbHVtblBhZ2VzIiwiYUVuZENvbHVtblBhZ2VzIiwiZ2V0RW5kQ29sdW1uUGFnZXMiLCJhUGFnZXMiLCJjb25jYXQiLCJvUGFnZSIsIm9UYXJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJvbkluaXQiLCJfaW50ZXJuYWxJbml0IiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImF0dGFjaEJlZm9yZVJvdXRlTWF0Y2hlZCIsIl9nZXRWaWV3Rm9yTmF2aWdhdGVkUm93c0NvbXB1dGF0aW9uIiwib25CZWZvcmVSb3V0ZU1hdGNoZWQiLCJhdHRhY2hSb3V0ZU1hdGNoZWQiLCJvblJvdXRlTWF0Y2hlZCIsImF0dGFjaFN0YXRlQ2hhbmdlIiwiX3NhdmVMYXlvdXQiLCJfb1JvdXRlclByb3h5Iiwic0N1cnJlbnRSb3V0ZU5hbWUiLCJzQ3VycmVudEFyZ3VtZW50cyIsIlNRVUVSWUtFWU5BTUUiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0Um91dGVyUHJveHkiLCJfb0ZDTENvbmZpZyIsIm1heENvbHVtbnNDb3VudCIsIm9Sb3V0aW5nQ29uZmlnIiwiZ2V0TWFuaWZlc3QiLCJyb3V0aW5nIiwiY29uZmlnIiwiZmxleGlibGVDb2x1bW5MYXlvdXQiLCJvRkNMTWFuaWZlc3RDb25maWciLCJkZWZhdWx0VHdvQ29sdW1uTGF5b3V0VHlwZSIsImRlZmF1bHRUaHJlZUNvbHVtbkxheW91dFR5cGUiLCJsaW1pdEZDTFRvVHdvQ29sdW1ucyIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImRlZmF1bHRDb250cm9sQWdncmVnYXRpb24iLCJfaW5pdGlhbGl6ZVRhcmdldEFnZ3JlZ2F0aW9uIiwiX2luaXRpYWxpemVSb3V0ZXNJbmZvcm1hdGlvbiIsImdldENvbnRlbnQiLCJvRXZlbnQiLCJzUHJldmlvdXNMYXlvdXQiLCJnZXRQYXJhbWV0ZXJzIiwibGF5b3V0IiwiYUFsbFZpc2libGVWaWV3c0JlZm9yZVJvdXRlTWF0Y2hlZCIsIm9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkIiwibGVuZ3RoIiwib1JpZ2h0TW9zdFZpZXciLCJhdHRhY2hFdmVudE9uY2UiLCJnZXRQYXJhbWV0ZXIiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsIm9BZGRpdGlvbmFsVmlld0Zvck5hdlJvd3NDb21wdXRhdGlvbiIsImdldFZpZXdGb3JOYXZpZ2F0ZWRSb3dzQ29tcHV0YXRpb24iLCJvbkV4aXQiLCJkZXRhY2hSb3V0ZU1hdGNoZWQiLCJkZXRhY2hCZWZvcmVSb3V0ZU1hdGNoZWQiLCJkZXRhY2hTdGF0ZUNoYW5nZSIsIm9uU3RhdGVDaGFuZ2VkIiwiZGV0YWNoQWZ0ZXJFbmRDb2x1bW5OYXZpZ2F0ZSIsIl9vVGFyZ2V0c0FnZ3JlZ2F0aW9uIiwiX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybiIsIkJhc2VDb250cm9sbGVyIiwicHJvdG90eXBlIiwiYmluZCIsImlzRmNsRW5hYmxlZCIsImRpc3BsYXlNZXNzYWdlUGFnZSIsInNFcnJvck1lc3NhZ2UiLCJtUGFyYW1ldGVycyIsIkZDTExldmVsIiwiYU1lc3NhZ2VQYWdlcyIsIm9NZXNzYWdlUGFnZSIsIk1lc3NhZ2VQYWdlIiwic2hvd0hlYWRlciIsImljb24iLCJhZGRCZWdpbkNvbHVtblBhZ2UiLCJhZGRNaWRDb2x1bW5QYWdlIiwiYWRkRW5kQ29sdW1uUGFnZSIsInNldFRleHQiLCJ0ZWNobmljYWxNZXNzYWdlIiwic2V0Q3VzdG9tRGVzY3JpcHRpb24iLCJMaW5rIiwidGV4dCIsImRlc2NyaXB0aW9uIiwicHJlc3MiLCJNZXNzYWdlQm94Iiwic2hvdyIsIkljb24iLCJFUlJPUiIsInRpdGxlIiwiYWN0aW9ucyIsIkFjdGlvbiIsIk9LIiwiZGVmYXVsdEFjdGlvbiIsImRldGFpbHMiLCJ0ZWNobmljYWxEZXRhaWxzIiwiY29udGVudFdpZHRoIiwic2V0RGVzY3JpcHRpb24iLCJ0byIsImdldElkIiwib01hbmlmZXN0Iiwib1RhcmdldHMiLCJ0YXJnZXRzIiwiT2JqZWN0Iiwia2V5cyIsInNUYXJnZXROYW1lIiwib1RhcmdldCIsImFnZ3JlZ2F0aW9uIiwicGF0dGVybiIsImNvbnRleHRQYXR0ZXJuIiwiYVJvdXRlcyIsInJvdXRlcyIsInJvdXRlIiwidGFyZ2V0IiwiZ2V0Q3VycmVudEFyZ3VtZW50IiwiZ2V0Q3VycmVudFJvdXRlTmFtZSIsImdldENvbnN0YW50cyIsImdldFRhcmdldEFnZ3JlZ2F0aW9uIiwic1JvdXRlTmFtZSIsIl9zY3JvbGxUYWJsZXNUb0xhc3ROYXZpZ2F0ZWRJdGVtcyIsImFWaWV3cyIsInNDdXJyZW50Vmlld1BhdGgiLCJvQWRkaXRpb25hbFZpZXciLCJpbmRleE9mIiwiaW5kZXgiLCJvUHJldmlvdXNWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQYXRoIiwiX3Njcm9sbFRhYmxlc1RvUm93IiwiYklzTmF2aWdhdGlvbkFycm93IiwidW5kZWZpbmVkIiwiX2ZvcmNlTW9kZWxDb250ZXh0Q2hhbmdlT25CcmVhZENydW1icyIsIm5hdlRvIiwib0ZjbCIsImdldFNvdXJjZSIsIm9CcmVhZENydW1icyIsImZpcmVNb2RlbENvbnRleHRDaGFuZ2UiLCJfdXBkYXRlU2hhcmVCdXR0b25WaXNpYmlsaXR5Iiwidmlld0NvbHVtbiIsInNMYXlvdXQiLCJiU2hvd1NoYXJlSWNvbiIsInVwZGF0ZVVJU3RhdGVGb3JWaWV3Iiwib1VJU3RhdGUiLCJnZXRIZWxwZXIiLCJnZXRDdXJyZW50VUlTdGF0ZSIsIm9GY2xDb2xOYW1lIiwiZ2V0TGF5b3V0Iiwic2V0TW9kZWwiLCJfY3JlYXRlSGVscGVyTW9kZWwiLCJhY3Rpb25CdXR0b25zSW5mbyIsIm1pZENvbHVtbiIsImZ1bGxTY3JlZW4iLCJleGl0RnVsbFNjcmVlbiIsImNsb3NlQ29sdW1uIiwiZW5kQ29sdW1uIiwiYmVnaW5Db2x1bW4iLCJvQWN0aW9uQnV0dG9uSW5mb3MiLCJhc3NpZ24iLCJzd2l0Y2hWaXNpYmxlIiwic3dpdGNoSWNvbiIsImlzRnVsbFNjcmVlbiIsIm9RdWVyeVBhcmFtcyIsImFyZ3VtZW50cyIsIm9OZXh0VUlTdGF0ZSIsImdldE5leHRVSVN0YXRlIiwiYVRhcmdldHMiLCJfY29ycmVjdExheW91dEZvclRhcmdldHMiLCJzZXRMYXlvdXQiLCJGbGV4aWJsZUNvbHVtbkxheW91dFNlbWFudGljSGVscGVyIiwiZ2V0SW5zdGFuY2VGb3IiLCJjYWxjdWxhdGVMYXlvdXQiLCJpTmV4dEZDTExldmVsIiwic0hhc2giLCJzUHJvcG9zZWRMYXlvdXQiLCJrZWVwQ3VycmVudExheW91dCIsIm9Sb3V0ZSIsImdldFJvdXRlQnlIYXNoIiwiZ2V0UGF0dGVybiIsImFsbEFsbG93ZWRMYXlvdXRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYUxheW91dHMiLCJzVGFyZ2V0QWdncmVnYXRpb24iLCJFbmRDb2x1bW5GdWxsU2NyZWVuIiwiZ2V0Q3VycmVudEVuZENvbHVtblBhZ2UiLCJNaWRDb2x1bW5GdWxsU2NyZWVuIiwiZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UiLCJPbmVDb2x1bW4iLCJnZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlIiwiVGhyZWVDb2x1bW5zRW5kRXhwYW5kZWQiLCJUaHJlZUNvbHVtbnNNaWRFeHBhbmRlZCIsIlR3b0NvbHVtbnNCZWdpbkV4cGFuZGVkIiwiVHdvQ29sdW1uc01pZEV4cGFuZGVkIiwiVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWRFbmRIaWRkZW4iLCJUaHJlZUNvbHVtbnNCZWdpbkV4cGFuZGVkRW5kSGlkZGVuIiwiTG9nIiwiZXJyb3IiLCJfZ2V0QWxsVmlld3MiLCJzTGF5b3V0V2hlbkV4aXRGdWxsU2NyZWVuIiwiYVJlc3RvcmVQcm9taXNlcyIsInJlZHVjZSIsImFQcm9taXNlcyIsIktlZXBBbGl2ZUhlbHBlciIsInJlc3RvcmVWaWV3IiwiYWxsIiwiZ2V0UmlnaHRtb3N0Q29udGV4dCIsImdldFJpZ2h0bW9zdFZpZXciLCJwb3AiLCJpc0NvbnRleHRVc2VkSW5QYWdlcyIsIm9Db250ZXh0IiwiYUFsbFZpc2libGVWaWV3cyIsImkiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsTUFBTUEsVUFBVSxHQUFHQyxRQUFRLENBQUNELFVBQTVCO0FBRUEsTUFBTUUsU0FBUyxHQUFHO0FBQ2pCQyxJQUFBQSxJQUFJLEVBQUU7QUFDTEMsTUFBQUEsS0FBSyxFQUFF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SUFBSWMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsZ0JBQWdCLENBQUNwSyxNQUFyQyxFQUE2Q3FLLENBQUMsRUFBOUMsRUFBa0Q7QUFDakQsWUFBTXZPLEtBQUssR0FBR3NPLGdCQUFnQixDQUFDQyxDQUFELENBQTlCOztBQUNBLFlBQUksQ0FBQ3ZPLEtBQUwsRUFBWTtBQUNYO0FBQ0EsaUJBQU8sS0FBUDtBQUNBOztBQUNELFlBQUlBLEtBQUssQ0FBQ2tKLGlCQUFOLE9BQThCbUYsUUFBbEMsRUFBNEM7QUFDM0MsaUJBQU8sSUFBUDtBQUNBO0FBQ0Q7O0FBRUQsYUFBTyxLQUFQO0FBQ0EsSzs7O0lBanhCMEJuSixjOzs7Ozs7U0FveEJidEcsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBGbGV4aWJsZUNvbHVtbkxheW91dCBmcm9tIFwic2FwL2YvRmxleGlibGVDb2x1bW5MYXlvdXRcIjtcbmltcG9ydCBGbGV4aWJsZUNvbHVtbkxheW91dFNlbWFudGljSGVscGVyIGZyb20gXCJzYXAvZi9GbGV4aWJsZUNvbHVtbkxheW91dFNlbWFudGljSGVscGVyXCI7XG5pbXBvcnQgZkxpYnJhcnkgZnJvbSBcInNhcC9mL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3gsIHsgQWN0aW9uLCBJY29uIH0gZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlUGFnZSBmcm9tIFwic2FwL20vTWVzc2FnZVBhZ2VcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCIuL1Jvb3RDb250YWluZXJCYXNlQ29udHJvbGxlclwiO1xuXG5jb25zdCBMYXlvdXRUeXBlID0gZkxpYnJhcnkuTGF5b3V0VHlwZTtcblxuY29uc3QgQ09OU1RBTlRTID0ge1xuXHRwYWdlOiB7XG5cdFx0bmFtZXM6IFtcIkJlZ2luQ29sdW1uXCIsIFwiTWlkQ29sdW1uXCIsIFwiRW5kQ29sdW1uXCJdLFxuXHRcdGN1cnJlbnRHZXR0ZXI6IHtcblx0XHRcdHByZWZpeDogXCJnZXRDdXJyZW50XCIsXG5cdFx0XHRzdWZmaXg6IFwiUGFnZVwiXG5cdFx0fSxcblx0XHRnZXR0ZXI6IHtcblx0XHRcdHByZWZpeDogXCJnZXRcIixcblx0XHRcdHN1ZmZpeDogXCJQYWdlc1wiXG5cdFx0fVxuXHR9XG59O1xuY29uc3QgX2dldFZpZXdGcm9tQ29udGFpbmVyID0gZnVuY3Rpb24gKG9Db250YWluZXI6IGFueSkge1xuXHRpZiAob0NvbnRhaW5lci5pc0EoXCJzYXAudWkuY29yZS5Db21wb25lbnRDb250YWluZXJcIikpIHtcblx0XHRyZXR1cm4gb0NvbnRhaW5lci5nZXRDb21wb25lbnRJbnN0YW5jZSgpLmdldFJvb3RDb250cm9sKCk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG9Db250YWluZXI7XG5cdH1cbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbFwiKVxuY2xhc3MgRmNsQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFxuXHRcdFZpZXdTdGF0ZS5vdmVycmlkZSh7XG5cdFx0XHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYUNvbnRyb2xzOiBhbnkpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBGY2xDb250cm9sbGVyKS5fZ2V0QWxsVmlzaWJsZVZpZXdzKCkuZm9yRWFjaChmdW5jdGlvbiAob0NoaWxkVmlldzogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3QgcENoaWxkVmlldyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShvQ2hpbGRWaWV3KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRhQ29udHJvbHMucHVzaChwQ2hpbGRWaWV3KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0YWRhcHRTdGF0ZUNvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhU3RhdGVDb250cm9sczogYW55KSB7XG5cdFx0XHRcdCh0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcikuX2dldEFsbFZpc2libGVWaWV3cygpLmZvckVhY2goZnVuY3Rpb24gKG9DaGlsZFZpZXc6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IHBDaGlsZFZpZXcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUob0NoaWxkVmlldyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChwQ2hpbGRWaWV3KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0b25SZXN0b3JlOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlKSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b05hdkNvbnRhaW5lciA9IG9WaWV3LmJ5SWQoXCJhcHBDb250ZW50XCIpO1xuXHRcdFx0XHRjb25zdCBvRkNMQ29udHJvbGxlciA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKTtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvTmF2Q29udGFpbmVyLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRjb25zdCBvUGFnZXMgPSBvSW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9wYWdlc1wiKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNDb21wb25lbnRJZCBpbiBvUGFnZXMpIHtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShgL3BhZ2VzLyR7c0NvbXBvbmVudElkfS9yZXN0b3JlU3RhdHVzYCwgXCJwZW5kaW5nXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdChvRkNMQ29udHJvbGxlciBhcyBGY2xDb250cm9sbGVyKS5vbkNvbnRhaW5lclJlYWR5KCk7XG5cdFx0XHR9LFxuXHRcdFx0b25TdXNwZW5kOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlKSB7XG5cdFx0XHRcdGNvbnN0IG9GQ0xDb250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIEZjbENvbnRyb2xsZXI7XG5cdFx0XHRcdGNvbnN0IG9GQ0xDb250cm9sID0gb0ZDTENvbnRyb2xsZXIuZ2V0RmNsQ29udHJvbCgpO1xuXHRcdFx0XHRjb25zdCBhQmVnaW5Db2x1bW5QYWdlczogQ29udHJvbFtdID0gb0ZDTENvbnRyb2wuZ2V0QmVnaW5Db2x1bW5QYWdlcygpIHx8IFtdO1xuXHRcdFx0XHRjb25zdCBhTWlkQ29sdW1uUGFnZXM6IENvbnRyb2xbXSA9IG9GQ0xDb250cm9sLmdldE1pZENvbHVtblBhZ2VzKCkgfHwgW107XG5cdFx0XHRcdGNvbnN0IGFFbmRDb2x1bW5QYWdlczogQ29udHJvbFtdID0gb0ZDTENvbnRyb2wuZ2V0RW5kQ29sdW1uUGFnZXMoKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgYVBhZ2VzID0gKFtdIGFzIENvbnRyb2xbXSkuY29uY2F0KGFCZWdpbkNvbHVtblBhZ2VzLCBhTWlkQ29sdW1uUGFnZXMsIGFFbmRDb2x1bW5QYWdlcyk7XG5cblx0XHRcdFx0YVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBvVGFyZ2V0VmlldyA9IF9nZXRWaWV3RnJvbUNvbnRhaW5lcihvUGFnZSk7XG5cblx0XHRcdFx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9UYXJnZXRWaWV3ICYmIG9UYXJnZXRWaWV3LmdldENvbnRyb2xsZXIoKTtcblx0XHRcdFx0XHRpZiAob0NvbnRyb2xsZXIgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlICYmIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5vblN1c3BlbmQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvQ29udHJvbGxlci52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdHZpZXdTdGF0ZSE6IFZpZXdTdGF0ZTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblx0cHJpdmF0ZSBzQ3VycmVudFJvdXRlTmFtZSE6IHN0cmluZztcblx0cHJpdmF0ZSBzQ3VycmVudEFyZ3VtZW50cz86IGFueTtcblx0cHJpdmF0ZSBzUHJldmlvdXNMYXlvdXQhOiBzdHJpbmc7XG5cdHByaXZhdGUgU1FVRVJZS0VZTkFNRSE6IHN0cmluZztcblx0cHJpdmF0ZSBfb0ZDTENvbmZpZzogYW55O1xuXHRwcml2YXRlIG9BZGRpdGlvbmFsVmlld0Zvck5hdlJvd3NDb21wdXRhdGlvbjogYW55O1xuXHRwcml2YXRlIF9vVGFyZ2V0c0FnZ3JlZ2F0aW9uOiBhbnk7XG5cdHByaXZhdGUgX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybjogYW55O1xuXHRwcml2YXRlIGFNZXNzYWdlUGFnZXM/OiBhbnlbXTtcblx0LyoqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5nZXRNZXRhZGF0YVxuXHQgKiBAZnVuY3Rpb25cblx0ICovXG5cblx0b25Jbml0KCkge1xuXHRcdHN1cGVyLm9uSW5pdCgpO1xuXG5cdFx0dGhpcy5faW50ZXJuYWxJbml0KCk7XG5cdH1cblxuXHRhdHRhY2hSb3V0ZU1hdGNoZXJzKCkge1xuXHRcdHRoaXMuZ2V0Um91dGVyKCkuYXR0YWNoQmVmb3JlUm91dGVNYXRjaGVkKHRoaXMuX2dldFZpZXdGb3JOYXZpZ2F0ZWRSb3dzQ29tcHV0YXRpb24sIHRoaXMpO1xuXHRcdHN1cGVyLmF0dGFjaFJvdXRlTWF0Y2hlcnMoKTtcblx0XHR0aGlzLl9pbnRlcm5hbEluaXQoKTtcblxuXHRcdHRoaXMuZ2V0Um91dGVyKCkuYXR0YWNoQmVmb3JlUm91dGVNYXRjaGVkKHRoaXMub25CZWZvcmVSb3V0ZU1hdGNoZWQsIHRoaXMpO1xuXHRcdHRoaXMuZ2V0Um91dGVyKCkuYXR0YWNoUm91dGVNYXRjaGVkKHRoaXMub25Sb3V0ZU1hdGNoZWQsIHRoaXMpO1xuXHRcdHRoaXMuZ2V0RmNsQ29udHJvbCgpLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuX3NhdmVMYXlvdXQsIHRoaXMpO1xuXHR9XG5cblx0X2ludGVybmFsSW5pdCgpIHtcblx0XHRpZiAodGhpcy5fb1JvdXRlclByb3h5KSB7XG5cdFx0XHRyZXR1cm47IC8vIEFscmVhZHkgaW5pdGlhbGl6ZWRcblx0XHR9XG5cblx0XHR0aGlzLnNDdXJyZW50Um91dGVOYW1lID0gXCJcIjtcblx0XHR0aGlzLnNDdXJyZW50QXJndW1lbnRzID0ge307XG5cdFx0dGhpcy5TUVVFUllLRVlOQU1FID0gXCI/cXVlcnlcIjtcblxuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gb0FwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpO1xuXG5cdFx0Ly8gR2V0IEZDTCBjb25maWd1cmF0aW9uIGluIHRoZSBtYW5pZmVzdFxuXHRcdHRoaXMuX29GQ0xDb25maWcgPSB7IG1heENvbHVtbnNDb3VudDogMyB9O1xuXHRcdGNvbnN0IG9Sb3V0aW5nQ29uZmlnID0gKG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKSBhcyBhbnkpW1wic2FwLnVpNVwiXS5yb3V0aW5nO1xuXHRcdGlmIChvUm91dGluZ0NvbmZpZyAmJiBvUm91dGluZ0NvbmZpZy5jb25maWcpIHtcblx0XHRcdGlmIChvUm91dGluZ0NvbmZpZy5jb25maWcuZmxleGlibGVDb2x1bW5MYXlvdXQpIHtcblx0XHRcdFx0Y29uc3Qgb0ZDTE1hbmlmZXN0Q29uZmlnID0gb1JvdXRpbmdDb25maWcuY29uZmlnLmZsZXhpYmxlQ29sdW1uTGF5b3V0O1xuXG5cdFx0XHRcdC8vIERlZmF1bHQgbGF5b3V0IGZvciAyIGNvbHVtbnNcblx0XHRcdFx0aWYgKG9GQ0xNYW5pZmVzdENvbmZpZy5kZWZhdWx0VHdvQ29sdW1uTGF5b3V0VHlwZSkge1xuXHRcdFx0XHRcdHRoaXMuX29GQ0xDb25maWcuZGVmYXVsdFR3b0NvbHVtbkxheW91dFR5cGUgPSBvRkNMTWFuaWZlc3RDb25maWcuZGVmYXVsdFR3b0NvbHVtbkxheW91dFR5cGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBEZWZhdWx0IGxheW91dCBmb3IgMyBjb2x1bW5zXG5cdFx0XHRcdGlmIChvRkNMTWFuaWZlc3RDb25maWcuZGVmYXVsdFRocmVlQ29sdW1uTGF5b3V0VHlwZSkge1xuXHRcdFx0XHRcdHRoaXMuX29GQ0xDb25maWcuZGVmYXVsdFRocmVlQ29sdW1uTGF5b3V0VHlwZSA9IG9GQ0xNYW5pZmVzdENvbmZpZy5kZWZhdWx0VGhyZWVDb2x1bW5MYXlvdXRUeXBlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTGltaXQgRkNMIHRvIDIgY29sdW1ucyA/XG5cdFx0XHRcdGlmIChvRkNMTWFuaWZlc3RDb25maWcubGltaXRGQ0xUb1R3b0NvbHVtbnMgPT09IHRydWUpIHtcblx0XHRcdFx0XHR0aGlzLl9vRkNMQ29uZmlnLm1heENvbHVtbnNDb3VudCA9IDI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvUm91dGluZ0NvbmZpZy5jb25maWcuY29udHJvbEFnZ3JlZ2F0aW9uKSB7XG5cdFx0XHRcdHRoaXMuX29GQ0xDb25maWcuZGVmYXVsdENvbnRyb2xBZ2dyZWdhdGlvbiA9IG9Sb3V0aW5nQ29uZmlnLmNvbmZpZy5jb250cm9sQWdncmVnYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5faW5pdGlhbGl6ZVRhcmdldEFnZ3JlZ2F0aW9uKG9BcHBDb21wb25lbnQpO1xuXHRcdHRoaXMuX2luaXRpYWxpemVSb3V0ZXNJbmZvcm1hdGlvbihvQXBwQ29tcG9uZW50KTtcblx0fVxuXG5cdGdldEZjbENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXSBhcyBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxuXG5cdF9zYXZlTGF5b3V0KG9FdmVudDogYW55KSB7XG5cdFx0dGhpcy5zUHJldmlvdXNMYXlvdXQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVycygpLmxheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGFkZGl0aW9ubmFsIHZpZXcgKG9uIHRvcCBvZiB0aGUgdmlzaWJsZSB2aWV3cyksIHRvIGJlIGFibGUgdG8gY29tcHV0ZSB0aGUgbGF0ZXN0IHRhYmxlIG5hdmlnYXRlZCByb3dzIG9mIHRoZSBtb3N0IHJpZ2h0IHZpc2libGUgdmlldyBhZnRlciBhIG5hdiBiYWNrIG9yIGNvbHVtbiBmdWxsc2NyZWVuLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjX2dldFJpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWRcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqL1xuXG5cdF9nZXRWaWV3Rm9yTmF2aWdhdGVkUm93c0NvbXB1dGF0aW9uKCkge1xuXHRcdGNvbnN0IGFBbGxWaXNpYmxlVmlld3NCZWZvcmVSb3V0ZU1hdGNoZWQgPSB0aGlzLl9nZXRBbGxWaXNpYmxlVmlld3ModGhpcy5zUHJldmlvdXNMYXlvdXQpO1xuXHRcdGNvbnN0IG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkID0gYUFsbFZpc2libGVWaWV3c0JlZm9yZVJvdXRlTWF0Y2hlZFthQWxsVmlzaWJsZVZpZXdzQmVmb3JlUm91dGVNYXRjaGVkLmxlbmd0aCAtIDFdO1xuXHRcdGxldCBvUmlnaHRNb3N0Vmlldztcblx0XHR0aGlzLmdldFJvdXRlcigpLmF0dGFjaEV2ZW50T25jZShcInJvdXRlTWF0Y2hlZFwiLCAob0V2ZW50OiBhbnkpID0+IHtcblx0XHRcdG9SaWdodE1vc3RWaWV3ID0gX2dldFZpZXdGcm9tQ29udGFpbmVyKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2aWV3c1wiKVtvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmlld3NcIikubGVuZ3RoIC0gMV0pO1xuXHRcdFx0aWYgKG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkKSB7XG5cdFx0XHRcdC8vIE5hdmlnYXRpb24gZm9yd2FyZCBmcm9tIEwyIHRvIHZpZXcgbGV2ZWwgTDMgKEZ1bGxTY3JlZW5MYXlvdXQpOlxuXHRcdFx0XHRpZiAob1JpZ2h0TW9zdFZpZXcuZ2V0Vmlld0RhdGEoKSAmJiBvUmlnaHRNb3N0Vmlldy5nZXRWaWV3RGF0YSgpLnZpZXdMZXZlbCA9PT0gdGhpcy5fb0ZDTENvbmZpZy5tYXhDb2x1bW5zQ291bnQpIHtcblx0XHRcdFx0XHR0aGlzLm9BZGRpdGlvbmFsVmlld0Zvck5hdlJvd3NDb21wdXRhdGlvbiA9IG9SaWdodE1vc3RWaWV3O1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE5hdmlnYXRpb25zIGJhY2t3YXJkIGZyb20gTDMgZG93biB0byBMMiwgTDEsIEwwIChUaHJlZUNvbHVtbiBsYXlvdXQpOlxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b1JpZ2h0TW9zdFZpZXcuZ2V0Vmlld0RhdGEoKSAmJlxuXHRcdFx0XHRcdG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkLmdldFZpZXdEYXRhKCkgJiZcblx0XHRcdFx0XHRvUmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZC5nZXRWaWV3RGF0YSgpLnZpZXdMZXZlbCA8IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50ICYmXG5cdFx0XHRcdFx0b1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWQuZ2V0Vmlld0RhdGEoKSAmJlxuXHRcdFx0XHRcdG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkLmdldFZpZXdEYXRhKCkudmlld0xldmVsID4gb1JpZ2h0TW9zdFZpZXcuZ2V0Vmlld0RhdGEoKS52aWV3TGV2ZWwgJiZcblx0XHRcdFx0XHRvUmlnaHRNb3N0VmlldyAhPT0gb1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGhpcy5vQWRkaXRpb25hbFZpZXdGb3JOYXZSb3dzQ29tcHV0YXRpb24gPSBvUmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0Vmlld0Zvck5hdmlnYXRlZFJvd3NDb21wdXRhdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5vQWRkaXRpb25hbFZpZXdGb3JOYXZSb3dzQ29tcHV0YXRpb247XG5cdH1cblxuXHRvbkV4aXQoKSB7XG5cdFx0dGhpcy5nZXRSb3V0ZXIoKS5kZXRhY2hSb3V0ZU1hdGNoZWQodGhpcy5vblJvdXRlTWF0Y2hlZCwgdGhpcyk7XG5cdFx0dGhpcy5nZXRSb3V0ZXIoKS5kZXRhY2hCZWZvcmVSb3V0ZU1hdGNoZWQodGhpcy5vbkJlZm9yZVJvdXRlTWF0Y2hlZCwgdGhpcyk7XG5cdFx0dGhpcy5nZXRGY2xDb250cm9sKCkuZGV0YWNoU3RhdGVDaGFuZ2UodGhpcy5vblN0YXRlQ2hhbmdlZCwgdGhpcyk7XG5cdFx0dGhpcy5nZXRGY2xDb250cm9sKCkuZGV0YWNoQWZ0ZXJFbmRDb2x1bW5OYXZpZ2F0ZSh0aGlzLm9uU3RhdGVDaGFuZ2VkLCB0aGlzKTtcblx0XHR0aGlzLl9vVGFyZ2V0c0FnZ3JlZ2F0aW9uID0gbnVsbDtcblx0XHR0aGlzLl9vVGFyZ2V0c0Zyb21Sb3V0ZVBhdHRlcm4gPSBudWxsO1xuXG5cdFx0QmFzZUNvbnRyb2xsZXIucHJvdG90eXBlLm9uRXhpdC5iaW5kKHRoaXMpKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgdGhlIEZDTCBjb21wb25lbnQgaXMgZW5hYmxlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI2lzRmNsRW5hYmxlZFxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQHJldHVybnMgYHRydWVgIHNpbmNlIHdlIGFyZSBpbiBGQ0wgc2NlbmFyaW9cblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0aXNGY2xFbmFibGVkKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZGlzcGxheU1lc3NhZ2VQYWdlKHNFcnJvck1lc3NhZ2U6IGFueSwgbVBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IG9GQ0xDb250cm9sID0gdGhpcy5nZXRGY2xDb250cm9sKCk7XG5cblx0XHRpZiAodGhpcy5fb0ZDTENvbmZpZyAmJiBtUGFyYW1ldGVycy5GQ0xMZXZlbCA+PSB0aGlzLl9vRkNMQ29uZmlnLm1heENvbHVtbnNDb3VudCkge1xuXHRcdFx0bVBhcmFtZXRlcnMuRkNMTGV2ZWwgPSB0aGlzLl9vRkNMQ29uZmlnLm1heENvbHVtbnNDb3VudCAtIDE7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLmFNZXNzYWdlUGFnZXMpIHtcblx0XHRcdHRoaXMuYU1lc3NhZ2VQYWdlcyA9IFtudWxsLCBudWxsLCBudWxsXTtcblx0XHR9XG5cdFx0bGV0IG9NZXNzYWdlUGFnZSA9IHRoaXMuYU1lc3NhZ2VQYWdlc1ttUGFyYW1ldGVycy5GQ0xMZXZlbF07XG5cdFx0aWYgKCFvTWVzc2FnZVBhZ2UpIHtcblx0XHRcdG9NZXNzYWdlUGFnZSA9IG5ldyBNZXNzYWdlUGFnZSh7XG5cdFx0XHRcdHNob3dIZWFkZXI6IGZhbHNlLFxuXHRcdFx0XHRpY29uOiBcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiXG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuYU1lc3NhZ2VQYWdlc1ttUGFyYW1ldGVycy5GQ0xMZXZlbF0gPSBvTWVzc2FnZVBhZ2U7XG5cblx0XHRcdHN3aXRjaCAobVBhcmFtZXRlcnMuRkNMTGV2ZWwpIHtcblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdG9GQ0xDb250cm9sLmFkZEJlZ2luQ29sdW1uUGFnZShvTWVzc2FnZVBhZ2UpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRvRkNMQ29udHJvbC5hZGRNaWRDb2x1bW5QYWdlKG9NZXNzYWdlUGFnZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRvRkNMQ29udHJvbC5hZGRFbmRDb2x1bW5QYWdlKG9NZXNzYWdlUGFnZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0b01lc3NhZ2VQYWdlLnNldFRleHQoc0Vycm9yTWVzc2FnZSk7XG5cblx0XHRpZiAobVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSkge1xuXHRcdFx0b01lc3NhZ2VQYWdlLnNldEN1c3RvbURlc2NyaXB0aW9uKFxuXHRcdFx0XHRuZXcgTGluayh7XG5cdFx0XHRcdFx0dGV4dDogbVBhcmFtZXRlcnMuZGVzY3JpcHRpb24gfHwgbVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSxcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0TWVzc2FnZUJveC5zaG93KG1QYXJhbWV0ZXJzLnRlY2huaWNhbE1lc3NhZ2UsIHtcblx0XHRcdFx0XHRcdFx0aWNvbjogSWNvbi5FUlJPUixcblx0XHRcdFx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiBbQWN0aW9uLk9LXSxcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogQWN0aW9uLk9LLFxuXHRcdFx0XHRcdFx0XHRkZXRhaWxzOiBtUGFyYW1ldGVycy50ZWNobmljYWxEZXRhaWxzIHx8IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCI2MCVcIlxuXHRcdFx0XHRcdFx0fSBhcyBhbnkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9NZXNzYWdlUGFnZS5zZXREZXNjcmlwdGlvbihtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBcIlwiKTtcblx0XHR9XG5cblx0XHQob0ZDTENvbnRyb2wgYXMgYW55KS50byhvTWVzc2FnZVBhZ2UuZ2V0SWQoKSk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplIHRoZSBvYmplY3QgX29UYXJnZXRzQWdncmVnYXRpb24gdGhhdCBkZWZpbmVzIGZvciBlYWNoIHJvdXRlIHRoZSByZWxldmFudCBhZ2dyZWdhdGlvbiBhbmQgcGF0dGVybi5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjX2luaXRpYWxpemVUYXJnZXRBZ2dyZWdhdGlvblxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBbb0FwcENvbXBvbmVudF0gUmVmZXJlbmNlIHRvIHRoZSBBcHBDb21wb25lbnRcblx0ICovXG5cdF9pbml0aWFsaXplVGFyZ2V0QWdncmVnYXRpb24ob0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0ID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpIGFzIGFueSxcblx0XHRcdG9UYXJnZXRzID0gb01hbmlmZXN0W1wic2FwLnVpNVwiXS5yb3V0aW5nID8gb01hbmlmZXN0W1wic2FwLnVpNVwiXS5yb3V0aW5nLnRhcmdldHMgOiBudWxsO1xuXG5cdFx0dGhpcy5fb1RhcmdldHNBZ2dyZWdhdGlvbiA9IHt9O1xuXG5cdFx0aWYgKG9UYXJnZXRzKSB7XG5cdFx0XHRPYmplY3Qua2V5cyhvVGFyZ2V0cykuZm9yRWFjaCgoc1RhcmdldE5hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRjb25zdCBvVGFyZ2V0ID0gb1RhcmdldHNbc1RhcmdldE5hbWVdO1xuXHRcdFx0XHRpZiAob1RhcmdldC5jb250cm9sQWdncmVnYXRpb24pIHtcblx0XHRcdFx0XHR0aGlzLl9vVGFyZ2V0c0FnZ3JlZ2F0aW9uW3NUYXJnZXROYW1lXSA9IHtcblx0XHRcdFx0XHRcdGFnZ3JlZ2F0aW9uOiBvVGFyZ2V0LmNvbnRyb2xBZ2dyZWdhdGlvbixcblx0XHRcdFx0XHRcdHBhdHRlcm46IG9UYXJnZXQuY29udGV4dFBhdHRlcm5cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX29UYXJnZXRzQWdncmVnYXRpb25bc1RhcmdldE5hbWVdID0ge1xuXHRcdFx0XHRcdFx0YWdncmVnYXRpb246IFwicGFnZVwiLFxuXHRcdFx0XHRcdFx0cGF0dGVybjogbnVsbFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgbWFwcGluZyBiZXR3ZWVuIGEgcm91dGUgKGlkZW50aWZlZCBhcyBpdHMgcGF0dGVybikgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHNcblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjX2luaXRpYWxpemVSb3V0ZXNJbmZvcm1hdGlvblxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBvQXBwQ29tcG9uZW50IHJlZiB0byB0aGUgQXBwQ29tcG9uZW50XG5cdCAqL1xuXG5cdF9pbml0aWFsaXplUm91dGVzSW5mb3JtYXRpb24ob0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0ID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpIGFzIGFueSxcblx0XHRcdGFSb3V0ZXMgPSBvTWFuaWZlc3RbXCJzYXAudWk1XCJdLnJvdXRpbmcgPyBvTWFuaWZlc3RbXCJzYXAudWk1XCJdLnJvdXRpbmcucm91dGVzIDogbnVsbDtcblxuXHRcdHRoaXMuX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybiA9IHt9O1xuXG5cdFx0aWYgKGFSb3V0ZXMpIHtcblx0XHRcdGFSb3V0ZXMuZm9yRWFjaCgocm91dGU6IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLl9vVGFyZ2V0c0Zyb21Sb3V0ZVBhdHRlcm5bcm91dGUucGF0dGVybl0gPSByb3V0ZS50YXJnZXQ7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRnZXRDdXJyZW50QXJndW1lbnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc0N1cnJlbnRBcmd1bWVudHM7XG5cdH1cblxuXHRnZXRDdXJyZW50Um91dGVOYW1lKCkge1xuXHRcdHJldHVybiB0aGlzLnNDdXJyZW50Um91dGVOYW1lO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBGRSBGQ0wgY29uc3RhbnQuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBUaGUgY29uc3RhbnRzXG5cdCAqL1xuXHRnZXRDb25zdGFudHMoKSB7XG5cdFx0cmV0dXJuIENPTlNUQU5UUztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXR0ZXIgZm9yIG9UYXJnZXRzQWdncmVnYXRpb24gYXJyYXkuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI2dldFRhcmdldEFnZ3JlZ2F0aW9uXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHJldHVybnMgVGhlIF9vVGFyZ2V0c0FnZ3JlZ2F0aW9uIGFycmF5XG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0Z2V0VGFyZ2V0QWdncmVnYXRpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29UYXJnZXRzQWdncmVnYXRpb247XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IHRoZSByb3V0ZXIgUm91dGVNYXRjaGVkIGV2ZW50LlxuXHQgKlxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlciNvblJvdXRlTWF0Y2hlZFxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQHBhcmFtIG9FdmVudFxuXHQgKi9cblx0b25Sb3V0ZU1hdGNoZWQob0V2ZW50OiBhbnkpIHtcblx0XHRjb25zdCBzUm91dGVOYW1lID0gb0V2ZW50LmdldFBhcmFtZXRlcihcIm5hbWVcIik7XG5cblx0XHQvLyBTYXZlIHRoZSBjdXJyZW50L3ByZXZpb3VzIHJvdXRlcyBhbmQgYXJndW1lbnRzXG5cdFx0dGhpcy5zQ3VycmVudFJvdXRlTmFtZSA9IHNSb3V0ZU5hbWU7XG5cdFx0dGhpcy5zQ3VycmVudEFyZ3VtZW50cyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJhcmd1bWVudHNcIik7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyaW5nIHRoZSB0YWJsZSBzY3JvbGwgdG8gdGhlIG5hdmlnYXRlZCByb3cgYWZ0ZXIgZWFjaCBsYXlvdXQgY2hhbmdlLlxuXHQgKlxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlciNzY3JvbGxUb0xhc3RTZWxlY3RlZEl0ZW1cblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqL1xuXG5cdF9zY3JvbGxUYWJsZXNUb0xhc3ROYXZpZ2F0ZWRJdGVtcygpIHtcblx0XHRjb25zdCBhVmlld3MgPSB0aGlzLl9nZXRBbGxWaXNpYmxlVmlld3MoKTtcblx0XHQvL1RoZSBzY3JvbGxzIGFyZSB0cmlnZ2VyZWQgb25seSBpZiB0aGUgbGF5b3V0IGlzIHdpdGggc2V2ZXJhbCBjb2x1bW5zIG9yIHdoZW4gc3dpdGNoaW5nIHRoZSBtb3N0UmlnaHQgY29sdW1uIGluIGZ1bGwgc2NyZWVuXG5cdFx0aWYgKGFWaWV3cy5sZW5ndGggPiAxIHx8IGFWaWV3c1swXS5nZXRWaWV3RGF0YSgpLnZpZXdMZXZlbCA8IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50KSB7XG5cdFx0XHRsZXQgc0N1cnJlbnRWaWV3UGF0aDtcblx0XHRcdGNvbnN0IG9BZGRpdGlvbmFsVmlldyA9IHRoaXMuZ2V0Vmlld0Zvck5hdmlnYXRlZFJvd3NDb21wdXRhdGlvbigpO1xuXHRcdFx0aWYgKG9BZGRpdGlvbmFsVmlldyAmJiBhVmlld3MuaW5kZXhPZihvQWRkaXRpb25hbFZpZXcpID09PSAtMSkge1xuXHRcdFx0XHRhVmlld3MucHVzaChvQWRkaXRpb25hbFZpZXcpO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaW5kZXggPSBhVmlld3MubGVuZ3RoIC0gMTsgaW5kZXggPiAwOyBpbmRleC0tKSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gYVZpZXdzW2luZGV4XSxcblx0XHRcdFx0XHRvUHJldmlvdXNWaWV3ID0gYVZpZXdzW2luZGV4IC0gMV07XG5cdFx0XHRcdGlmIChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRcdFx0c0N1cnJlbnRWaWV3UGF0aCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0UGF0aCgpO1xuXHRcdFx0XHRcdG9QcmV2aW91c1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9zY3JvbGxUYWJsZXNUb1JvdyhzQ3VycmVudFZpZXdQYXRoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIEZDTCBTdGF0ZUNoYW5nZWQgZXZlbnQuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI29uU3RhdGVDaGFuZ2VkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRvblN0YXRlQ2hhbmdlZChvRXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IGJJc05hdmlnYXRpb25BcnJvdyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJpc05hdmlnYXRpb25BcnJvd1wiKTtcblx0XHRpZiAodGhpcy5zQ3VycmVudEFyZ3VtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAoIXRoaXMuc0N1cnJlbnRBcmd1bWVudHNbdGhpcy5TUVVFUllLRVlOQU1FXSkge1xuXHRcdFx0XHR0aGlzLnNDdXJyZW50QXJndW1lbnRzW3RoaXMuU1FVRVJZS0VZTkFNRV0gPSB7fTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc0N1cnJlbnRBcmd1bWVudHNbdGhpcy5TUVVFUllLRVlOQU1FXS5sYXlvdXQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwibGF5b3V0XCIpO1xuXHRcdH1cblx0XHR0aGlzLl9mb3JjZU1vZGVsQ29udGV4dENoYW5nZU9uQnJlYWRDcnVtYnMob0V2ZW50KTtcblxuXHRcdC8vIFJlcGxhY2UgdGhlIFVSTCB3aXRoIHRoZSBuZXcgbGF5b3V0IGlmIGEgbmF2aWdhdGlvbiBhcnJvdyB3YXMgdXNlZFxuXHRcdGlmIChiSXNOYXZpZ2F0aW9uQXJyb3cpIHtcblx0XHRcdHRoaXMuX29Sb3V0ZXJQcm94eS5uYXZUbyh0aGlzLnNDdXJyZW50Um91dGVOYW1lLCB0aGlzLnNDdXJyZW50QXJndW1lbnRzKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZmlyZSBNb2RlbENvbnRleHRDaGFuZ2UgZXZlbnQgb24gYWxsIGJyZWFkY3J1bWJzICggb24gZWFjaCBPYmplY3RQYWdlcykuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI19mb3JjZU1vZGVsQ29udGV4dENoYW5nZU9uQnJlYWRDcnVtYnNcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdF9mb3JjZU1vZGVsQ29udGV4dENoYW5nZU9uQnJlYWRDcnVtYnMob0V2ZW50OiBhbnkpIHtcblx0XHQvL2ZvcmNlIG1vZGVsY29udGV4dGNoYW5nZSBvbiBPYmplY3RQYWdlcyB0byByZWZyZXNoIHRoZSBicmVhZGNydW1icyBsaW5rIGhyZWZzXG5cdFx0Y29uc3Qgb0ZjbCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRsZXQgb1BhZ2VzOiBhbnlbXSA9IFtdO1xuXHRcdG9QYWdlcyA9IG9QYWdlcy5jb25jYXQob0ZjbC5nZXRCZWdpbkNvbHVtblBhZ2VzKCkpLmNvbmNhdChvRmNsLmdldE1pZENvbHVtblBhZ2VzKCkpLmNvbmNhdChvRmNsLmdldEVuZENvbHVtblBhZ2VzKCkpO1xuXHRcdG9QYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZTogYW55KSB7XG5cdFx0XHRjb25zdCBvVmlldyA9IF9nZXRWaWV3RnJvbUNvbnRhaW5lcihvUGFnZSk7XG5cdFx0XHRjb25zdCBvQnJlYWRDcnVtYnMgPSBvVmlldy5ieUlkICYmIG9WaWV3LmJ5SWQoXCJicmVhZGNydW1ic1wiKTtcblx0XHRcdGlmIChvQnJlYWRDcnVtYnMpIHtcblx0XHRcdFx0b0JyZWFkQ3J1bWJzLmZpcmVNb2RlbENvbnRleHRDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0cmlnZ2VyZWQgdG8gdXBkYXRlIHRoZSBTaGFyZSBidXR0b24gVmlzaWJpbGl0eS5cblx0ICpcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3Q29sdW1uIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29sdW1uIChcImJlZ2luQ29sdW1uXCIsIFwibWlkQ29sdW1uXCIsIFwiZW5kQ29sdW1uXCIpXG5cdCAqIEBwYXJhbSBzTGF5b3V0IFRoZSBjdXJyZW50IGxheW91dCB1c2VkIGJ5IHRoZSBGQ0xcblx0ICogQHJldHVybnMgVGhlIHNoYXJlIGJ1dHRvbiB2aXNpYmlsaXR5XG5cdCAqL1xuXHRfdXBkYXRlU2hhcmVCdXR0b25WaXNpYmlsaXR5KHZpZXdDb2x1bW46IHN0cmluZywgc0xheW91dDogc3RyaW5nKSB7XG5cdFx0bGV0IGJTaG93U2hhcmVJY29uO1xuXHRcdHN3aXRjaCAoc0xheW91dCkge1xuXHRcdFx0Y2FzZSBcIk9uZUNvbHVtblwiOlxuXHRcdFx0XHRiU2hvd1NoYXJlSWNvbiA9IHZpZXdDb2x1bW4gPT09IFwiYmVnaW5Db2x1bW5cIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiOlxuXHRcdFx0Y2FzZSBcIlRocmVlQ29sdW1uc0JlZ2luRXhwYW5kZWRFbmRIaWRkZW5cIjpcblx0XHRcdGNhc2UgXCJUaHJlZUNvbHVtbnNNaWRFeHBhbmRlZEVuZEhpZGRlblwiOlxuXHRcdFx0Y2FzZSBcIlR3b0NvbHVtbnNCZWdpbkV4cGFuZGVkXCI6XG5cdFx0XHRjYXNlIFwiVHdvQ29sdW1uc01pZEV4cGFuZGVkXCI6XG5cdFx0XHRcdGJTaG93U2hhcmVJY29uID0gdmlld0NvbHVtbiA9PT0gXCJtaWRDb2x1bW5cIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiOlxuXHRcdFx0Y2FzZSBcIlRocmVlQ29sdW1uc0VuZEV4cGFuZGVkXCI6XG5cdFx0XHRjYXNlIFwiVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWRcIjpcblx0XHRcdFx0YlNob3dTaGFyZUljb24gPSB2aWV3Q29sdW1uID09PSBcImVuZENvbHVtblwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJTaG93U2hhcmVJY29uID0gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBiU2hvd1NoYXJlSWNvbjtcblx0fVxuXG5cdHVwZGF0ZVVJU3RhdGVGb3JWaWV3KG9WaWV3OiBhbnksIEZDTExldmVsOiBhbnkpIHtcblx0XHRjb25zdCBvVUlTdGF0ZSA9IHRoaXMuZ2V0SGVscGVyKCkuZ2V0Q3VycmVudFVJU3RhdGUoKSBhcyBhbnksXG5cdFx0XHRvRmNsQ29sTmFtZSA9IFtcImJlZ2luQ29sdW1uXCIsIFwibWlkQ29sdW1uXCIsIFwiZW5kQ29sdW1uXCJdLFxuXHRcdFx0c0xheW91dCA9IHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldExheW91dCgpO1xuXHRcdGxldCB2aWV3Q29sdW1uO1xuXG5cdFx0aWYgKCFvVmlldy5nZXRNb2RlbChcImZjbGhlbHBlclwiKSkge1xuXHRcdFx0b1ZpZXcuc2V0TW9kZWwodGhpcy5fY3JlYXRlSGVscGVyTW9kZWwoKSwgXCJmY2xoZWxwZXJcIik7XG5cdFx0fVxuXHRcdGlmIChGQ0xMZXZlbCA+PSB0aGlzLl9vRkNMQ29uZmlnLm1heENvbHVtbnNDb3VudCkge1xuXHRcdFx0Ly8gVGhlIHZpZXcgaXMgb24gYSBsZXZlbCA+IG1heCBudW1iZXIgb2YgY29sdW1ucy4gSXQncyBhbHdheXMgZnVsbHNjcmVlbiB3aXRob3V0IGNsb3NlL2V4aXQgYnV0dG9uc1xuXHRcdFx0dmlld0NvbHVtbiA9IG9GY2xDb2xOYW1lW3RoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50IC0gMV07XG5cdFx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5taWRDb2x1bW4uZnVsbFNjcmVlbiA9IG51bGw7XG5cdFx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5taWRDb2x1bW4uZXhpdEZ1bGxTY3JlZW4gPSBudWxsO1xuXHRcdFx0b1VJU3RhdGUuYWN0aW9uQnV0dG9uc0luZm8ubWlkQ29sdW1uLmNsb3NlQ29sdW1uID0gbnVsbDtcblx0XHRcdG9VSVN0YXRlLmFjdGlvbkJ1dHRvbnNJbmZvLmVuZENvbHVtbi5leGl0RnVsbFNjcmVlbiA9IG51bGw7XG5cdFx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5lbmRDb2x1bW4uZnVsbFNjcmVlbiA9IG51bGw7XG5cdFx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5lbmRDb2x1bW4uY2xvc2VDb2x1bW4gPSBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2aWV3Q29sdW1uID0gb0ZjbENvbE5hbWVbRkNMTGV2ZWxdO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdEZDTExldmVsID49IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50IHx8XG5cdFx0XHRzTGF5b3V0ID09PSBcIkVuZENvbHVtbkZ1bGxTY3JlZW5cIiB8fFxuXHRcdFx0c0xheW91dCA9PT0gXCJNaWRDb2x1bW5GdWxsU2NyZWVuXCIgfHxcblx0XHRcdHNMYXlvdXQgPT09IFwiT25lQ29sdW1uXCJcblx0XHQpIHtcblx0XHRcdG9WaWV3LmdldE1vZGVsKFwiZmNsaGVscGVyXCIpLnNldFByb3BlcnR5KFwiL2JyZWFkQ3J1bWJJc1Zpc2libGVcIiwgdHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9WaWV3LmdldE1vZGVsKFwiZmNsaGVscGVyXCIpLnNldFByb3BlcnR5KFwiL2JyZWFkQ3J1bWJJc1Zpc2libGVcIiwgZmFsc2UpO1xuXHRcdH1cblx0XHQvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgRkNMSGVscGVyIGRvZXNuJ3QgcHJvdmlkZSBhY3Rpb25CdXR0b24gdmFsdWVzIGZvciB0aGUgZmlyc3QgY29sdW1uXG5cdFx0Ly8gc28gd2UgaGF2ZSB0byBhZGQgdGhpcyBpbmZvIG1hbnVhbGx5XG5cdFx0b1VJU3RhdGUuYWN0aW9uQnV0dG9uc0luZm8uYmVnaW5Db2x1bW4gPSB7IGZ1bGxTY3JlZW46IG51bGwsIGV4aXRGdWxsU2NyZWVuOiBudWxsLCBjbG9zZUNvbHVtbjogbnVsbCB9O1xuXG5cdFx0Y29uc3Qgb0FjdGlvbkJ1dHRvbkluZm9zID0gT2JqZWN0LmFzc2lnbih7fSwgb1VJU3RhdGUuYWN0aW9uQnV0dG9uc0luZm9bdmlld0NvbHVtbl0pO1xuXHRcdG9BY3Rpb25CdXR0b25JbmZvcy5zd2l0Y2hWaXNpYmxlID0gb0FjdGlvbkJ1dHRvbkluZm9zLmZ1bGxTY3JlZW4gIT09IG51bGwgfHwgb0FjdGlvbkJ1dHRvbkluZm9zLmV4aXRGdWxsU2NyZWVuICE9PSBudWxsO1xuXHRcdG9BY3Rpb25CdXR0b25JbmZvcy5zd2l0Y2hJY29uID0gb0FjdGlvbkJ1dHRvbkluZm9zLmZ1bGxTY3JlZW4gIT09IG51bGwgPyBcInNhcC1pY29uOi8vZnVsbC1zY3JlZW5cIiA6IFwic2FwLWljb246Ly9leGl0LWZ1bGwtc2NyZWVuXCI7XG5cdFx0b0FjdGlvbkJ1dHRvbkluZm9zLmlzRnVsbFNjcmVlbiA9IG9BY3Rpb25CdXR0b25JbmZvcy5mdWxsU2NyZWVuID09PSBudWxsO1xuXG5cdFx0b1ZpZXcuZ2V0TW9kZWwoXCJmY2xoZWxwZXJcIikuc2V0UHJvcGVydHkoXCIvYWN0aW9uQnV0dG9uc0luZm9cIiwgb0FjdGlvbkJ1dHRvbkluZm9zKTtcblxuXHRcdG9WaWV3LmdldE1vZGVsKFwiZmNsaGVscGVyXCIpLnNldFByb3BlcnR5KFwiL3Nob3dTaGFyZUljb25cIiwgdGhpcy5fdXBkYXRlU2hhcmVCdXR0b25WaXNpYmlsaXR5KHZpZXdDb2x1bW4sIHNMYXlvdXQpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIHJvdXRlciBCZWZvcmVSb3V0ZU1hdGNoZWQgZXZlbnQuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI29uQmVmb3JlUm91dGVNYXRjaGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRvbkJlZm9yZVJvdXRlTWF0Y2hlZChvRXZlbnQ6IGFueSkge1xuXHRcdGlmIChvRXZlbnQpIHtcblx0XHRcdGNvbnN0IG9RdWVyeVBhcmFtcyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkuYXJndW1lbnRzW3RoaXMuU1FVRVJZS0VZTkFNRV07XG5cdFx0XHRsZXQgc0xheW91dCA9IG9RdWVyeVBhcmFtcyA/IG9RdWVyeVBhcmFtcy5sYXlvdXQgOiBudWxsO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBsYXlvdXQgcGFyYW1ldGVyLCBxdWVyeSBmb3IgdGhlIGRlZmF1bHQgbGV2ZWwgMCBsYXlvdXQgKG5vcm1hbGx5IE9uZUNvbHVtbilcblx0XHRcdGlmICghc0xheW91dCkge1xuXHRcdFx0XHRjb25zdCBvTmV4dFVJU3RhdGUgPSB0aGlzLmdldEhlbHBlcigpLmdldE5leHRVSVN0YXRlKDApO1xuXHRcdFx0XHRzTGF5b3V0ID0gb05leHRVSVN0YXRlLmxheW91dDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIGxheW91dCBpZiBjb21wYXRpYmxlIHdpdGggdGhlIG51bWJlciBvZiB0YXJnZXRzXG5cdFx0XHQvLyBUaGlzIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhc2UgZm9yIG5vcm1hbCBuYXZpZ2F0aW9uLCBqdXN0IG5lZWRlZCBpbiBjYXNlXG5cdFx0XHQvLyB0aGUgVVJMIGhhcyBiZWVuIG1hbnVhbGx5IG1vZGlmaWVkXG5cdFx0XHRjb25zdCBhVGFyZ2V0cyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25maWdcIikudGFyZ2V0O1xuXHRcdFx0c0xheW91dCA9IHRoaXMuX2NvcnJlY3RMYXlvdXRGb3JUYXJnZXRzKHNMYXlvdXQsIGFUYXJnZXRzKTtcblxuXHRcdFx0Ly8gVXBkYXRlIHRoZSBsYXlvdXQgb2YgdGhlIEZsZXhpYmxlQ29sdW1uTGF5b3V0XG5cdFx0XHRpZiAoc0xheW91dCkge1xuXHRcdFx0XHR0aGlzLmdldEZjbENvbnRyb2woKS5zZXRMYXlvdXQoc0xheW91dCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhlbHBlciBmb3IgdGhlIEZDTCBDb21wb25lbnQuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI2dldEhlbHBlclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQHJldHVybnMgSW5zdGFuY2Ugb2YgYSBzZW1hbnRpYyBoZWxwZXJcblx0ICovXG5cdGdldEhlbHBlcigpIHtcblx0XHRyZXR1cm4gRmxleGlibGVDb2x1bW5MYXlvdXRTZW1hbnRpY0hlbHBlci5nZXRJbnN0YW5jZUZvcih0aGlzLmdldEZjbENvbnRyb2woKSwgdGhpcy5fb0ZDTENvbmZpZyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlcyB0aGUgRkNMIGxheW91dCBmb3IgYSBnaXZlbiBGQ0wgbGV2ZWwgYW5kIGEgdGFyZ2V0IGhhc2guXG5cdCAqXG5cdCAqIEBwYXJhbSBpTmV4dEZDTExldmVsIEZDTCBsZXZlbCB0byBiZSBuYXZpZ2F0ZWQgdG9cblx0ICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gc1Byb3Bvc2VkTGF5b3V0IFRoZSBwcm9wb3NlZCBsYXlvdXRcblx0ICogQHBhcmFtIGtlZXBDdXJyZW50TGF5b3V0IFRydWUgaWYgd2Ugd2FudCB0byBrZWVwIHRoZSBjdXJyZW50IGxheW91dCBpZiBwb3NzaWJsZVxuXHQgKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBsYXlvdXRcblx0ICovXG5cdGNhbGN1bGF0ZUxheW91dChpTmV4dEZDTExldmVsOiBudW1iZXIsIHNIYXNoOiBzdHJpbmcsIHNQcm9wb3NlZExheW91dDogc3RyaW5nIHwgdW5kZWZpbmVkLCBrZWVwQ3VycmVudExheW91dDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuXHRcdC8vIEZpcnN0LCBhc2sgdGhlIEZDTCBoZWxwZXIgdG8gY2FsY3VsYXRlIHRoZSBsYXlvdXQgaWYgbm90aGluZyBpcyBwcm9wb3NlZFxuXHRcdGlmICghc1Byb3Bvc2VkTGF5b3V0KSB7XG5cdFx0XHRzUHJvcG9zZWRMYXlvdXQgPSBrZWVwQ3VycmVudExheW91dCA/IHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldExheW91dCgpIDogdGhpcy5nZXRIZWxwZXIoKS5nZXROZXh0VUlTdGF0ZShpTmV4dEZDTExldmVsKS5sYXlvdXQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlbiBjaGFuZ2UgdGhpcyB2YWx1ZSBpZiBuZWNlc3NhcnksIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgdGFyZ2V0c1xuXHRcdGNvbnN0IG9Sb3V0ZSA9ICh0aGlzLmdldFJvdXRlcigpIGFzIGFueSkuZ2V0Um91dGVCeUhhc2goYCR7c0hhc2h9P2xheW91dD0ke3NQcm9wb3NlZExheW91dH1gKTtcblx0XHRjb25zdCBhVGFyZ2V0cyA9IHRoaXMuX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybltvUm91dGUuZ2V0UGF0dGVybigpXTtcblxuXHRcdHJldHVybiB0aGlzLl9jb3JyZWN0TGF5b3V0Rm9yVGFyZ2V0cyhzUHJvcG9zZWRMYXlvdXQsIGFUYXJnZXRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIEZDTCBsYXlvdXQgaXMgY29tcGF0aWJsZSB3aXRoIGFuIGFycmF5IG9mIHRhcmdldHMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUHJvcG9zZWRMYXlvdXQgUHJvcG9zZWQgdmFsdWUgZm9yIHRoZSBGQ0wgbGF5b3V0XG5cdCAqIEBwYXJhbSBhVGFyZ2V0cyBBcnJheSBvZiB0YXJnZXQgbmFtZXMgdXNlZCBmb3IgY2hlY2tpbmdcblx0ICogQHJldHVybnMgVGhlIGNvcnJlY3RlZCBsYXlvdXRcblx0ICovXG5cdF9jb3JyZWN0TGF5b3V0Rm9yVGFyZ2V0cyhzUHJvcG9zZWRMYXlvdXQ6IGFueSwgYVRhcmdldHM6IGFueSkge1xuXHRcdGNvbnN0IGFsbEFsbG93ZWRMYXlvdXRzOiBhbnkgPSB7XG5cdFx0XHRcIjJcIjogW1wiVHdvQ29sdW1uc01pZEV4cGFuZGVkXCIsIFwiVHdvQ29sdW1uc0JlZ2luRXhwYW5kZWRcIiwgXCJNaWRDb2x1bW5GdWxsU2NyZWVuXCJdLFxuXHRcdFx0XCIzXCI6IFtcblx0XHRcdFx0XCJUaHJlZUNvbHVtbnNNaWRFeHBhbmRlZFwiLFxuXHRcdFx0XHRcIlRocmVlQ29sdW1uc0VuZEV4cGFuZGVkXCIsXG5cdFx0XHRcdFwiVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWRFbmRIaWRkZW5cIixcblx0XHRcdFx0XCJUaHJlZUNvbHVtbnNCZWdpbkV4cGFuZGVkRW5kSGlkZGVuXCIsXG5cdFx0XHRcdFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiLFxuXHRcdFx0XHRcIkVuZENvbHVtbkZ1bGxTY3JlZW5cIlxuXHRcdFx0XVxuXHRcdH07XG5cblx0XHRpZiAoYVRhcmdldHMgJiYgIUFycmF5LmlzQXJyYXkoYVRhcmdldHMpKSB7XG5cdFx0XHQvLyBUbyBzdXBwb3J0IHNpbmdsZSB0YXJnZXQgYXMgYSBzdHJpbmcgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRhVGFyZ2V0cyA9IFthVGFyZ2V0c107XG5cdFx0fVxuXG5cdFx0aWYgKCFhVGFyZ2V0cykge1xuXHRcdFx0Ly8gRGVmZW5zaXZlLCBqdXN0IGluIGNhc2UuLi5cblx0XHRcdHJldHVybiBzUHJvcG9zZWRMYXlvdXQ7XG5cdFx0fSBlbHNlIGlmIChhVGFyZ2V0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBNb3JlIHRoYW4gMSB0YXJnZXQ6IGp1c3Qgc2ltcGx5IGNoZWNrIGZyb20gdGhlIGFsbG93ZWQgdmFsdWVzXG5cdFx0XHRjb25zdCBhTGF5b3V0cyA9IGFsbEFsbG93ZWRMYXlvdXRzW2FUYXJnZXRzLmxlbmd0aF07XG5cdFx0XHRpZiAoYUxheW91dHMuaW5kZXhPZihzUHJvcG9zZWRMYXlvdXQpIDwgMCkge1xuXHRcdFx0XHQvLyBUaGUgcHJvcG9zZWQgbGF5b3V0IGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUgbnVtYmVyIG9mIGNvbHVtbnNcblx0XHRcdFx0Ly8gLS0+IEFzayB0aGUgaGVscGVyIGZvciB0aGUgZGVmYXVsdCBsYXlvdXQgZm9yIHRoZSBudW1iZXIgb2YgY29sdW1uc1xuXHRcdFx0XHRzUHJvcG9zZWRMYXlvdXQgPSBhTGF5b3V0c1swXTsgLy90aGlzLmdldEhlbHBlcigpLmdldE5leHRVSVN0YXRlKGFUYXJnZXRzLmxlbmd0aCAtIDEpLmxheW91dDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gT25seSBvbmUgdGFyZ2V0XG5cdFx0XHRjb25zdCBzVGFyZ2V0QWdncmVnYXRpb24gPSB0aGlzLmdldFRhcmdldEFnZ3JlZ2F0aW9uKClbYVRhcmdldHNbMF1dLmFnZ3JlZ2F0aW9uIHx8IHRoaXMuX29GQ0xDb25maWcuZGVmYXVsdENvbnRyb2xBZ2dyZWdhdGlvbjtcblx0XHRcdHN3aXRjaCAoc1RhcmdldEFnZ3JlZ2F0aW9uKSB7XG5cdFx0XHRcdGNhc2UgXCJiZWdpbkNvbHVtblBhZ2VzXCI6XG5cdFx0XHRcdFx0c1Byb3Bvc2VkTGF5b3V0ID0gXCJPbmVDb2x1bW5cIjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIm1pZENvbHVtblBhZ2VzXCI6XG5cdFx0XHRcdFx0c1Byb3Bvc2VkTGF5b3V0ID0gXCJNaWRDb2x1bW5GdWxsU2NyZWVuXCI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJlbmRDb2x1bW5QYWdlc1wiOlxuXHRcdFx0XHRcdHNQcm9wb3NlZExheW91dCA9IFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNQcm9wb3NlZExheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBnZXQgYWxsIHZpc2libGUgdmlld3MgaW4gdGhlIEZDTCBjb21wb25lbnQuXG5cdCAqIHNMYXlvdXQgb3B0aW9uYWwgcGFyYW1ldGVyIGlzIHZlcnkgc3BlY2lmaWMgYXMgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGxhdGVzdCBuYXZpZ2F0ZWQgcm93XG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gc0xheW91dCBMYXlvdXQgdGhhdCB3YXMgYXBwbGllZCBqdXN0IGJlZm9yZSB0aGUgY3VycmVudCBuYXZpZ2F0aW9uXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gcmV0dXJuIHZpZXdzXG5cdCAqL1xuXG5cdF9nZXRBbGxWaXNpYmxlVmlld3Moc0xheW91dD86IGFueSkge1xuXHRcdGNvbnN0IGFWaWV3cyA9IFtdO1xuXHRcdHNMYXlvdXQgPSBzTGF5b3V0ID8gc0xheW91dCA6IHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldExheW91dCgpO1xuXHRcdHN3aXRjaCAoc0xheW91dCkge1xuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLkVuZENvbHVtbkZ1bGxTY3JlZW46XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRFbmRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLk1pZENvbHVtbkZ1bGxTY3JlZW46XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLk9uZUNvbHVtbjpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlRocmVlQ29sdW1uc0VuZEV4cGFuZGVkOlxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlRocmVlQ29sdW1uc01pZEV4cGFuZGVkOlxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEVuZENvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5Ud29Db2x1bW5zQmVnaW5FeHBhbmRlZDpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5Ud29Db2x1bW5zTWlkRXhwYW5kZWQ6XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWRFbmRIaWRkZW46XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zQmVnaW5FeHBhbmRlZEVuZEhpZGRlbjpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdExvZy5lcnJvcihgVW5oYW5kbGVkIHN3aXRjaCBjYXNlIGZvciAke3RoaXMuZ2V0RmNsQ29udHJvbCgpLmdldExheW91dCgpfWApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhVmlld3M7XG5cdH1cblx0X2dldEFsbFZpZXdzKHNMYXlvdXQ/OiBhbnkpIHtcblx0XHRjb25zdCBhVmlld3MgPSBbXTtcblx0XHRzTGF5b3V0ID0gc0xheW91dCA/IHNMYXlvdXQgOiB0aGlzLmdldEZjbENvbnRyb2woKS5nZXRMYXlvdXQoKTtcblx0XHRzd2l0Y2ggKHNMYXlvdXQpIHtcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5PbmVDb2x1bW46XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zRW5kRXhwYW5kZWQ6XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWQ6XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWRFbmRIaWRkZW46XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zQmVnaW5FeHBhbmRlZEVuZEhpZGRlbjpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5FbmRDb2x1bW5GdWxsU2NyZWVuOlxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEVuZENvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5Ud29Db2x1bW5zQmVnaW5FeHBhbmRlZDpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5Ud29Db2x1bW5zTWlkRXhwYW5kZWQ6XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIExheW91dFR5cGUuTWlkQ29sdW1uRnVsbFNjcmVlbjpcblx0XHRcdFx0Ly8gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbWlkIGNvbHVtbiBmdWxsc2NyZWVuIGNvbWVzIGZyb20gYSAyIG9yIGEgMyBjb2x1bW4gbGF5b3V0XG5cdFx0XHRcdGNvbnN0IHNMYXlvdXRXaGVuRXhpdEZ1bGxTY3JlZW4gPSAodGhpcy5nZXRIZWxwZXIoKS5nZXRDdXJyZW50VUlTdGF0ZSgpIGFzIGFueSkuYWN0aW9uQnV0dG9uc0luZm8ubWlkQ29sdW1uLmV4aXRGdWxsU2NyZWVuO1xuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc0xheW91dFdoZW5FeGl0RnVsbFNjcmVlbi5pbmRleE9mKFwiVGhyZWVDb2x1bW5cIikgPj0gMCkge1xuXHRcdFx0XHRcdC8vIFdlIGNvbWUgZnJvbSBhIDMgY29sdW1uIGxheW91dFxuXHRcdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEVuZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0TG9nLmVycm9yKGBVbmhhbmRsZWQgc3dpdGNoIGNhc2UgZm9yICR7dGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0TGF5b3V0KCl9YCk7XG5cdFx0fVxuXHRcdHJldHVybiBhVmlld3M7XG5cdH1cblxuXHRvbkNvbnRhaW5lclJlYWR5KCkge1xuXHRcdC8vIFJlc3RvcmUgdmlld3MgaWYgbmVjY2Vzc2FyeS5cblx0XHRjb25zdCBhVmlld3MgPSB0aGlzLl9nZXRBbGxWaXNpYmxlVmlld3MoKTtcblx0XHRjb25zdCBhUmVzdG9yZVByb21pc2VzOiBhbnlbXSA9IGFWaWV3cy5yZWR1Y2UoZnVuY3Rpb24gKGFQcm9taXNlczogYW55LCBvVGFyZ2V0VmlldzogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcob1RhcmdldFZpZXcpKTtcblx0XHRcdHJldHVybiBhUHJvbWlzZXM7XG5cdFx0fSwgW10pO1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUmVzdG9yZVByb21pc2VzKTtcblx0fVxuXG5cdGdldFJpZ2h0bW9zdENvbnRleHQoKTogQ29udGV4dCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFJpZ2h0bW9zdFZpZXcoKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0fVxuXG5cdGdldFJpZ2h0bW9zdFZpZXcoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldEFsbFZpZXdzKCkucG9wKCk7XG5cdH1cblxuXHRpc0NvbnRleHRVc2VkSW5QYWdlcyhvQ29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdGlmICghdGhpcy5nZXRGY2xDb250cm9sKCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgYUFsbFZpc2libGVWaWV3cyA9IHRoaXMuX2dldEFsbFZpZXdzKCk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFBbGxWaXNpYmxlVmlld3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gYUFsbFZpc2libGVWaWV3c1tpXTtcblx0XHRcdGlmICghb1ZpZXcpIHtcblx0XHRcdFx0Ly8gQSB2aWV3IGhhcyBiZWVuIGRlc3Ryb3llZCAtLT4gYXBwIGlzIGN1cnJlbnRseSBiZWluZyBkZXN0cm95ZWRcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgPT09IG9Db250ZXh0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBGY2xDb250cm9sbGVyO1xuIl19
|
|
899
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMYXlvdXRUeXBlIiwiZkxpYnJhcnkiLCJDT05TVEFOVFMiLCJwYWdlIiwibmFtZXMiLCJjdXJyZW50R2V0dGVyIiwicHJlZml4Iiwic3VmZml4IiwiZ2V0dGVyIiwiX2dldFZpZXdGcm9tQ29udGFpbmVyIiwib0NvbnRhaW5lciIsImlzQSIsImdldENvbXBvbmVudEluc3RhbmNlIiwiZ2V0Um9vdENvbnRyb2wiLCJGY2xDb250cm9sbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJ1c2luZ0V4dGVuc2lvbiIsIlZpZXdTdGF0ZSIsIm92ZXJyaWRlIiwiYXBwbHlJbml0aWFsU3RhdGVPbmx5IiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfZ2V0QWxsVmlzaWJsZVZpZXdzIiwiZm9yRWFjaCIsIm9DaGlsZFZpZXciLCJwQ2hpbGRWaWV3IiwiUHJvbWlzZSIsInJlc29sdmUiLCJwdXNoIiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvblJlc3RvcmUiLCJvVmlldyIsIm9OYXZDb250YWluZXIiLCJieUlkIiwib0ZDTENvbnRyb2xsZXIiLCJvSW50ZXJuYWxNb2RlbCIsImdldE1vZGVsIiwib1BhZ2VzIiwiZ2V0UHJvcGVydHkiLCJzQ29tcG9uZW50SWQiLCJzZXRQcm9wZXJ0eSIsIm9uQ29udGFpbmVyUmVhZHkiLCJvblN1c3BlbmQiLCJvRkNMQ29udHJvbCIsImdldEZjbENvbnRyb2wiLCJhQmVnaW5Db2x1bW5QYWdlcyIsImdldEJlZ2luQ29sdW1uUGFnZXMiLCJhTWlkQ29sdW1uUGFnZXMiLCJnZXRNaWRDb2x1bW5QYWdlcyIsImFFbmRDb2x1bW5QYWdlcyIsImdldEVuZENvbHVtblBhZ2VzIiwiYVBhZ2VzIiwiY29uY2F0Iiwib1BhZ2UiLCJvVGFyZ2V0VmlldyIsIm9Db250cm9sbGVyIiwidmlld1N0YXRlIiwib25Jbml0IiwiX2ludGVybmFsSW5pdCIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJhdHRhY2hCZWZvcmVSb3V0ZU1hdGNoZWQiLCJfZ2V0Vmlld0Zvck5hdmlnYXRlZFJvd3NDb21wdXRhdGlvbiIsIm9uQmVmb3JlUm91dGVNYXRjaGVkIiwiYXR0YWNoUm91dGVNYXRjaGVkIiwib25Sb3V0ZU1hdGNoZWQiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIl9zYXZlTGF5b3V0IiwiX29Sb3V0ZXJQcm94eSIsInNDdXJyZW50Um91dGVOYW1lIiwic0N1cnJlbnRBcmd1bWVudHMiLCJTUVVFUllLRVlOQU1FIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsImdldFJvdXRlclByb3h5IiwiX29GQ0xDb25maWciLCJtYXhDb2x1bW5zQ291bnQiLCJvUm91dGluZ0NvbmZpZyIsImdldE1hbmlmZXN0Iiwicm91dGluZyIsImNvbmZpZyIsImZsZXhpYmxlQ29sdW1uTGF5b3V0Iiwib0ZDTE1hbmlmZXN0Q29uZmlnIiwiZGVmYXVsdFR3b0NvbHVtbkxheW91dFR5cGUiLCJkZWZhdWx0VGhyZWVDb2x1bW5MYXlvdXRUeXBlIiwibGltaXRGQ0xUb1R3b0NvbHVtbnMiLCJjb250cm9sQWdncmVnYXRpb24iLCJkZWZhdWx0Q29udHJvbEFnZ3JlZ2F0aW9uIiwiX2luaXRpYWxpemVUYXJnZXRBZ2dyZWdhdGlvbiIsIl9pbml0aWFsaXplUm91dGVzSW5mb3JtYXRpb24iLCJnZXRDb250ZW50Iiwib0V2ZW50Iiwic1ByZXZpb3VzTGF5b3V0IiwiZ2V0UGFyYW1ldGVycyIsImxheW91dCIsImFBbGxWaXNpYmxlVmlld3NCZWZvcmVSb3V0ZU1hdGNoZWQiLCJvUmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZCIsImxlbmd0aCIsIm9SaWdodE1vc3RWaWV3IiwiYXR0YWNoRXZlbnRPbmNlIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJvQWRkaXRpb25hbFZpZXdGb3JOYXZSb3dzQ29tcHV0YXRpb24iLCJnZXRWaWV3Rm9yTmF2aWdhdGVkUm93c0NvbXB1dGF0aW9uIiwib25FeGl0IiwiZGV0YWNoUm91dGVNYXRjaGVkIiwiZGV0YWNoQmVmb3JlUm91dGVNYXRjaGVkIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJvblN0YXRlQ2hhbmdlZCIsImRldGFjaEFmdGVyRW5kQ29sdW1uTmF2aWdhdGUiLCJfb1RhcmdldHNBZ2dyZWdhdGlvbiIsIl9vVGFyZ2V0c0Zyb21Sb3V0ZVBhdHRlcm4iLCJCYXNlQ29udHJvbGxlciIsInByb3RvdHlwZSIsImJpbmQiLCJpc0ZjbEVuYWJsZWQiLCJkaXNwbGF5TWVzc2FnZVBhZ2UiLCJzRXJyb3JNZXNzYWdlIiwibVBhcmFtZXRlcnMiLCJGQ0xMZXZlbCIsImFNZXNzYWdlUGFnZXMiLCJvTWVzc2FnZVBhZ2UiLCJNZXNzYWdlUGFnZSIsInNob3dIZWFkZXIiLCJpY29uIiwiYWRkQmVnaW5Db2x1bW5QYWdlIiwiYWRkTWlkQ29sdW1uUGFnZSIsImFkZEVuZENvbHVtblBhZ2UiLCJzZXRUZXh0IiwidGVjaG5pY2FsTWVzc2FnZSIsInNldEN1c3RvbURlc2NyaXB0aW9uIiwiTGluayIsInRleHQiLCJkZXNjcmlwdGlvbiIsInByZXNzIiwiTWVzc2FnZUJveCIsInNob3ciLCJJY29uIiwiRVJST1IiLCJ0aXRsZSIsImFjdGlvbnMiLCJBY3Rpb24iLCJPSyIsImRlZmF1bHRBY3Rpb24iLCJkZXRhaWxzIiwidGVjaG5pY2FsRGV0YWlscyIsImNvbnRlbnRXaWR0aCIsInNldERlc2NyaXB0aW9uIiwidG8iLCJnZXRJZCIsIm9NYW5pZmVzdCIsIm9UYXJnZXRzIiwidGFyZ2V0cyIsIk9iamVjdCIsImtleXMiLCJzVGFyZ2V0TmFtZSIsIm9UYXJnZXQiLCJhZ2dyZWdhdGlvbiIsInBhdHRlcm4iLCJjb250ZXh0UGF0dGVybiIsImFSb3V0ZXMiLCJyb3V0ZXMiLCJyb3V0ZSIsInRhcmdldCIsImdldEN1cnJlbnRBcmd1bWVudCIsImdldEN1cnJlbnRSb3V0ZU5hbWUiLCJnZXRDb25zdGFudHMiLCJnZXRUYXJnZXRBZ2dyZWdhdGlvbiIsInNSb3V0ZU5hbWUiLCJfc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMiLCJhVmlld3MiLCJzQ3VycmVudFZpZXdQYXRoIiwib0FkZGl0aW9uYWxWaWV3IiwiaW5kZXhPZiIsImluZGV4Iiwib1ByZXZpb3VzVmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UGF0aCIsIl9zY3JvbGxUYWJsZXNUb1JvdyIsImJJc05hdmlnYXRpb25BcnJvdyIsInVuZGVmaW5lZCIsIl9mb3JjZU1vZGVsQ29udGV4dENoYW5nZU9uQnJlYWRDcnVtYnMiLCJuYXZUbyIsIm9GY2wiLCJnZXRTb3VyY2UiLCJvQnJlYWRDcnVtYnMiLCJmaXJlTW9kZWxDb250ZXh0Q2hhbmdlIiwiX3VwZGF0ZVNoYXJlQnV0dG9uVmlzaWJpbGl0eSIsInZpZXdDb2x1bW4iLCJzTGF5b3V0IiwiYlNob3dTaGFyZUljb24iLCJ1cGRhdGVVSVN0YXRlRm9yVmlldyIsIm9VSVN0YXRlIiwiZ2V0SGVscGVyIiwiZ2V0Q3VycmVudFVJU3RhdGUiLCJvRmNsQ29sTmFtZSIsImdldExheW91dCIsInNldE1vZGVsIiwiX2NyZWF0ZUhlbHBlck1vZGVsIiwiYWN0aW9uQnV0dG9uc0luZm8iLCJtaWRDb2x1bW4iLCJmdWxsU2NyZWVuIiwiZXhpdEZ1bGxTY3JlZW4iLCJjbG9zZUNvbHVtbiIsImVuZENvbHVtbiIsImJlZ2luQ29sdW1uIiwib0FjdGlvbkJ1dHRvbkluZm9zIiwiYXNzaWduIiwic3dpdGNoVmlzaWJsZSIsInN3aXRjaEljb24iLCJpc0Z1bGxTY3JlZW4iLCJvUXVlcnlQYXJhbXMiLCJhcmd1bWVudHMiLCJvTmV4dFVJU3RhdGUiLCJnZXROZXh0VUlTdGF0ZSIsImFUYXJnZXRzIiwiX2NvcnJlY3RMYXlvdXRGb3JUYXJnZXRzIiwic2V0TGF5b3V0IiwiRmxleGlibGVDb2x1bW5MYXlvdXRTZW1hbnRpY0hlbHBlciIsImdldEluc3RhbmNlRm9yIiwiY2FsY3VsYXRlTGF5b3V0IiwiaU5leHRGQ0xMZXZlbCIsInNIYXNoIiwic1Byb3Bvc2VkTGF5b3V0Iiwia2VlcEN1cnJlbnRMYXlvdXQiLCJvUm91dGUiLCJnZXRSb3V0ZUJ5SGFzaCIsImdldFBhdHRlcm4iLCJhbGxBbGxvd2VkTGF5b3V0cyIsIkFycmF5IiwiaXNBcnJheSIsImFMYXlvdXRzIiwic1RhcmdldEFnZ3JlZ2F0aW9uIiwiRW5kQ29sdW1uRnVsbFNjcmVlbiIsImdldEN1cnJlbnRFbmRDb2x1bW5QYWdlIiwiTWlkQ29sdW1uRnVsbFNjcmVlbiIsImdldEN1cnJlbnRNaWRDb2x1bW5QYWdlIiwiT25lQ29sdW1uIiwiZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSIsIlRocmVlQ29sdW1uc0VuZEV4cGFuZGVkIiwiVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWQiLCJUd29Db2x1bW5zQmVnaW5FeHBhbmRlZCIsIlR3b0NvbHVtbnNNaWRFeHBhbmRlZCIsIlRocmVlQ29sdW1uc01pZEV4cGFuZGVkRW5kSGlkZGVuIiwiVGhyZWVDb2x1bW5zQmVnaW5FeHBhbmRlZEVuZEhpZGRlbiIsIkxvZyIsImVycm9yIiwiX2dldEFsbFZpZXdzIiwic0xheW91dFdoZW5FeGl0RnVsbFNjcmVlbiIsImFSZXN0b3JlUHJvbWlzZXMiLCJyZWR1Y2UiLCJhUHJvbWlzZXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJyZXN0b3JlVmlldyIsImFsbCIsImdldFJpZ2h0bW9zdENvbnRleHQiLCJnZXRSaWdodG1vc3RWaWV3IiwicG9wIiwiaXNDb250ZXh0VXNlZEluUGFnZXMiLCJvQ29udGV4dCIsImFBbGxWaXNpYmxlVmlld3MiLCJpIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGY2wuY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEZsZXhpYmxlQ29sdW1uTGF5b3V0IGZyb20gXCJzYXAvZi9GbGV4aWJsZUNvbHVtbkxheW91dFwiO1xuaW1wb3J0IEZsZXhpYmxlQ29sdW1uTGF5b3V0U2VtYW50aWNIZWxwZXIgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0U2VtYW50aWNIZWxwZXJcIjtcbmltcG9ydCBmTGlicmFyeSBmcm9tIFwic2FwL2YvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFJvdXRlclByb3h5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9yb3V0aW5nL1JvdXRlclByb3h5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCB1c2luZ0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZUJveCwgeyBBY3Rpb24sIEljb24gfSBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IE1lc3NhZ2VQYWdlIGZyb20gXCJzYXAvbS9NZXNzYWdlUGFnZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vUm9vdENvbnRhaW5lckJhc2VDb250cm9sbGVyXCI7XG5cbmNvbnN0IExheW91dFR5cGUgPSBmTGlicmFyeS5MYXlvdXRUeXBlO1xuXG5jb25zdCBDT05TVEFOVFMgPSB7XG5cdHBhZ2U6IHtcblx0XHRuYW1lczogW1wiQmVnaW5Db2x1bW5cIiwgXCJNaWRDb2x1bW5cIiwgXCJFbmRDb2x1bW5cIl0sXG5cdFx0Y3VycmVudEdldHRlcjoge1xuXHRcdFx0cHJlZml4OiBcImdldEN1cnJlbnRcIixcblx0XHRcdHN1ZmZpeDogXCJQYWdlXCJcblx0XHR9LFxuXHRcdGdldHRlcjoge1xuXHRcdFx0cHJlZml4OiBcImdldFwiLFxuXHRcdFx0c3VmZml4OiBcIlBhZ2VzXCJcblx0XHR9XG5cdH1cbn07XG5jb25zdCBfZ2V0Vmlld0Zyb21Db250YWluZXIgPSBmdW5jdGlvbiAob0NvbnRhaW5lcjogYW55KSB7XG5cdGlmIChvQ29udGFpbmVyLmlzQShcInNhcC51aS5jb3JlLkNvbXBvbmVudENvbnRhaW5lclwiKSkge1xuXHRcdHJldHVybiBvQ29udGFpbmVyLmdldENvbXBvbmVudEluc3RhbmNlKCkuZ2V0Um9vdENvbnRyb2woKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gb0NvbnRhaW5lcjtcblx0fVxufTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsXCIpXG5jbGFzcyBGY2xDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0Vmlld1N0YXRlLm92ZXJyaWRlKHtcblx0XHRcdGFwcGx5SW5pdGlhbFN0YXRlT25seTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0YWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhQ29udHJvbHM6IGFueSkge1xuXHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIEZjbENvbnRyb2xsZXIpLl9nZXRBbGxWaXNpYmxlVmlld3MoKS5mb3JFYWNoKGZ1bmN0aW9uIChvQ2hpbGRWaWV3OiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBwQ2hpbGRWaWV3ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKG9DaGlsZFZpZXcpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFDb250cm9scy5wdXNoKHBDaGlsZFZpZXcpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBGY2xDb250cm9sbGVyKS5fZ2V0QWxsVmlzaWJsZVZpZXdzKCkuZm9yRWFjaChmdW5jdGlvbiAob0NoaWxkVmlldzogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3QgcENoaWxkVmlldyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShvQ2hpbGRWaWV3KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKHBDaGlsZFZpZXcpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRvblJlc3RvcmU6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIik7XG5cdFx0XHRcdGNvbnN0IG9GQ0xDb250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG9OYXZDb250YWluZXIuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRcdGNvbnN0IG9QYWdlcyA9IG9JbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3BhZ2VzXCIpO1xuXG5cdFx0XHRcdGZvciAoY29uc3Qgc0NvbXBvbmVudElkIGluIG9QYWdlcykge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KGAvcGFnZXMvJHtzQ29tcG9uZW50SWR9L3Jlc3RvcmVTdGF0dXNgLCBcInBlbmRpbmdcIik7XG5cdFx0XHRcdH1cblx0XHRcdFx0KG9GQ0xDb250cm9sbGVyIGFzIEZjbENvbnRyb2xsZXIpLm9uQ29udGFpbmVyUmVhZHkoKTtcblx0XHRcdH0sXG5cdFx0XHRvblN1c3BlbmQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb0ZDTENvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcjtcblx0XHRcdFx0Y29uc3Qgb0ZDTENvbnRyb2wgPSBvRkNMQ29udHJvbGxlci5nZXRGY2xDb250cm9sKCk7XG5cdFx0XHRcdGNvbnN0IGFCZWdpbkNvbHVtblBhZ2VzOiBDb250cm9sW10gPSBvRkNMQ29udHJvbC5nZXRCZWdpbkNvbHVtblBhZ2VzKCkgfHwgW107XG5cdFx0XHRcdGNvbnN0IGFNaWRDb2x1bW5QYWdlczogQ29udHJvbFtdID0gb0ZDTENvbnRyb2wuZ2V0TWlkQ29sdW1uUGFnZXMoKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgYUVuZENvbHVtblBhZ2VzOiBDb250cm9sW10gPSBvRkNMQ29udHJvbC5nZXRFbmRDb2x1bW5QYWdlcygpIHx8IFtdO1xuXHRcdFx0XHRjb25zdCBhUGFnZXMgPSAoW10gYXMgQ29udHJvbFtdKS5jb25jYXQoYUJlZ2luQ29sdW1uUGFnZXMsIGFNaWRDb2x1bW5QYWdlcywgYUVuZENvbHVtblBhZ2VzKTtcblxuXHRcdFx0XHRhUGFnZXMuZm9yRWFjaChmdW5jdGlvbiAob1BhZ2U6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9UYXJnZXRWaWV3ID0gX2dldFZpZXdGcm9tQ29udGFpbmVyKG9QYWdlKTtcblxuXHRcdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1RhcmdldFZpZXcgJiYgb1RhcmdldFZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlLm9uU3VzcGVuZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdClcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdHByaXZhdGUgX29Sb3V0ZXJQcm94eSE6IFJvdXRlclByb3h5O1xuXHRwcml2YXRlIHNDdXJyZW50Um91dGVOYW1lITogc3RyaW5nO1xuXHRwcml2YXRlIHNDdXJyZW50QXJndW1lbnRzPzogYW55O1xuXHRwcml2YXRlIHNQcmV2aW91c0xheW91dCE6IHN0cmluZztcblx0cHJpdmF0ZSBTUVVFUllLRVlOQU1FITogc3RyaW5nO1xuXHRwcml2YXRlIF9vRkNMQ29uZmlnOiBhbnk7XG5cdHByaXZhdGUgb0FkZGl0aW9uYWxWaWV3Rm9yTmF2Um93c0NvbXB1dGF0aW9uOiBhbnk7XG5cdHByaXZhdGUgX29UYXJnZXRzQWdncmVnYXRpb246IGFueTtcblx0cHJpdmF0ZSBfb1RhcmdldHNGcm9tUm91dGVQYXR0ZXJuOiBhbnk7XG5cdHByaXZhdGUgYU1lc3NhZ2VQYWdlcz86IGFueVtdO1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmdldE1ldGFkYXRhXG5cdCAqIEBmdW5jdGlvblxuXHQgKi9cblxuXHRvbkluaXQoKSB7XG5cdFx0c3VwZXIub25Jbml0KCk7XG5cblx0XHR0aGlzLl9pbnRlcm5hbEluaXQoKTtcblx0fVxuXG5cdGF0dGFjaFJvdXRlTWF0Y2hlcnMoKSB7XG5cdFx0dGhpcy5nZXRSb3V0ZXIoKS5hdHRhY2hCZWZvcmVSb3V0ZU1hdGNoZWQodGhpcy5fZ2V0Vmlld0Zvck5hdmlnYXRlZFJvd3NDb21wdXRhdGlvbiwgdGhpcyk7XG5cdFx0c3VwZXIuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdHRoaXMuX2ludGVybmFsSW5pdCgpO1xuXG5cdFx0dGhpcy5nZXRSb3V0ZXIoKS5hdHRhY2hCZWZvcmVSb3V0ZU1hdGNoZWQodGhpcy5vbkJlZm9yZVJvdXRlTWF0Y2hlZCwgdGhpcyk7XG5cdFx0dGhpcy5nZXRSb3V0ZXIoKS5hdHRhY2hSb3V0ZU1hdGNoZWQodGhpcy5vblJvdXRlTWF0Y2hlZCwgdGhpcyk7XG5cdFx0dGhpcy5nZXRGY2xDb250cm9sKCkuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5fc2F2ZUxheW91dCwgdGhpcyk7XG5cdH1cblxuXHRfaW50ZXJuYWxJbml0KCkge1xuXHRcdGlmICh0aGlzLl9vUm91dGVyUHJveHkpIHtcblx0XHRcdHJldHVybjsgLy8gQWxyZWFkeSBpbml0aWFsaXplZFxuXHRcdH1cblxuXHRcdHRoaXMuc0N1cnJlbnRSb3V0ZU5hbWUgPSBcIlwiO1xuXHRcdHRoaXMuc0N1cnJlbnRBcmd1bWVudHMgPSB7fTtcblx0XHR0aGlzLlNRVUVSWUtFWU5BTUUgPSBcIj9xdWVyeVwiO1xuXG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk7XG5cblx0XHR0aGlzLl9vUm91dGVyUHJveHkgPSBvQXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCk7XG5cblx0XHQvLyBHZXQgRkNMIGNvbmZpZ3VyYXRpb24gaW4gdGhlIG1hbmlmZXN0XG5cdFx0dGhpcy5fb0ZDTENvbmZpZyA9IHsgbWF4Q29sdW1uc0NvdW50OiAzIH07XG5cdFx0Y29uc3Qgb1JvdXRpbmdDb25maWcgPSAob0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpIGFzIGFueSlbXCJzYXAudWk1XCJdLnJvdXRpbmc7XG5cdFx0aWYgKG9Sb3V0aW5nQ29uZmlnICYmIG9Sb3V0aW5nQ29uZmlnLmNvbmZpZykge1xuXHRcdFx0aWYgKG9Sb3V0aW5nQ29uZmlnLmNvbmZpZy5mbGV4aWJsZUNvbHVtbkxheW91dCkge1xuXHRcdFx0XHRjb25zdCBvRkNMTWFuaWZlc3RDb25maWcgPSBvUm91dGluZ0NvbmZpZy5jb25maWcuZmxleGlibGVDb2x1bW5MYXlvdXQ7XG5cblx0XHRcdFx0Ly8gRGVmYXVsdCBsYXlvdXQgZm9yIDIgY29sdW1uc1xuXHRcdFx0XHRpZiAob0ZDTE1hbmlmZXN0Q29uZmlnLmRlZmF1bHRUd29Db2x1bW5MYXlvdXRUeXBlKSB7XG5cdFx0XHRcdFx0dGhpcy5fb0ZDTENvbmZpZy5kZWZhdWx0VHdvQ29sdW1uTGF5b3V0VHlwZSA9IG9GQ0xNYW5pZmVzdENvbmZpZy5kZWZhdWx0VHdvQ29sdW1uTGF5b3V0VHlwZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERlZmF1bHQgbGF5b3V0IGZvciAzIGNvbHVtbnNcblx0XHRcdFx0aWYgKG9GQ0xNYW5pZmVzdENvbmZpZy5kZWZhdWx0VGhyZWVDb2x1bW5MYXlvdXRUeXBlKSB7XG5cdFx0XHRcdFx0dGhpcy5fb0ZDTENvbmZpZy5kZWZhdWx0VGhyZWVDb2x1bW5MYXlvdXRUeXBlID0gb0ZDTE1hbmlmZXN0Q29uZmlnLmRlZmF1bHRUaHJlZUNvbHVtbkxheW91dFR5cGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMaW1pdCBGQ0wgdG8gMiBjb2x1bW5zID9cblx0XHRcdFx0aWYgKG9GQ0xNYW5pZmVzdENvbmZpZy5saW1pdEZDTFRvVHdvQ29sdW1ucyA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50ID0gMjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG9Sb3V0aW5nQ29uZmlnLmNvbmZpZy5jb250cm9sQWdncmVnYXRpb24pIHtcblx0XHRcdFx0dGhpcy5fb0ZDTENvbmZpZy5kZWZhdWx0Q29udHJvbEFnZ3JlZ2F0aW9uID0gb1JvdXRpbmdDb25maWcuY29uZmlnLmNvbnRyb2xBZ2dyZWdhdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLl9pbml0aWFsaXplVGFyZ2V0QWdncmVnYXRpb24ob0FwcENvbXBvbmVudCk7XG5cdFx0dGhpcy5faW5pdGlhbGl6ZVJvdXRlc0luZm9ybWF0aW9uKG9BcHBDb21wb25lbnQpO1xuXHR9XG5cblx0Z2V0RmNsQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdIGFzIEZsZXhpYmxlQ29sdW1uTGF5b3V0O1xuXHR9XG5cblx0X3NhdmVMYXlvdXQob0V2ZW50OiBhbnkpIHtcblx0XHR0aGlzLnNQcmV2aW91c0xheW91dCA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkubGF5b3V0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYWRkaXRpb25uYWwgdmlldyAob24gdG9wIG9mIHRoZSB2aXNpYmxlIHZpZXdzKSwgdG8gYmUgYWJsZSB0byBjb21wdXRlIHRoZSBsYXRlc3QgdGFibGUgbmF2aWdhdGVkIHJvd3Mgb2YgdGhlIG1vc3QgcmlnaHQgdmlzaWJsZSB2aWV3IGFmdGVyIGEgbmF2IGJhY2sgb3IgY29sdW1uIGZ1bGxzY3JlZW4uXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlciNfZ2V0UmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZFxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICovXG5cblx0X2dldFZpZXdGb3JOYXZpZ2F0ZWRSb3dzQ29tcHV0YXRpb24oKSB7XG5cdFx0Y29uc3QgYUFsbFZpc2libGVWaWV3c0JlZm9yZVJvdXRlTWF0Y2hlZCA9IHRoaXMuX2dldEFsbFZpc2libGVWaWV3cyh0aGlzLnNQcmV2aW91c0xheW91dCk7XG5cdFx0Y29uc3Qgb1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWQgPSBhQWxsVmlzaWJsZVZpZXdzQmVmb3JlUm91dGVNYXRjaGVkW2FBbGxWaXNpYmxlVmlld3NCZWZvcmVSb3V0ZU1hdGNoZWQubGVuZ3RoIC0gMV07XG5cdFx0bGV0IG9SaWdodE1vc3RWaWV3O1xuXHRcdHRoaXMuZ2V0Um91dGVyKCkuYXR0YWNoRXZlbnRPbmNlKFwicm91dGVNYXRjaGVkXCIsIChvRXZlbnQ6IGFueSkgPT4ge1xuXHRcdFx0b1JpZ2h0TW9zdFZpZXcgPSBfZ2V0Vmlld0Zyb21Db250YWluZXIob0V2ZW50LmdldFBhcmFtZXRlcihcInZpZXdzXCIpW29FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2aWV3c1wiKS5sZW5ndGggLSAxXSk7XG5cdFx0XHRpZiAob1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWQpIHtcblx0XHRcdFx0Ly8gTmF2aWdhdGlvbiBmb3J3YXJkIGZyb20gTDIgdG8gdmlldyBsZXZlbCBMMyAoRnVsbFNjcmVlbkxheW91dCk6XG5cdFx0XHRcdGlmIChvUmlnaHRNb3N0Vmlldy5nZXRWaWV3RGF0YSgpICYmIG9SaWdodE1vc3RWaWV3LmdldFZpZXdEYXRhKCkudmlld0xldmVsID09PSB0aGlzLl9vRkNMQ29uZmlnLm1heENvbHVtbnNDb3VudCkge1xuXHRcdFx0XHRcdHRoaXMub0FkZGl0aW9uYWxWaWV3Rm9yTmF2Um93c0NvbXB1dGF0aW9uID0gb1JpZ2h0TW9zdFZpZXc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gTmF2aWdhdGlvbnMgYmFja3dhcmQgZnJvbSBMMyBkb3duIHRvIEwyLCBMMSwgTDAgKFRocmVlQ29sdW1uIGxheW91dCk6XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRvUmlnaHRNb3N0Vmlldy5nZXRWaWV3RGF0YSgpICYmXG5cdFx0XHRcdFx0b1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWQuZ2V0Vmlld0RhdGEoKSAmJlxuXHRcdFx0XHRcdG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkLmdldFZpZXdEYXRhKCkudmlld0xldmVsIDwgdGhpcy5fb0ZDTENvbmZpZy5tYXhDb2x1bW5zQ291bnQgJiZcblx0XHRcdFx0XHRvUmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZC5nZXRWaWV3RGF0YSgpICYmXG5cdFx0XHRcdFx0b1JpZ2h0TW9zdFZpZXdCZWZvcmVSb3V0ZU1hdGNoZWQuZ2V0Vmlld0RhdGEoKS52aWV3TGV2ZWwgPiBvUmlnaHRNb3N0Vmlldy5nZXRWaWV3RGF0YSgpLnZpZXdMZXZlbCAmJlxuXHRcdFx0XHRcdG9SaWdodE1vc3RWaWV3ICE9PSBvUmlnaHRNb3N0Vmlld0JlZm9yZVJvdXRlTWF0Y2hlZFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0aGlzLm9BZGRpdGlvbmFsVmlld0Zvck5hdlJvd3NDb21wdXRhdGlvbiA9IG9SaWdodE1vc3RWaWV3QmVmb3JlUm91dGVNYXRjaGVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRWaWV3Rm9yTmF2aWdhdGVkUm93c0NvbXB1dGF0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm9BZGRpdGlvbmFsVmlld0Zvck5hdlJvd3NDb21wdXRhdGlvbjtcblx0fVxuXG5cdG9uRXhpdCgpIHtcblx0XHR0aGlzLmdldFJvdXRlcigpLmRldGFjaFJvdXRlTWF0Y2hlZCh0aGlzLm9uUm91dGVNYXRjaGVkLCB0aGlzKTtcblx0XHR0aGlzLmdldFJvdXRlcigpLmRldGFjaEJlZm9yZVJvdXRlTWF0Y2hlZCh0aGlzLm9uQmVmb3JlUm91dGVNYXRjaGVkLCB0aGlzKTtcblx0XHR0aGlzLmdldEZjbENvbnRyb2woKS5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLm9uU3RhdGVDaGFuZ2VkLCB0aGlzKTtcblx0XHR0aGlzLmdldEZjbENvbnRyb2woKS5kZXRhY2hBZnRlckVuZENvbHVtbk5hdmlnYXRlKHRoaXMub25TdGF0ZUNoYW5nZWQsIHRoaXMpO1xuXHRcdHRoaXMuX29UYXJnZXRzQWdncmVnYXRpb24gPSBudWxsO1xuXHRcdHRoaXMuX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybiA9IG51bGw7XG5cblx0XHRCYXNlQ29udHJvbGxlci5wcm90b3R5cGUub25FeGl0LmJpbmQodGhpcykoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgRkNMIGNvbXBvbmVudCBpcyBlbmFibGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjaXNGY2xFbmFibGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgc2luY2Ugd2UgYXJlIGluIEZDTCBzY2VuYXJpb1xuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRpc0ZjbEVuYWJsZWQoKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRkaXNwbGF5TWVzc2FnZVBhZ2Uoc0Vycm9yTWVzc2FnZTogYW55LCBtUGFyYW1ldGVyczogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3Qgb0ZDTENvbnRyb2wgPSB0aGlzLmdldEZjbENvbnRyb2woKTtcblxuXHRcdGlmICh0aGlzLl9vRkNMQ29uZmlnICYmIG1QYXJhbWV0ZXJzLkZDTExldmVsID49IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50KSB7XG5cdFx0XHRtUGFyYW1ldGVycy5GQ0xMZXZlbCA9IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50IC0gMTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuYU1lc3NhZ2VQYWdlcykge1xuXHRcdFx0dGhpcy5hTWVzc2FnZVBhZ2VzID0gW251bGwsIG51bGwsIG51bGxdO1xuXHRcdH1cblx0XHRsZXQgb01lc3NhZ2VQYWdlID0gdGhpcy5hTWVzc2FnZVBhZ2VzW21QYXJhbWV0ZXJzLkZDTExldmVsXTtcblx0XHRpZiAoIW9NZXNzYWdlUGFnZSkge1xuXHRcdFx0b01lc3NhZ2VQYWdlID0gbmV3IE1lc3NhZ2VQYWdlKHtcblx0XHRcdFx0c2hvd0hlYWRlcjogZmFsc2UsXG5cdFx0XHRcdGljb246IFwic2FwLWljb246Ly9tZXNzYWdlLWVycm9yXCJcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5hTWVzc2FnZVBhZ2VzW21QYXJhbWV0ZXJzLkZDTExldmVsXSA9IG9NZXNzYWdlUGFnZTtcblxuXHRcdFx0c3dpdGNoIChtUGFyYW1ldGVycy5GQ0xMZXZlbCkge1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0b0ZDTENvbnRyb2wuYWRkQmVnaW5Db2x1bW5QYWdlKG9NZXNzYWdlUGFnZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdG9GQ0xDb250cm9sLmFkZE1pZENvbHVtblBhZ2Uob01lc3NhZ2VQYWdlKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdG9GQ0xDb250cm9sLmFkZEVuZENvbHVtblBhZ2Uob01lc3NhZ2VQYWdlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvTWVzc2FnZVBhZ2Uuc2V0VGV4dChzRXJyb3JNZXNzYWdlKTtcblxuXHRcdGlmIChtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlKSB7XG5cdFx0XHRvTWVzc2FnZVBhZ2Uuc2V0Q3VzdG9tRGVzY3JpcHRpb24oXG5cdFx0XHRcdG5ldyBMaW5rKHtcblx0XHRcdFx0XHR0ZXh0OiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRNZXNzYWdlQm94LnNob3cobVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSwge1xuXHRcdFx0XHRcdFx0XHRpY29uOiBJY29uLkVSUk9SLFxuXHRcdFx0XHRcdFx0XHR0aXRsZTogbVBhcmFtZXRlcnMudGl0bGUsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbnM6IFtBY3Rpb24uT0tdLFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBBY3Rpb24uT0ssXG5cdFx0XHRcdFx0XHRcdGRldGFpbHM6IG1QYXJhbWV0ZXJzLnRlY2huaWNhbERldGFpbHMgfHwgXCJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudFdpZHRoOiBcIjYwJVwiXG5cdFx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b01lc3NhZ2VQYWdlLnNldERlc2NyaXB0aW9uKG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uIHx8IFwiXCIpO1xuXHRcdH1cblxuXHRcdChvRkNMQ29udHJvbCBhcyBhbnkpLnRvKG9NZXNzYWdlUGFnZS5nZXRJZCgpKTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgdGhlIG9iamVjdCBfb1RhcmdldHNBZ2dyZWdhdGlvbiB0aGF0IGRlZmluZXMgZm9yIGVhY2ggcm91dGUgdGhlIHJlbGV2YW50IGFnZ3JlZ2F0aW9uIGFuZCBwYXR0ZXJuLlxuXHQgKlxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlciNfaW5pdGlhbGl6ZVRhcmdldEFnZ3JlZ2F0aW9uXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIFtvQXBwQ29tcG9uZW50XSBSZWZlcmVuY2UgdG8gdGhlIEFwcENvbXBvbmVudFxuXHQgKi9cblx0X2luaXRpYWxpemVUYXJnZXRBZ2dyZWdhdGlvbihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRjb25zdCBvTWFuaWZlc3QgPSBvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0KCkgYXMgYW55LFxuXHRcdFx0b1RhcmdldHMgPSBvTWFuaWZlc3RbXCJzYXAudWk1XCJdLnJvdXRpbmcgPyBvTWFuaWZlc3RbXCJzYXAudWk1XCJdLnJvdXRpbmcudGFyZ2V0cyA6IG51bGw7XG5cblx0XHR0aGlzLl9vVGFyZ2V0c0FnZ3JlZ2F0aW9uID0ge307XG5cblx0XHRpZiAob1RhcmdldHMpIHtcblx0XHRcdE9iamVjdC5rZXlzKG9UYXJnZXRzKS5mb3JFYWNoKChzVGFyZ2V0TmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9UYXJnZXQgPSBvVGFyZ2V0c1tzVGFyZ2V0TmFtZV07XG5cdFx0XHRcdGlmIChvVGFyZ2V0LmNvbnRyb2xBZ2dyZWdhdGlvbikge1xuXHRcdFx0XHRcdHRoaXMuX29UYXJnZXRzQWdncmVnYXRpb25bc1RhcmdldE5hbWVdID0ge1xuXHRcdFx0XHRcdFx0YWdncmVnYXRpb246IG9UYXJnZXQuY29udHJvbEFnZ3JlZ2F0aW9uLFxuXHRcdFx0XHRcdFx0cGF0dGVybjogb1RhcmdldC5jb250ZXh0UGF0dGVyblxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fb1RhcmdldHNBZ2dyZWdhdGlvbltzVGFyZ2V0TmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbjogXCJwYWdlXCIsXG5cdFx0XHRcdFx0XHRwYXR0ZXJuOiBudWxsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBtYXBwaW5nIGJldHdlZW4gYSByb3V0ZSAoaWRlbnRpZmVkIGFzIGl0cyBwYXR0ZXJuKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0c1xuXHQgKlxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlciNfaW5pdGlhbGl6ZVJvdXRlc0luZm9ybWF0aW9uXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG9BcHBDb21wb25lbnQgcmVmIHRvIHRoZSBBcHBDb21wb25lbnRcblx0ICovXG5cblx0X2luaXRpYWxpemVSb3V0ZXNJbmZvcm1hdGlvbihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRjb25zdCBvTWFuaWZlc3QgPSBvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0KCkgYXMgYW55LFxuXHRcdFx0YVJvdXRlcyA9IG9NYW5pZmVzdFtcInNhcC51aTVcIl0ucm91dGluZyA/IG9NYW5pZmVzdFtcInNhcC51aTVcIl0ucm91dGluZy5yb3V0ZXMgOiBudWxsO1xuXG5cdFx0dGhpcy5fb1RhcmdldHNGcm9tUm91dGVQYXR0ZXJuID0ge307XG5cblx0XHRpZiAoYVJvdXRlcykge1xuXHRcdFx0YVJvdXRlcy5mb3JFYWNoKChyb3V0ZTogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuX29UYXJnZXRzRnJvbVJvdXRlUGF0dGVybltyb3V0ZS5wYXR0ZXJuXSA9IHJvdXRlLnRhcmdldDtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGdldEN1cnJlbnRBcmd1bWVudCgpIHtcblx0XHRyZXR1cm4gdGhpcy5zQ3VycmVudEFyZ3VtZW50cztcblx0fVxuXG5cdGdldEN1cnJlbnRSb3V0ZU5hbWUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc0N1cnJlbnRSb3V0ZU5hbWU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IEZFIEZDTCBjb25zdGFudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEByZXR1cm5zIFRoZSBjb25zdGFudHNcblx0ICovXG5cdGdldENvbnN0YW50cygpIHtcblx0XHRyZXR1cm4gQ09OU1RBTlRTO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHRlciBmb3Igb1RhcmdldHNBZ2dyZWdhdGlvbiBhcnJheS5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjZ2V0VGFyZ2V0QWdncmVnYXRpb25cblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcmV0dXJucyBUaGUgX29UYXJnZXRzQWdncmVnYXRpb24gYXJyYXlcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRUYXJnZXRBZ2dyZWdhdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5fb1RhcmdldHNBZ2dyZWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIHJvdXRlciBSb3V0ZU1hdGNoZWQgZXZlbnQuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI29uUm91dGVNYXRjaGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRvblJvdXRlTWF0Y2hlZChvRXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHNSb3V0ZU5hbWUgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwibmFtZVwiKTtcblxuXHRcdC8vIFNhdmUgdGhlIGN1cnJlbnQvcHJldmlvdXMgcm91dGVzIGFuZCBhcmd1bWVudHNcblx0XHR0aGlzLnNDdXJyZW50Um91dGVOYW1lID0gc1JvdXRlTmFtZTtcblx0XHR0aGlzLnNDdXJyZW50QXJndW1lbnRzID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImFyZ3VtZW50c1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJpbmcgdGhlIHRhYmxlIHNjcm9sbCB0byB0aGUgbmF2aWdhdGVkIHJvdyBhZnRlciBlYWNoIGxheW91dCBjaGFuZ2UuXG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyI3Njcm9sbFRvTGFzdFNlbGVjdGVkSXRlbVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICovXG5cblx0X3Njcm9sbFRhYmxlc1RvTGFzdE5hdmlnYXRlZEl0ZW1zKCkge1xuXHRcdGNvbnN0IGFWaWV3cyA9IHRoaXMuX2dldEFsbFZpc2libGVWaWV3cygpO1xuXHRcdC8vVGhlIHNjcm9sbHMgYXJlIHRyaWdnZXJlZCBvbmx5IGlmIHRoZSBsYXlvdXQgaXMgd2l0aCBzZXZlcmFsIGNvbHVtbnMgb3Igd2hlbiBzd2l0Y2hpbmcgdGhlIG1vc3RSaWdodCBjb2x1bW4gaW4gZnVsbCBzY3JlZW5cblx0XHRpZiAoYVZpZXdzLmxlbmd0aCA+IDEgfHwgYVZpZXdzWzBdLmdldFZpZXdEYXRhKCkudmlld0xldmVsIDwgdGhpcy5fb0ZDTENvbmZpZy5tYXhDb2x1bW5zQ291bnQpIHtcblx0XHRcdGxldCBzQ3VycmVudFZpZXdQYXRoO1xuXHRcdFx0Y29uc3Qgb0FkZGl0aW9uYWxWaWV3ID0gdGhpcy5nZXRWaWV3Rm9yTmF2aWdhdGVkUm93c0NvbXB1dGF0aW9uKCk7XG5cdFx0XHRpZiAob0FkZGl0aW9uYWxWaWV3ICYmIGFWaWV3cy5pbmRleE9mKG9BZGRpdGlvbmFsVmlldykgPT09IC0xKSB7XG5cdFx0XHRcdGFWaWV3cy5wdXNoKG9BZGRpdGlvbmFsVmlldyk7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpbmRleCA9IGFWaWV3cy5sZW5ndGggLSAxOyBpbmRleCA+IDA7IGluZGV4LS0pIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBhVmlld3NbaW5kZXhdLFxuXHRcdFx0XHRcdG9QcmV2aW91c1ZpZXcgPSBhVmlld3NbaW5kZXggLSAxXTtcblx0XHRcdFx0aWYgKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdFx0XHRzQ3VycmVudFZpZXdQYXRoID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKS5nZXRQYXRoKCk7XG5cdFx0XHRcdFx0b1ByZXZpb3VzVmlldy5nZXRDb250cm9sbGVyKCkuX3Njcm9sbFRhYmxlc1RvUm93KHNDdXJyZW50Vmlld1BhdGgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRyaWdnZXJlZCBieSB0aGUgRkNMIFN0YXRlQ2hhbmdlZCBldmVudC5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjb25TdGF0ZUNoYW5nZWRcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdG9uU3RhdGVDaGFuZ2VkKG9FdmVudDogYW55KSB7XG5cdFx0Y29uc3QgYklzTmF2aWdhdGlvbkFycm93ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImlzTmF2aWdhdGlvbkFycm93XCIpO1xuXHRcdGlmICh0aGlzLnNDdXJyZW50QXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICghdGhpcy5zQ3VycmVudEFyZ3VtZW50c1t0aGlzLlNRVUVSWUtFWU5BTUVdKSB7XG5cdFx0XHRcdHRoaXMuc0N1cnJlbnRBcmd1bWVudHNbdGhpcy5TUVVFUllLRVlOQU1FXSA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zQ3VycmVudEFyZ3VtZW50c1t0aGlzLlNRVUVSWUtFWU5BTUVdLmxheW91dCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJsYXlvdXRcIik7XG5cdFx0fVxuXHRcdHRoaXMuX2ZvcmNlTW9kZWxDb250ZXh0Q2hhbmdlT25CcmVhZENydW1icyhvRXZlbnQpO1xuXG5cdFx0Ly8gUmVwbGFjZSB0aGUgVVJMIHdpdGggdGhlIG5ldyBsYXlvdXQgaWYgYSBuYXZpZ2F0aW9uIGFycm93IHdhcyB1c2VkXG5cdFx0aWYgKGJJc05hdmlnYXRpb25BcnJvdykge1xuXHRcdFx0dGhpcy5fb1JvdXRlclByb3h5Lm5hdlRvKHRoaXMuc0N1cnJlbnRSb3V0ZU5hbWUsIHRoaXMuc0N1cnJlbnRBcmd1bWVudHMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBmaXJlIE1vZGVsQ29udGV4dENoYW5nZSBldmVudCBvbiBhbGwgYnJlYWRjcnVtYnMgKCBvbiBlYWNoIE9iamVjdFBhZ2VzKS5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjX2ZvcmNlTW9kZWxDb250ZXh0Q2hhbmdlT25CcmVhZENydW1ic1xuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQHBhcmFtIG9FdmVudFxuXHQgKi9cblx0X2ZvcmNlTW9kZWxDb250ZXh0Q2hhbmdlT25CcmVhZENydW1icyhvRXZlbnQ6IGFueSkge1xuXHRcdC8vZm9yY2UgbW9kZWxjb250ZXh0Y2hhbmdlIG9uIE9iamVjdFBhZ2VzIHRvIHJlZnJlc2ggdGhlIGJyZWFkY3J1bWJzIGxpbmsgaHJlZnNcblx0XHRjb25zdCBvRmNsID0gb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGxldCBvUGFnZXM6IGFueVtdID0gW107XG5cdFx0b1BhZ2VzID0gb1BhZ2VzLmNvbmNhdChvRmNsLmdldEJlZ2luQ29sdW1uUGFnZXMoKSkuY29uY2F0KG9GY2wuZ2V0TWlkQ29sdW1uUGFnZXMoKSkuY29uY2F0KG9GY2wuZ2V0RW5kQ29sdW1uUGFnZXMoKSk7XG5cdFx0b1BhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gX2dldFZpZXdGcm9tQ29udGFpbmVyKG9QYWdlKTtcblx0XHRcdGNvbnN0IG9CcmVhZENydW1icyA9IG9WaWV3LmJ5SWQgJiYgb1ZpZXcuYnlJZChcImJyZWFkY3J1bWJzXCIpO1xuXHRcdFx0aWYgKG9CcmVhZENydW1icykge1xuXHRcdFx0XHRvQnJlYWRDcnVtYnMuZmlyZU1vZGVsQ29udGV4dENoYW5nZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRyaWdnZXJlZCB0byB1cGRhdGUgdGhlIFNoYXJlIGJ1dHRvbiBWaXNpYmlsaXR5LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXdDb2x1bW4gTmFtZSBvZiB0aGUgY3VycmVudCBjb2x1bW4gKFwiYmVnaW5Db2x1bW5cIiwgXCJtaWRDb2x1bW5cIiwgXCJlbmRDb2x1bW5cIilcblx0ICogQHBhcmFtIHNMYXlvdXQgVGhlIGN1cnJlbnQgbGF5b3V0IHVzZWQgYnkgdGhlIEZDTFxuXHQgKiBAcmV0dXJucyBUaGUgc2hhcmUgYnV0dG9uIHZpc2liaWxpdHlcblx0ICovXG5cdF91cGRhdGVTaGFyZUJ1dHRvblZpc2liaWxpdHkodmlld0NvbHVtbjogc3RyaW5nLCBzTGF5b3V0OiBzdHJpbmcpIHtcblx0XHRsZXQgYlNob3dTaGFyZUljb247XG5cdFx0c3dpdGNoIChzTGF5b3V0KSB7XG5cdFx0XHRjYXNlIFwiT25lQ29sdW1uXCI6XG5cdFx0XHRcdGJTaG93U2hhcmVJY29uID0gdmlld0NvbHVtbiA9PT0gXCJiZWdpbkNvbHVtblwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJNaWRDb2x1bW5GdWxsU2NyZWVuXCI6XG5cdFx0XHRjYXNlIFwiVGhyZWVDb2x1bW5zQmVnaW5FeHBhbmRlZEVuZEhpZGRlblwiOlxuXHRcdFx0Y2FzZSBcIlRocmVlQ29sdW1uc01pZEV4cGFuZGVkRW5kSGlkZGVuXCI6XG5cdFx0XHRjYXNlIFwiVHdvQ29sdW1uc0JlZ2luRXhwYW5kZWRcIjpcblx0XHRcdGNhc2UgXCJUd29Db2x1bW5zTWlkRXhwYW5kZWRcIjpcblx0XHRcdFx0YlNob3dTaGFyZUljb24gPSB2aWV3Q29sdW1uID09PSBcIm1pZENvbHVtblwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJFbmRDb2x1bW5GdWxsU2NyZWVuXCI6XG5cdFx0XHRjYXNlIFwiVGhyZWVDb2x1bW5zRW5kRXhwYW5kZWRcIjpcblx0XHRcdGNhc2UgXCJUaHJlZUNvbHVtbnNNaWRFeHBhbmRlZFwiOlxuXHRcdFx0XHRiU2hvd1NoYXJlSWNvbiA9IHZpZXdDb2x1bW4gPT09IFwiZW5kQ29sdW1uXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YlNob3dTaGFyZUljb24gPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGJTaG93U2hhcmVJY29uO1xuXHR9XG5cblx0dXBkYXRlVUlTdGF0ZUZvclZpZXcob1ZpZXc6IGFueSwgRkNMTGV2ZWw6IGFueSkge1xuXHRcdGNvbnN0IG9VSVN0YXRlID0gdGhpcy5nZXRIZWxwZXIoKS5nZXRDdXJyZW50VUlTdGF0ZSgpIGFzIGFueSxcblx0XHRcdG9GY2xDb2xOYW1lID0gW1wiYmVnaW5Db2x1bW5cIiwgXCJtaWRDb2x1bW5cIiwgXCJlbmRDb2x1bW5cIl0sXG5cdFx0XHRzTGF5b3V0ID0gdGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0TGF5b3V0KCk7XG5cdFx0bGV0IHZpZXdDb2x1bW47XG5cblx0XHRpZiAoIW9WaWV3LmdldE1vZGVsKFwiZmNsaGVscGVyXCIpKSB7XG5cdFx0XHRvVmlldy5zZXRNb2RlbCh0aGlzLl9jcmVhdGVIZWxwZXJNb2RlbCgpLCBcImZjbGhlbHBlclwiKTtcblx0XHR9XG5cdFx0aWYgKEZDTExldmVsID49IHRoaXMuX29GQ0xDb25maWcubWF4Q29sdW1uc0NvdW50KSB7XG5cdFx0XHQvLyBUaGUgdmlldyBpcyBvbiBhIGxldmVsID4gbWF4IG51bWJlciBvZiBjb2x1bW5zLiBJdCdzIGFsd2F5cyBmdWxsc2NyZWVuIHdpdGhvdXQgY2xvc2UvZXhpdCBidXR0b25zXG5cdFx0XHR2aWV3Q29sdW1uID0gb0ZjbENvbE5hbWVbdGhpcy5fb0ZDTENvbmZpZy5tYXhDb2x1bW5zQ291bnQgLSAxXTtcblx0XHRcdG9VSVN0YXRlLmFjdGlvbkJ1dHRvbnNJbmZvLm1pZENvbHVtbi5mdWxsU2NyZWVuID0gbnVsbDtcblx0XHRcdG9VSVN0YXRlLmFjdGlvbkJ1dHRvbnNJbmZvLm1pZENvbHVtbi5leGl0RnVsbFNjcmVlbiA9IG51bGw7XG5cdFx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5taWRDb2x1bW4uY2xvc2VDb2x1bW4gPSBudWxsO1xuXHRcdFx0b1VJU3RhdGUuYWN0aW9uQnV0dG9uc0luZm8uZW5kQ29sdW1uLmV4aXRGdWxsU2NyZWVuID0gbnVsbDtcblx0XHRcdG9VSVN0YXRlLmFjdGlvbkJ1dHRvbnNJbmZvLmVuZENvbHVtbi5mdWxsU2NyZWVuID0gbnVsbDtcblx0XHRcdG9VSVN0YXRlLmFjdGlvbkJ1dHRvbnNJbmZvLmVuZENvbHVtbi5jbG9zZUNvbHVtbiA9IG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZpZXdDb2x1bW4gPSBvRmNsQ29sTmFtZVtGQ0xMZXZlbF07XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0RkNMTGV2ZWwgPj0gdGhpcy5fb0ZDTENvbmZpZy5tYXhDb2x1bW5zQ291bnQgfHxcblx0XHRcdHNMYXlvdXQgPT09IFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiIHx8XG5cdFx0XHRzTGF5b3V0ID09PSBcIk1pZENvbHVtbkZ1bGxTY3JlZW5cIiB8fFxuXHRcdFx0c0xheW91dCA9PT0gXCJPbmVDb2x1bW5cIlxuXHRcdCkge1xuXHRcdFx0b1ZpZXcuZ2V0TW9kZWwoXCJmY2xoZWxwZXJcIikuc2V0UHJvcGVydHkoXCIvYnJlYWRDcnVtYklzVmlzaWJsZVwiLCB0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1ZpZXcuZ2V0TW9kZWwoXCJmY2xoZWxwZXJcIikuc2V0UHJvcGVydHkoXCIvYnJlYWRDcnVtYklzVmlzaWJsZVwiLCBmYWxzZSk7XG5cdFx0fVxuXHRcdC8vIFVuZm9ydHVuYXRlbHksIHRoZSBGQ0xIZWxwZXIgZG9lc24ndCBwcm92aWRlIGFjdGlvbkJ1dHRvbiB2YWx1ZXMgZm9yIHRoZSBmaXJzdCBjb2x1bW5cblx0XHQvLyBzbyB3ZSBoYXZlIHRvIGFkZCB0aGlzIGluZm8gbWFudWFsbHlcblx0XHRvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mby5iZWdpbkNvbHVtbiA9IHsgZnVsbFNjcmVlbjogbnVsbCwgZXhpdEZ1bGxTY3JlZW46IG51bGwsIGNsb3NlQ29sdW1uOiBudWxsIH07XG5cblx0XHRjb25zdCBvQWN0aW9uQnV0dG9uSW5mb3MgPSBPYmplY3QuYXNzaWduKHt9LCBvVUlTdGF0ZS5hY3Rpb25CdXR0b25zSW5mb1t2aWV3Q29sdW1uXSk7XG5cdFx0b0FjdGlvbkJ1dHRvbkluZm9zLnN3aXRjaFZpc2libGUgPSBvQWN0aW9uQnV0dG9uSW5mb3MuZnVsbFNjcmVlbiAhPT0gbnVsbCB8fCBvQWN0aW9uQnV0dG9uSW5mb3MuZXhpdEZ1bGxTY3JlZW4gIT09IG51bGw7XG5cdFx0b0FjdGlvbkJ1dHRvbkluZm9zLnN3aXRjaEljb24gPSBvQWN0aW9uQnV0dG9uSW5mb3MuZnVsbFNjcmVlbiAhPT0gbnVsbCA/IFwic2FwLWljb246Ly9mdWxsLXNjcmVlblwiIDogXCJzYXAtaWNvbjovL2V4aXQtZnVsbC1zY3JlZW5cIjtcblx0XHRvQWN0aW9uQnV0dG9uSW5mb3MuaXNGdWxsU2NyZWVuID0gb0FjdGlvbkJ1dHRvbkluZm9zLmZ1bGxTY3JlZW4gPT09IG51bGw7XG5cblx0XHRvVmlldy5nZXRNb2RlbChcImZjbGhlbHBlclwiKS5zZXRQcm9wZXJ0eShcIi9hY3Rpb25CdXR0b25zSW5mb1wiLCBvQWN0aW9uQnV0dG9uSW5mb3MpO1xuXG5cdFx0b1ZpZXcuZ2V0TW9kZWwoXCJmY2xoZWxwZXJcIikuc2V0UHJvcGVydHkoXCIvc2hvd1NoYXJlSWNvblwiLCB0aGlzLl91cGRhdGVTaGFyZUJ1dHRvblZpc2liaWxpdHkodmlld0NvbHVtbiwgc0xheW91dCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRyaWdnZXJlZCBieSB0aGUgcm91dGVyIEJlZm9yZVJvdXRlTWF0Y2hlZCBldmVudC5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjb25CZWZvcmVSb3V0ZU1hdGNoZWRcblx0ICogQG1lbWJlcm9mIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci5jb250cm9sbGVyLkZjbC5jb250cm9sbGVyXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdG9uQmVmb3JlUm91dGVNYXRjaGVkKG9FdmVudDogYW55KSB7XG5cdFx0aWYgKG9FdmVudCkge1xuXHRcdFx0Y29uc3Qgb1F1ZXJ5UGFyYW1zID0gb0V2ZW50LmdldFBhcmFtZXRlcnMoKS5hcmd1bWVudHNbdGhpcy5TUVVFUllLRVlOQU1FXTtcblx0XHRcdGxldCBzTGF5b3V0ID0gb1F1ZXJ5UGFyYW1zID8gb1F1ZXJ5UGFyYW1zLmxheW91dCA6IG51bGw7XG5cblx0XHRcdC8vIElmIHRoZXJlIGlzIG5vIGxheW91dCBwYXJhbWV0ZXIsIHF1ZXJ5IGZvciB0aGUgZGVmYXVsdCBsZXZlbCAwIGxheW91dCAobm9ybWFsbHkgT25lQ29sdW1uKVxuXHRcdFx0aWYgKCFzTGF5b3V0KSB7XG5cdFx0XHRcdGNvbnN0IG9OZXh0VUlTdGF0ZSA9IHRoaXMuZ2V0SGVscGVyKCkuZ2V0TmV4dFVJU3RhdGUoMCk7XG5cdFx0XHRcdHNMYXlvdXQgPSBvTmV4dFVJU3RhdGUubGF5b3V0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgbGF5b3V0IGlmIGNvbXBhdGlibGUgd2l0aCB0aGUgbnVtYmVyIG9mIHRhcmdldHNcblx0XHRcdC8vIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY2FzZSBmb3Igbm9ybWFsIG5hdmlnYXRpb24sIGp1c3QgbmVlZGVkIGluIGNhc2Vcblx0XHRcdC8vIHRoZSBVUkwgaGFzIGJlZW4gbWFudWFsbHkgbW9kaWZpZWRcblx0XHRcdGNvbnN0IGFUYXJnZXRzID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmZpZ1wiKS50YXJnZXQ7XG5cdFx0XHRzTGF5b3V0ID0gdGhpcy5fY29ycmVjdExheW91dEZvclRhcmdldHMoc0xheW91dCwgYVRhcmdldHMpO1xuXG5cdFx0XHQvLyBVcGRhdGUgdGhlIGxheW91dCBvZiB0aGUgRmxleGlibGVDb2x1bW5MYXlvdXRcblx0XHRcdGlmIChzTGF5b3V0KSB7XG5cdFx0XHRcdHRoaXMuZ2V0RmNsQ29udHJvbCgpLnNldExheW91dChzTGF5b3V0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIGZvciB0aGUgRkNMIENvbXBvbmVudC5cblx0ICpcblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuRmNsLmNvbnRyb2xsZXIjZ2V0SGVscGVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5GY2wuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBJbnN0YW5jZSBvZiBhIHNlbWFudGljIGhlbHBlclxuXHQgKi9cblx0Z2V0SGVscGVyKCkge1xuXHRcdHJldHVybiBGbGV4aWJsZUNvbHVtbkxheW91dFNlbWFudGljSGVscGVyLmdldEluc3RhbmNlRm9yKHRoaXMuZ2V0RmNsQ29udHJvbCgpLCB0aGlzLl9vRkNMQ29uZmlnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGVzIHRoZSBGQ0wgbGF5b3V0IGZvciBhIGdpdmVuIEZDTCBsZXZlbCBhbmQgYSB0YXJnZXQgaGFzaC5cblx0ICpcblx0ICogQHBhcmFtIGlOZXh0RkNMTGV2ZWwgRkNMIGxldmVsIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gc0hhc2ggVGhlIGhhc2ggdG8gYmUgbmF2aWdhdGVkIHRvXG5cdCAqIEBwYXJhbSBzUHJvcG9zZWRMYXlvdXQgVGhlIHByb3Bvc2VkIGxheW91dFxuXHQgKiBAcGFyYW0ga2VlcEN1cnJlbnRMYXlvdXQgVHJ1ZSBpZiB3ZSB3YW50IHRvIGtlZXAgdGhlIGN1cnJlbnQgbGF5b3V0IGlmIHBvc3NpYmxlXG5cdCAqIEByZXR1cm5zIFRoZSBjYWxjdWxhdGVkIGxheW91dFxuXHQgKi9cblx0Y2FsY3VsYXRlTGF5b3V0KGlOZXh0RkNMTGV2ZWw6IG51bWJlciwgc0hhc2g6IHN0cmluZywgc1Byb3Bvc2VkTGF5b3V0OiBzdHJpbmcgfCB1bmRlZmluZWQsIGtlZXBDdXJyZW50TGF5b3V0OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdFx0Ly8gRmlyc3QsIGFzayB0aGUgRkNMIGhlbHBlciB0byBjYWxjdWxhdGUgdGhlIGxheW91dCBpZiBub3RoaW5nIGlzIHByb3Bvc2VkXG5cdFx0aWYgKCFzUHJvcG9zZWRMYXlvdXQpIHtcblx0XHRcdHNQcm9wb3NlZExheW91dCA9IGtlZXBDdXJyZW50TGF5b3V0ID8gdGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0TGF5b3V0KCkgOiB0aGlzLmdldEhlbHBlcigpLmdldE5leHRVSVN0YXRlKGlOZXh0RkNMTGV2ZWwpLmxheW91dDtcblx0XHR9XG5cblx0XHQvLyBUaGVuIGNoYW5nZSB0aGlzIHZhbHVlIGlmIG5lY2Vzc2FyeSwgYmFzZWQgb24gdGhlIG51bWJlciBvZiB0YXJnZXRzXG5cdFx0Y29uc3Qgb1JvdXRlID0gKHRoaXMuZ2V0Um91dGVyKCkgYXMgYW55KS5nZXRSb3V0ZUJ5SGFzaChgJHtzSGFzaH0/bGF5b3V0PSR7c1Byb3Bvc2VkTGF5b3V0fWApO1xuXHRcdGNvbnN0IGFUYXJnZXRzID0gdGhpcy5fb1RhcmdldHNGcm9tUm91dGVQYXR0ZXJuW29Sb3V0ZS5nZXRQYXR0ZXJuKCldO1xuXG5cdFx0cmV0dXJuIHRoaXMuX2NvcnJlY3RMYXlvdXRGb3JUYXJnZXRzKHNQcm9wb3NlZExheW91dCwgYVRhcmdldHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gRkNMIGxheW91dCBpcyBjb21wYXRpYmxlIHdpdGggYW4gYXJyYXkgb2YgdGFyZ2V0cy5cblx0ICpcblx0ICogQHBhcmFtIHNQcm9wb3NlZExheW91dCBQcm9wb3NlZCB2YWx1ZSBmb3IgdGhlIEZDTCBsYXlvdXRcblx0ICogQHBhcmFtIGFUYXJnZXRzIEFycmF5IG9mIHRhcmdldCBuYW1lcyB1c2VkIGZvciBjaGVja2luZ1xuXHQgKiBAcmV0dXJucyBUaGUgY29ycmVjdGVkIGxheW91dFxuXHQgKi9cblx0X2NvcnJlY3RMYXlvdXRGb3JUYXJnZXRzKHNQcm9wb3NlZExheW91dDogYW55LCBhVGFyZ2V0czogYW55KSB7XG5cdFx0Y29uc3QgYWxsQWxsb3dlZExheW91dHM6IGFueSA9IHtcblx0XHRcdFwiMlwiOiBbXCJUd29Db2x1bW5zTWlkRXhwYW5kZWRcIiwgXCJUd29Db2x1bW5zQmVnaW5FeHBhbmRlZFwiLCBcIk1pZENvbHVtbkZ1bGxTY3JlZW5cIl0sXG5cdFx0XHRcIjNcIjogW1xuXHRcdFx0XHRcIlRocmVlQ29sdW1uc01pZEV4cGFuZGVkXCIsXG5cdFx0XHRcdFwiVGhyZWVDb2x1bW5zRW5kRXhwYW5kZWRcIixcblx0XHRcdFx0XCJUaHJlZUNvbHVtbnNNaWRFeHBhbmRlZEVuZEhpZGRlblwiLFxuXHRcdFx0XHRcIlRocmVlQ29sdW1uc0JlZ2luRXhwYW5kZWRFbmRIaWRkZW5cIixcblx0XHRcdFx0XCJNaWRDb2x1bW5GdWxsU2NyZWVuXCIsXG5cdFx0XHRcdFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiXG5cdFx0XHRdXG5cdFx0fTtcblxuXHRcdGlmIChhVGFyZ2V0cyAmJiAhQXJyYXkuaXNBcnJheShhVGFyZ2V0cykpIHtcblx0XHRcdC8vIFRvIHN1cHBvcnQgc2luZ2xlIHRhcmdldCBhcyBhIHN0cmluZyBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdGFUYXJnZXRzID0gW2FUYXJnZXRzXTtcblx0XHR9XG5cblx0XHRpZiAoIWFUYXJnZXRzKSB7XG5cdFx0XHQvLyBEZWZlbnNpdmUsIGp1c3QgaW4gY2FzZS4uLlxuXHRcdFx0cmV0dXJuIHNQcm9wb3NlZExheW91dDtcblx0XHR9IGVsc2UgaWYgKGFUYXJnZXRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdC8vIE1vcmUgdGhhbiAxIHRhcmdldDoganVzdCBzaW1wbHkgY2hlY2sgZnJvbSB0aGUgYWxsb3dlZCB2YWx1ZXNcblx0XHRcdGNvbnN0IGFMYXlvdXRzID0gYWxsQWxsb3dlZExheW91dHNbYVRhcmdldHMubGVuZ3RoXTtcblx0XHRcdGlmIChhTGF5b3V0cy5pbmRleE9mKHNQcm9wb3NlZExheW91dCkgPCAwKSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wb3NlZCBsYXlvdXQgaXNuJ3QgY29tcGF0aWJsZSB3aXRoIHRoZSBudW1iZXIgb2YgY29sdW1uc1xuXHRcdFx0XHQvLyAtLT4gQXNrIHRoZSBoZWxwZXIgZm9yIHRoZSBkZWZhdWx0IGxheW91dCBmb3IgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5cdFx0XHRcdHNQcm9wb3NlZExheW91dCA9IGFMYXlvdXRzWzBdOyAvL3RoaXMuZ2V0SGVscGVyKCkuZ2V0TmV4dFVJU3RhdGUoYVRhcmdldHMubGVuZ3RoIC0gMSkubGF5b3V0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBPbmx5IG9uZSB0YXJnZXRcblx0XHRcdGNvbnN0IHNUYXJnZXRBZ2dyZWdhdGlvbiA9IHRoaXMuZ2V0VGFyZ2V0QWdncmVnYXRpb24oKVthVGFyZ2V0c1swXV0uYWdncmVnYXRpb24gfHwgdGhpcy5fb0ZDTENvbmZpZy5kZWZhdWx0Q29udHJvbEFnZ3JlZ2F0aW9uO1xuXHRcdFx0c3dpdGNoIChzVGFyZ2V0QWdncmVnYXRpb24pIHtcblx0XHRcdFx0Y2FzZSBcImJlZ2luQ29sdW1uUGFnZXNcIjpcblx0XHRcdFx0XHRzUHJvcG9zZWRMYXlvdXQgPSBcIk9uZUNvbHVtblwiO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwibWlkQ29sdW1uUGFnZXNcIjpcblx0XHRcdFx0XHRzUHJvcG9zZWRMYXlvdXQgPSBcIk1pZENvbHVtbkZ1bGxTY3JlZW5cIjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcImVuZENvbHVtblBhZ2VzXCI6XG5cdFx0XHRcdFx0c1Byb3Bvc2VkTGF5b3V0ID0gXCJFbmRDb2x1bW5GdWxsU2NyZWVuXCI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gc1Byb3Bvc2VkTGF5b3V0O1xuXHR9XG5cblx0LyoqXG5cdCAqIGdldCBhbGwgdmlzaWJsZSB2aWV3cyBpbiB0aGUgRkNMIGNvbXBvbmVudC5cblx0ICogc0xheW91dCBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgdmVyeSBzcGVjaWZpYyBhcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbGF0ZXN0IG5hdmlnYXRlZCByb3dcblx0ICpcblx0ICogQHBhcmFtIHsqfSBzTGF5b3V0IExheW91dCB0aGF0IHdhcyBhcHBsaWVkIGp1c3QgYmVmb3JlIHRoZSBjdXJyZW50IG5hdmlnYXRpb25cblx0ICogQHJldHVybnMge0FycmF5fSByZXR1cm4gdmlld3Ncblx0ICovXG5cblx0X2dldEFsbFZpc2libGVWaWV3cyhzTGF5b3V0PzogYW55KSB7XG5cdFx0Y29uc3QgYVZpZXdzID0gW107XG5cdFx0c0xheW91dCA9IHNMYXlvdXQgPyBzTGF5b3V0IDogdGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0TGF5b3V0KCk7XG5cdFx0c3dpdGNoIChzTGF5b3V0KSB7XG5cdFx0XHRjYXNlIExheW91dFR5cGUuRW5kQ29sdW1uRnVsbFNjcmVlbjpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRFbmRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEVuZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIExheW91dFR5cGUuTWlkQ29sdW1uRnVsbFNjcmVlbjpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIExheW91dFR5cGUuT25lQ29sdW1uOlxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zRW5kRXhwYW5kZWQ6XG5cdFx0XHRjYXNlIExheW91dFR5cGUuVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWQ6XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRFbmRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlR3b0NvbHVtbnNCZWdpbkV4cGFuZGVkOlxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlR3b0NvbHVtbnNNaWRFeHBhbmRlZDpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNNaWRFeHBhbmRlZEVuZEhpZGRlbjpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNCZWdpbkV4cGFuZGVkRW5kSGlkZGVuOlxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0TG9nLmVycm9yKGBVbmhhbmRsZWQgc3dpdGNoIGNhc2UgZm9yICR7dGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0TGF5b3V0KCl9YCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFWaWV3cztcblx0fVxuXHRfZ2V0QWxsVmlld3Moc0xheW91dD86IGFueSkge1xuXHRcdGNvbnN0IGFWaWV3cyA9IFtdO1xuXHRcdHNMYXlvdXQgPSBzTGF5b3V0ID8gc0xheW91dCA6IHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldExheW91dCgpO1xuXHRcdHN3aXRjaCAoc0xheW91dCkge1xuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLk9uZUNvbHVtbjpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNFbmRFeHBhbmRlZDpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNNaWRFeHBhbmRlZDpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNNaWRFeHBhbmRlZEVuZEhpZGRlbjpcblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5UaHJlZUNvbHVtbnNCZWdpbkV4cGFuZGVkRW5kSGlkZGVuOlxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLkVuZENvbHVtbkZ1bGxTY3JlZW46XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSB7XG5cdFx0XHRcdFx0YVZpZXdzLnB1c2goX2dldFZpZXdGcm9tQ29udGFpbmVyKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRFbmRDb2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlR3b0NvbHVtbnNCZWdpbkV4cGFuZGVkOlxuXHRcdFx0Y2FzZSBMYXlvdXRUeXBlLlR3b0NvbHVtbnNNaWRFeHBhbmRlZDpcblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRCZWdpbkNvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkge1xuXHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50TWlkQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgTGF5b3V0VHlwZS5NaWRDb2x1bW5GdWxsU2NyZWVuOlxuXHRcdFx0XHQvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBtaWQgY29sdW1uIGZ1bGxzY3JlZW4gY29tZXMgZnJvbSBhIDIgb3IgYSAzIGNvbHVtbiBsYXlvdXRcblx0XHRcdFx0Y29uc3Qgc0xheW91dFdoZW5FeGl0RnVsbFNjcmVlbiA9ICh0aGlzLmdldEhlbHBlcigpLmdldEN1cnJlbnRVSVN0YXRlKCkgYXMgYW55KS5hY3Rpb25CdXR0b25zSW5mby5taWRDb2x1bW4uZXhpdEZ1bGxTY3JlZW47XG5cdFx0XHRcdGlmICh0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50QmVnaW5Db2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudEJlZ2luQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRNaWRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRhVmlld3MucHVzaChfZ2V0Vmlld0Zyb21Db250YWluZXIodGhpcy5nZXRGY2xDb250cm9sKCkuZ2V0Q3VycmVudE1pZENvbHVtblBhZ2UoKSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzTGF5b3V0V2hlbkV4aXRGdWxsU2NyZWVuLmluZGV4T2YoXCJUaHJlZUNvbHVtblwiKSA+PSAwKSB7XG5cdFx0XHRcdFx0Ly8gV2UgY29tZSBmcm9tIGEgMyBjb2x1bW4gbGF5b3V0XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0RmNsQ29udHJvbCgpLmdldEN1cnJlbnRFbmRDb2x1bW5QYWdlKCkpIHtcblx0XHRcdFx0XHRcdGFWaWV3cy5wdXNoKF9nZXRWaWV3RnJvbUNvbnRhaW5lcih0aGlzLmdldEZjbENvbnRyb2woKS5nZXRDdXJyZW50RW5kQ29sdW1uUGFnZSgpKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRMb2cuZXJyb3IoYFVuaGFuZGxlZCBzd2l0Y2ggY2FzZSBmb3IgJHt0aGlzLmdldEZjbENvbnRyb2woKS5nZXRMYXlvdXQoKX1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFWaWV3cztcblx0fVxuXG5cdG9uQ29udGFpbmVyUmVhZHkoKSB7XG5cdFx0Ly8gUmVzdG9yZSB2aWV3cyBpZiBuZWNjZXNzYXJ5LlxuXHRcdGNvbnN0IGFWaWV3cyA9IHRoaXMuX2dldEFsbFZpc2libGVWaWV3cygpO1xuXHRcdGNvbnN0IGFSZXN0b3JlUHJvbWlzZXM6IGFueVtdID0gYVZpZXdzLnJlZHVjZShmdW5jdGlvbiAoYVByb21pc2VzOiBhbnksIG9UYXJnZXRWaWV3OiBhbnkpIHtcblx0XHRcdGFQcm9taXNlcy5wdXNoKEtlZXBBbGl2ZUhlbHBlci5yZXN0b3JlVmlldyhvVGFyZ2V0VmlldykpO1xuXHRcdFx0cmV0dXJuIGFQcm9taXNlcztcblx0XHR9LCBbXSk7XG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKGFSZXN0b3JlUHJvbWlzZXMpO1xuXHR9XG5cblx0Z2V0UmlnaHRtb3N0Q29udGV4dCgpOiBDb250ZXh0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0UmlnaHRtb3N0VmlldygpO1xuXHRcdHJldHVybiBvVmlldyAmJiBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHR9XG5cblx0Z2V0UmlnaHRtb3N0VmlldygpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0QWxsVmlld3MoKS5wb3AoKTtcblx0fVxuXG5cdGlzQ29udGV4dFVzZWRJblBhZ2VzKG9Db250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLmdldEZjbENvbnRyb2woKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCBhQWxsVmlzaWJsZVZpZXdzID0gdGhpcy5fZ2V0QWxsVmlld3MoKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUFsbFZpc2libGVWaWV3cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBhQWxsVmlzaWJsZVZpZXdzW2ldO1xuXHRcdFx0aWYgKCFvVmlldykge1xuXHRcdFx0XHQvLyBBIHZpZXcgaGFzIGJlZW4gZGVzdHJveWVkIC0tPiBhcHAgaXMgY3VycmVudGx5IGJlaW5nIGRlc3Ryb3llZFxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSA9PT0gb0NvbnRleHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZjbENvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJBLElBQU1BLFVBQVUsR0FBR0MsUUFBUSxDQUFDRCxVQUE1QjtFQUVBLElBQU1FLFNBQVMsR0FBRztJQUNqQkMsSUFBSSxFQUFFO01BQ0xDLEtBQUssRUFBRSxDQUFDLGFBQUQsRUFBZ0IsV0FBaEIsRUFBNkIsV0FBN0IsQ0FERjtNQUVMQyxhQUFhLEVBQUU7UUFDZEMsTUFBTSxFQUFFLFlBRE07UUFFZEMsTUFBTSxFQUFFO01BRk0sQ0FGVjtNQU1MQyxNQUFNLEVBQUU7UUFDUEYsTUFBTSxFQUFFLEtBREQ7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
|
|
@@ -18,7 +18,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
18
18
|
|
|
19
19
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
20
20
|
|
|
21
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf
|
|
21
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
22
22
|
|
|
23
23
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
24
24
|
|
|
@@ -204,4 +204,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
204
204
|
})), _class2)) || _class);
|
|
205
205
|
return NavContainerController;
|
|
206
206
|
}, false);
|
|
207
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdkNvbnRhaW5lci5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIk5hdkNvbnRhaW5lckNvbnRyb2xsZXIiLCJkZWZpbmVVSTVDbGFzcyIsInVzaW5nRXh0ZW5zaW9uIiwiVmlld1N0YXRlIiwib3ZlcnJpZGUiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHMiLCJhQ29udHJvbHMiLCJvVmlldyIsImdldFZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJwdXNoIiwiX2dldEN1cnJlbnRQYWdlIiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvblJlc3RvcmUiLCJvTmF2Q29udGFpbmVyIiwiYnlJZCIsIm9JbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJvUGFnZXMiLCJnZXRQcm9wZXJ0eSIsInNDb21wb25lbnRJZCIsInNldFByb3BlcnR5Iiwib25Db250YWluZXJSZWFkeSIsIm9uU3VzcGVuZCIsImFQYWdlcyIsImdldFBhZ2VzIiwiZm9yRWFjaCIsIm9QYWdlIiwib1RhcmdldFZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJ2aWV3U3RhdGUiLCJvUGFnZVByb21pc2UiLCJ0aGVuIiwib0N1cnJlbnRQYWdlIiwiS2VlcEFsaXZlSGVscGVyIiwicmVzdG9yZVZpZXciLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldEN1cnJlbnRQYWdlIiwiaXNQbGFjZWhvbGRlciIsImF0dGFjaEV2ZW50T25jZSIsIm9FdmVudCIsIm9UYXJnZXRQYWdlIiwiZ2V0UGFyYW1ldGVyIiwiX2dldE5hdkNvbnRhaW5lciIsImdldENvbnRlbnQiLCJpc0ZjbEVuYWJsZWQiLCJfc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMiLCJkaXNwbGF5TWVzc2FnZVBhZ2UiLCJzRXJyb3JNZXNzYWdlIiwibVBhcmFtZXRlcnMiLCJyZWplY3QiLCJvTWVzc2FnZVBhZ2UiLCJNZXNzYWdlUGFnZSIsInNob3dIZWFkZXIiLCJpY29uIiwiYWRkUGFnZSIsInNldFRleHQiLCJ0ZWNobmljYWxNZXNzYWdlIiwic2V0Q3VzdG9tRGVzY3JpcHRpb24iLCJMaW5rIiwidGV4dCIsImRlc2NyaXB0aW9uIiwicHJlc3MiLCJNZXNzYWdlQm94Iiwic2hvdyIsIkljb24iLCJFUlJPUiIsInRpdGxlIiwiYWN0aW9ucyIsIkFjdGlvbiIsIk9LIiwiZGVmYXVsdEFjdGlvbiIsImRldGFpbHMiLCJ0ZWNobmljYWxEZXRhaWxzIiwiY29udGVudFdpZHRoIiwic2V0RGVzY3JpcHRpb24iLCJoYW5kbGVTaGVsbEJhY2siLCJvRXJyb3JPcmlnaW5QYWdlIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsImdldFNoZWxsU2VydmljZXMiLCJzZXRCYWNrTmF2aWdhdGlvbiIsInRvIiwiZ2V0SWQiLCJhdHRhY2hBZnRlck5hdmlnYXRlIiwiZSIsIkxvZyIsImluZm8iLCJCYXNlQ29udHJvbGxlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFXTUEsc0IsV0FETEMsY0FBYyxDQUFDLHdEQUFELEMsVUFFYkMsY0FBYyxDQUNkQyxTQUFTLENBQUNDLFFBQVYsQ0FBbUI7QUFDbEJDLElBQUFBLHFCQUFxQixFQUFFLFlBQVk7QUFDbEMsYUFBTyxLQUFQO0FBQ0EsS0FIaUI7QUFJbEJDLElBQUFBLDJCQUEyQixFQUFFLFVBQTJCQyxTQUEzQixFQUEyQztBQUN2RSxVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUVBSixNQUFBQSxTQUFTLENBQUNLLElBQVYsQ0FBZUYsV0FBVyxDQUFDRyxlQUFaLENBQTRCTCxLQUE1QixDQUFmO0FBQ0EsS0FSaUI7QUFTbEJNLElBQUFBLGtCQUFrQixFQUFFLFVBQTJCQyxjQUEzQixFQUFnRDtBQUNuRSxVQUFNUCxLQUFLLEdB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QUFBLGFBQWEsQ0FBQ0UsZ0JBQWQsR0FBaUNDLGlCQUFqQyxDQUFtRCxZQUFZO0FBQzdEckUsY0FBQUEsYUFBRCxDQUF1QnNFLEVBQXZCLENBQTBCTCxnQkFBZ0IsQ0FBQ00sS0FBakIsRUFBMUI7QUFDQUwsY0FBQUEsYUFBYSxDQUFDRSxnQkFBZCxHQUFpQ0MsaUJBQWpDO0FBQ0EsYUFIRDtBQUlBOztBQUNEckUsVUFBQUEsYUFBYSxDQUFDd0UsbUJBQWQsQ0FBa0MsWUFBWTtBQUM3Q2hELFlBQUFBLE9BQU8sQ0FBQyxJQUFELENBQVA7QUFDQSxXQUZEO0FBR0N4QixVQUFBQSxhQUFELENBQXVCc0UsRUFBdkIsQ0FBMEIsTUFBSSxDQUFDL0IsWUFBTCxDQUFrQmdDLEtBQWxCLEVBQTFCO0FBQ0EsU0E5Q0QsQ0E4Q0UsT0FBT0UsQ0FBUCxFQUFVO0FBQ1huQyxVQUFBQSxNQUFNLENBQUMsS0FBRCxDQUFOO0FBQ0FvQyxVQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBU0YsQ0FBVDtBQUNBO0FBQ0QsT0FuRE0sQ0FBUDtBQW9EQSxLOzs7SUFoS21DRyxjOzs7Ozs7U0FtS3RCN0Ysc0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3gsIHsgQWN0aW9uLCBJY29uIH0gZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlUGFnZSBmcm9tIFwic2FwL20vTWVzc2FnZVBhZ2VcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCIuL1Jvb3RDb250YWluZXJCYXNlQ29udHJvbGxlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXJcIilcbmNsYXNzIE5hdkNvbnRhaW5lckNvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRWaWV3U3RhdGUub3ZlcnJpZGUoe1xuXHRcdFx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldEN1cnJlbnRQYWdlKG9WaWV3KSk7XG5cdFx0XHR9LFxuXHRcdFx0YWRhcHRTdGF0ZUNvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhU3RhdGVDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0Q3VycmVudFBhZ2Uob1ZpZXcpKTtcblx0XHRcdH0sXG5cdFx0XHRvblJlc3RvcmU6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIiksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvTmF2Q29udGFpbmVyLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRjb25zdCBvUGFnZXMgPSBvSW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9wYWdlc1wiKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNDb21wb25lbnRJZCBpbiBvUGFnZXMpIHtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShgL3BhZ2VzLyR7c0NvbXBvbmVudElkfS9yZXN0b3JlU3RhdHVzYCwgXCJwZW5kaW5nXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Db250cm9sbGVyLm9uQ29udGFpbmVyUmVhZHkoKTtcblx0XHRcdH0sXG5cdFx0XHRvblN1c3BlbmQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIikgYXMgTmF2Q29udGFpbmVyO1xuXHRcdFx0XHRjb25zdCBhUGFnZXMgPSBvTmF2Q29udGFpbmVyLmdldFBhZ2VzKCk7XG5cdFx0XHRcdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZTogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9QYWdlKTtcblxuXHRcdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1RhcmdldFZpZXcgJiYgb1RhcmdldFZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlLm9uU3VzcGVuZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdClcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXHRwcml2YXRlIG9NZXNzYWdlUGFnZT86IE1lc3NhZ2VQYWdlO1xuXG5cdG9uQ29udGFpbmVyUmVhZHkoKSB7XG5cdFx0Ly8gUmVzdG9yZSB2aWV3cyBpZiBuZWNjZXNzYXJ5LlxuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvUGFnZVByb21pc2UgPSB0aGlzLl9nZXRDdXJyZW50UGFnZShvVmlldyk7XG5cblx0XHRyZXR1cm4gb1BhZ2VQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG9DdXJyZW50UGFnZTogYW55KSB7XG5cdFx0XHRjb25zdCBvVGFyZ2V0VmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob0N1cnJlbnRQYWdlKTtcblx0XHRcdHJldHVybiBLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcob1RhcmdldFZpZXcpO1xuXHRcdH0pO1xuXHR9XG5cblx0X2dldEN1cnJlbnRQYWdlKG9WaWV3OiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRjb25zdCBvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIik7XG5cdFx0XHRjb25zdCBvQ3VycmVudFBhZ2UgPSBvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9DdXJyZW50UGFnZSAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlciAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmlzUGxhY2Vob2xkZXIgJiZcblx0XHRcdFx0b0N1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5pc1BsYWNlaG9sZGVyKClcblx0XHRcdCkge1xuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmF0dGFjaEV2ZW50T25jZShcInRhcmdldFBhZ2VJbnNlcnRlZEluQ29udGFpbmVyXCIsIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9UYXJnZXRQYWdlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInRhcmdldHBhZ2VcIik7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9UYXJnZXRQYWdlKTtcblx0XHRcdFx0XHRyZXNvbHZlKG9UYXJnZXRWaWV3ICE9PSBvVmlldyAmJiBvVGFyZ2V0Vmlldyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9DdXJyZW50UGFnZSk7XG5cdFx0XHRcdHJlc29sdmUob1RhcmdldFZpZXcgIT09IG9WaWV3ICYmIG9UYXJnZXRWaWV3KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9nZXROYXZDb250YWluZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgRkNMIGNvbXBvbmVudCBpcyBlbmFibGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuTmF2Q29udGFpbmVyLmNvbnRyb2xsZXIjaXNGY2xFbmFibGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBgZmFsc2VgIHNpbmNlIHdlIGFyZSBub3QgaW4gRkNMIHNjZW5hcmlvXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMoKSB7XG5cdFx0Ly8gRG8gbm90aGluZ1xuXHR9XG5cblx0ZGlzcGxheU1lc3NhZ2VQYWdlKHNFcnJvck1lc3NhZ2U6IGFueSwgbVBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb05hdkNvbnRhaW5lciA9IHRoaXMuX2dldE5hdkNvbnRhaW5lcigpIGFzIE5hdkNvbnRhaW5lcjtcblxuXHRcdFx0XHRpZiAoIXRoaXMub01lc3NhZ2VQYWdlKSB7XG5cdFx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2UgPSBuZXcgTWVzc2FnZVBhZ2Uoe1xuXHRcdFx0XHRcdFx0c2hvd0hlYWRlcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRpY29uOiBcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyLmFkZFBhZ2UodGhpcy5vTWVzc2FnZVBhZ2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2Uuc2V0VGV4dChzRXJyb3JNZXNzYWdlKTtcblxuXHRcdFx0XHRpZiAobVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSkge1xuXHRcdFx0XHRcdHRoaXMub01lc3NhZ2VQYWdlLnNldEN1c3RvbURlc2NyaXB0aW9uKFxuXHRcdFx0XHRcdFx0bmV3IExpbmsoe1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2VCb3guc2hvdyhtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBJY29uLkVSUk9SLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uczogW0FjdGlvbi5PS10sXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBBY3Rpb24uT0ssXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXRhaWxzOiBtUGFyYW1ldGVycy50ZWNobmljYWxEZXRhaWxzIHx8IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50V2lkdGg6IFwiNjAlXCJcblx0XHRcdFx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9NZXNzYWdlUGFnZS5zZXREZXNjcmlwdGlvbihtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBcIlwiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChtUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2spIHtcblx0XHRcdFx0XHRjb25zdCBvRXJyb3JPcmlnaW5QYWdlID0gb05hdkNvbnRhaW5lci5nZXRDdXJyZW50UGFnZSgpLFxuXHRcdFx0XHRcdFx0b0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCkpO1xuXHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdChvTmF2Q29udGFpbmVyIGFzIGFueSkudG8ob0Vycm9yT3JpZ2luUGFnZS5nZXRJZCgpKTtcblx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0b05hdkNvbnRhaW5lci5hdHRhY2hBZnRlck5hdmlnYXRlKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0KG9OYXZDb250YWluZXIgYXMgYW55KS50byh0aGlzLm9NZXNzYWdlUGFnZS5nZXRJZCgpKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmVqZWN0KGZhbHNlKTtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBhbnkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdkNvbnRhaW5lckNvbnRyb2xsZXI7XG4iXX0=
|
|
207
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZDb250YWluZXJDb250cm9sbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJ1c2luZ0V4dGVuc2lvbiIsIlZpZXdTdGF0ZSIsIm92ZXJyaWRlIiwiYXBwbHlJbml0aWFsU3RhdGVPbmx5IiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwicHVzaCIsIl9nZXRDdXJyZW50UGFnZSIsImFkYXB0U3RhdGVDb250cm9scyIsImFTdGF0ZUNvbnRyb2xzIiwib25SZXN0b3JlIiwib05hdkNvbnRhaW5lciIsImJ5SWQiLCJvSW50ZXJuYWxNb2RlbCIsImdldE1vZGVsIiwib1BhZ2VzIiwiZ2V0UHJvcGVydHkiLCJzQ29tcG9uZW50SWQiLCJzZXRQcm9wZXJ0eSIsIm9uQ29udGFpbmVyUmVhZHkiLCJvblN1c3BlbmQiLCJhUGFnZXMiLCJnZXRQYWdlcyIsImZvckVhY2giLCJvUGFnZSIsIm9UYXJnZXRWaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwidmlld1N0YXRlIiwib1BhZ2VQcm9taXNlIiwidGhlbiIsIm9DdXJyZW50UGFnZSIsIktlZXBBbGl2ZUhlbHBlciIsInJlc3RvcmVWaWV3IiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRDdXJyZW50UGFnZSIsImlzUGxhY2Vob2xkZXIiLCJhdHRhY2hFdmVudE9uY2UiLCJvRXZlbnQiLCJvVGFyZ2V0UGFnZSIsImdldFBhcmFtZXRlciIsIl9nZXROYXZDb250YWluZXIiLCJnZXRDb250ZW50IiwiaXNGY2xFbmFibGVkIiwiX3Njcm9sbFRhYmxlc1RvTGFzdE5hdmlnYXRlZEl0ZW1zIiwiZGlzcGxheU1lc3NhZ2VQYWdlIiwic0Vycm9yTWVzc2FnZSIsIm1QYXJhbWV0ZXJzIiwicmVqZWN0Iiwib01lc3NhZ2VQYWdlIiwiTWVzc2FnZVBhZ2UiLCJzaG93SGVhZGVyIiwiaWNvbiIsImFkZFBhZ2UiLCJzZXRUZXh0IiwidGVjaG5pY2FsTWVzc2FnZSIsInNldEN1c3RvbURlc2NyaXB0aW9uIiwiTGluayIsInRleHQiLCJkZXNjcmlwdGlvbiIsInByZXNzIiwiTWVzc2FnZUJveCIsInNob3ciLCJJY29uIiwiRVJST1IiLCJ0aXRsZSIsImFjdGlvbnMiLCJBY3Rpb24iLCJPSyIsImRlZmF1bHRBY3Rpb24iLCJkZXRhaWxzIiwidGVjaG5pY2FsRGV0YWlscyIsImNvbnRlbnRXaWR0aCIsInNldERlc2NyaXB0aW9uIiwiaGFuZGxlU2hlbGxCYWNrIiwib0Vycm9yT3JpZ2luUGFnZSIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2V0QmFja05hdmlnYXRpb24iLCJ0byIsImdldElkIiwiYXR0YWNoQWZ0ZXJOYXZpZ2F0ZSIsImUiLCJMb2ciLCJpbmZvIiwiQmFzZUNvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk5hdkNvbnRhaW5lci5jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3gsIHsgQWN0aW9uLCBJY29uIH0gZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlUGFnZSBmcm9tIFwic2FwL20vTWVzc2FnZVBhZ2VcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCIuL1Jvb3RDb250YWluZXJCYXNlQ29udHJvbGxlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXJcIilcbmNsYXNzIE5hdkNvbnRhaW5lckNvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRWaWV3U3RhdGUub3ZlcnJpZGUoe1xuXHRcdFx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldEN1cnJlbnRQYWdlKG9WaWV3KSk7XG5cdFx0XHR9LFxuXHRcdFx0YWRhcHRTdGF0ZUNvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhU3RhdGVDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0Q3VycmVudFBhZ2Uob1ZpZXcpKTtcblx0XHRcdH0sXG5cdFx0XHRvblJlc3RvcmU6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIiksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvTmF2Q29udGFpbmVyLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRjb25zdCBvUGFnZXMgPSBvSW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9wYWdlc1wiKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNDb21wb25lbnRJZCBpbiBvUGFnZXMpIHtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShgL3BhZ2VzLyR7c0NvbXBvbmVudElkfS9yZXN0b3JlU3RhdHVzYCwgXCJwZW5kaW5nXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Db250cm9sbGVyLm9uQ29udGFpbmVyUmVhZHkoKTtcblx0XHRcdH0sXG5cdFx0XHRvblN1c3BlbmQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIikgYXMgTmF2Q29udGFpbmVyO1xuXHRcdFx0XHRjb25zdCBhUGFnZXMgPSBvTmF2Q29udGFpbmVyLmdldFBhZ2VzKCk7XG5cdFx0XHRcdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZTogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9QYWdlKTtcblxuXHRcdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1RhcmdldFZpZXcgJiYgb1RhcmdldFZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlLm9uU3VzcGVuZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdClcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXHRwcml2YXRlIG9NZXNzYWdlUGFnZT86IE1lc3NhZ2VQYWdlO1xuXG5cdG9uQ29udGFpbmVyUmVhZHkoKSB7XG5cdFx0Ly8gUmVzdG9yZSB2aWV3cyBpZiBuZWNjZXNzYXJ5LlxuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvUGFnZVByb21pc2UgPSB0aGlzLl9nZXRDdXJyZW50UGFnZShvVmlldyk7XG5cblx0XHRyZXR1cm4gb1BhZ2VQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG9DdXJyZW50UGFnZTogYW55KSB7XG5cdFx0XHRjb25zdCBvVGFyZ2V0VmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob0N1cnJlbnRQYWdlKTtcblx0XHRcdHJldHVybiBLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcob1RhcmdldFZpZXcpO1xuXHRcdH0pO1xuXHR9XG5cblx0X2dldEN1cnJlbnRQYWdlKG9WaWV3OiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRjb25zdCBvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIik7XG5cdFx0XHRjb25zdCBvQ3VycmVudFBhZ2UgPSBvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9DdXJyZW50UGFnZSAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlciAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmlzUGxhY2Vob2xkZXIgJiZcblx0XHRcdFx0b0N1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5pc1BsYWNlaG9sZGVyKClcblx0XHRcdCkge1xuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmF0dGFjaEV2ZW50T25jZShcInRhcmdldFBhZ2VJbnNlcnRlZEluQ29udGFpbmVyXCIsIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9UYXJnZXRQYWdlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInRhcmdldHBhZ2VcIik7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9UYXJnZXRQYWdlKTtcblx0XHRcdFx0XHRyZXNvbHZlKG9UYXJnZXRWaWV3ICE9PSBvVmlldyAmJiBvVGFyZ2V0Vmlldyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9DdXJyZW50UGFnZSk7XG5cdFx0XHRcdHJlc29sdmUob1RhcmdldFZpZXcgIT09IG9WaWV3ICYmIG9UYXJnZXRWaWV3KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9nZXROYXZDb250YWluZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgRkNMIGNvbXBvbmVudCBpcyBlbmFibGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuTmF2Q29udGFpbmVyLmNvbnRyb2xsZXIjaXNGY2xFbmFibGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBgZmFsc2VgIHNpbmNlIHdlIGFyZSBub3QgaW4gRkNMIHNjZW5hcmlvXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMoKSB7XG5cdFx0Ly8gRG8gbm90aGluZ1xuXHR9XG5cblx0ZGlzcGxheU1lc3NhZ2VQYWdlKHNFcnJvck1lc3NhZ2U6IGFueSwgbVBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb05hdkNvbnRhaW5lciA9IHRoaXMuX2dldE5hdkNvbnRhaW5lcigpIGFzIE5hdkNvbnRhaW5lcjtcblxuXHRcdFx0XHRpZiAoIXRoaXMub01lc3NhZ2VQYWdlKSB7XG5cdFx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2UgPSBuZXcgTWVzc2FnZVBhZ2Uoe1xuXHRcdFx0XHRcdFx0c2hvd0hlYWRlcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRpY29uOiBcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyLmFkZFBhZ2UodGhpcy5vTWVzc2FnZVBhZ2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2Uuc2V0VGV4dChzRXJyb3JNZXNzYWdlKTtcblxuXHRcdFx0XHRpZiAobVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSkge1xuXHRcdFx0XHRcdHRoaXMub01lc3NhZ2VQYWdlLnNldEN1c3RvbURlc2NyaXB0aW9uKFxuXHRcdFx0XHRcdFx0bmV3IExpbmsoe1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2VCb3guc2hvdyhtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBJY29uLkVSUk9SLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uczogW0FjdGlvbi5PS10sXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBBY3Rpb24uT0ssXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXRhaWxzOiBtUGFyYW1ldGVycy50ZWNobmljYWxEZXRhaWxzIHx8IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50V2lkdGg6IFwiNjAlXCJcblx0XHRcdFx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9NZXNzYWdlUGFnZS5zZXREZXNjcmlwdGlvbihtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBcIlwiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChtUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2spIHtcblx0XHRcdFx0XHRjb25zdCBvRXJyb3JPcmlnaW5QYWdlID0gb05hdkNvbnRhaW5lci5nZXRDdXJyZW50UGFnZSgpLFxuXHRcdFx0XHRcdFx0b0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCkpO1xuXHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdChvTmF2Q29udGFpbmVyIGFzIGFueSkudG8ob0Vycm9yT3JpZ2luUGFnZS5nZXRJZCgpKTtcblx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0b05hdkNvbnRhaW5lci5hdHRhY2hBZnRlck5hdmlnYXRlKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0KG9OYXZDb250YWluZXIgYXMgYW55KS50byh0aGlzLm9NZXNzYWdlUGFnZS5nZXRJZCgpKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmVqZWN0KGZhbHNlKTtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBhbnkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdkNvbnRhaW5lckNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BYU1BLHNCLFdBRExDLGNBQWMsQ0FBQyx3REFBRCxDLFVBRWJDLGNBQWMsQ0FDZEMsU0FBUyxDQUFDQyxRQUFWLENBQW1CO0lB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
|