@sapui5/sap.fe.core 1.120.24 → 1.120.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- package/src/sap/fe/core/AppStateHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +14 -4
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +13 -4
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +3 -2
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +6 -2
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle_ar.properties +1 -1
- package/src/sap/fe/core/messagebundle_cs.properties +2 -2
- package/src/sap/fe/core/messagebundle_es.properties +3 -3
- package/src/sap/fe/core/messagebundle_ja.properties +1 -1
- package/src/sap/fe/core/messagebundle_no.properties +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +22 -12
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +21 -12
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +1 -1
package/package.json
CHANGED
package/src/sap/fe/core/.library
CHANGED
|
@@ -61,7 +61,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
|
|
|
61
61
|
routerProxy = appComponent.getRouterProxy(),
|
|
62
62
|
hash = routerProxy.getHash(),
|
|
63
63
|
isStickyMode = ModelHelper.isStickySessionSupported(appComponent.getMetaModel()),
|
|
64
|
-
newHash = navigationService.replaceInnerAppStateKey(routerProxy.
|
|
64
|
+
newHash = navigationService.replaceInnerAppStateKey(routerProxy.getHash(), appStateKey);
|
|
65
65
|
if (this.simultaneousCreateRequest[stateIdentifier] === 0 && newHash !== hash) {
|
|
66
66
|
routerProxy.navToHash(newHash, undefined, undefined, undefined, !isStickyMode);
|
|
67
67
|
this.bNoRouteChange = true;
|
|
@@ -325,4 +325,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
|
|
|
325
325
|
*/
|
|
326
326
|
return AppStateHandler;
|
|
327
327
|
}, true);
|
|
328
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0IiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwiZ2V0RnVsbEhhc2giLCJuYXZUb0hhc2giLCJ1bmRlZmluZWQiLCJfY3JlYXRlQXBwU3RhdGVLZXkiLCJhcHBTdGF0ZURhdGEiLCJzdG9yZUlubmVyQXBwU3RhdGVBc3luYyIsIl9nZXRBcHBTdGF0ZUluZm8iLCJjcmVhdGVBcHBQYXJhbWV0ZXJzIiwicmVwbGFjZUhhc2giLCJ2aWV3SWQiLCJhcHBTdGF0ZSIsImN1cnJlbnRTdGF0ZVRvVXBkYXRlIiwiZGVlcEVxdWFsIiwib0Vycm9yIiwiZXJyb3IiLCJmaW5kQXBwU3RhdGVJbkhhc2giLCJjcmVhdGVBcHBTdGF0ZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiQXBwU3RhdGUiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJza2lwTWVyZ2UiLCJyb290Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsInZpZXdTdGF0ZSIsIkVycm9yIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwicm91dGluZ0lzQ29tcGxldGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm9BcHBEYXRhIiwic05hdlR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsIm5hdmlnYXRpb25UeXBlIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdG9FUzZQcm9taXNlIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1RvRVM2UHJvbWlzZVwiO1xuaW1wb3J0IHR5cGUgeyBJbm5lckFwcERhdGEgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vTmF2aWdhdGlvbkhhbmRsZXJcIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vbGlicmFyeVwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuXG5jb25zdCBOYXZUeXBlID0gbGlicmFyeS5OYXZUeXBlO1xudHlwZSBBcHBTdGF0ZSA9IHtcblx0c2tpcE1lcmdlPzogYm9vbGVhbjtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5leHBvcnQgdHlwZSBBcHBEYXRhID0ge1xuXHRvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudDtcblx0b1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdGJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk6IGJvb2xlYW47XG5cdGFwcFN0YXRlOiBBcHBTdGF0ZTtcblx0aUFwcFN0YXRlPzoge1xuXHRcdGFwcFN0YXRlOiBBcHBTdGF0ZTtcblx0fTtcbn07XG5jb25zdCBTS0lQX01FUkdFX0tFWSA9IFwic2tpcE1lcmdlXCI7XG5leHBvcnQgdHlwZSBJQXBwU3RhdGUgPSB7XG5cdGFwcFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERhdGFJbmZvID0ge1xuXHRhcHBTdGF0ZURhdGE6IHsgYXBwU3RhdGU6IG9iamVjdCB8IHVuZGVmaW5lZCB9O1xuXHRhcHBTdGF0ZUtleTogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUFwcFBhcmFtZXRlcnMgPSB7XG5cdHJlcGxhY2VIYXNoPzogYm9vbGVhbjtcblx0c2tpcE1lcmdlPzogYm9vbGVhbjtcblx0dmlld0lkPzogc3RyaW5nO1xufTtcblxuY29uc3QgUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSA9IFwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURVwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBTdGF0ZUhhbmRsZXJcIilcbmNsYXNzIEFwcFN0YXRlSGFuZGxlciBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHRwdWJsaWMgc0lkOiBzdHJpbmc7XG5cblx0cHVibGljIG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwdWJsaWMgYk5vUm91dGVDaGFuZ2U6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBfbUN1cnJlbnRBcHBTdGF0ZT86IEFwcFN0YXRlID0ge307XG5cblx0c2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgdmlldy1zcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHBhcmFtIGlubmVyQXBwU3RhdGUgT3ZlcmFsbCBhcHBzdGF0ZVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIsIGlkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqIEByZXR1cm5zIElubmVyIGFwcHN0YXRlXG5cdCAqL1xuXHRfZ2V0SW5uZXJBcHBTdGF0ZUZvclZpZXcoaW5uZXJBcHBTdGF0ZTogSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHN0YXRlSWRlbnRpZmllciA9PT0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB8fCAhaW5uZXJBcHBTdGF0ZSkge1xuXHRcdFx0Ly8gb3ZlcmFsbCBhcHAgc3RhdGUgbmVlZHMgdG8gYmUgY29uc2lkZXJlZC5cblx0XHRcdHJldHVybiBpbm5lckFwcFN0YXRlO1xuXHRcdH1cblxuXHRcdC8vIHdlIHRha2UgdGhlIHN1YnNldCBvZiB0aGUgYXBwIHN0YXRlIHdydCB0byB0aGUgbG9jYWwgdmlldyBpZC5cblx0XHRyZXR1cm4ge1xuXHRcdFx0W3N0YXRlSWRlbnRpZmllcl06IGlubmVyQXBwU3RhdGVbc3RhdGVJZGVudGlmaWVyIGFzIGtleW9mIHR5cGVvZiBpbm5lckFwcFN0YXRlXSB8fCB7fVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGFwcHN0YXRlIGluIGhhc2guXG5cdCAqXG5cdCAqIEBwYXJhbSBhcHBTdGF0ZUtleSBBcHBzdGF0ZSBrZXlcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLCBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKi9cblx0X2FkZEFwcFN0YXRlSW5IYXNoKGFwcFN0YXRlS2V5OiBzdHJpbmcsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50LFxuXHRcdFx0bmF2aWdhdGlvblNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdHJvdXRlclByb3h5ID0gYXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCksXG5cdFx0XHRoYXNoID0gcm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0aXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKGFwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKSksXG5cdFx0XHRuZXdIYXNoID0gbmF2aWdhdGlvblNlcnZpY2UucmVwbGFjZUlubmVyQXBwU3RhdGVLZXkocm91dGVyUHJveHkuZ2V0RnVsbEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdID09PSAwICYmIG5ld0hhc2ggIT09IGhhc2gpIHtcblx0XHRcdHJvdXRlclByb3h5Lm5hdlRvSGFzaChuZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdH1cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIEFwcHN0YXRlIEtleS5cblx0ICpcblx0ICogQHBhcmFtIGFwcFN0YXRlRGF0YSBBcHBzdGF0ZVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIsIElkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqIEByZXR1cm5zIEFwcHN0YXRlIEtleVxuXHQgKi9cblx0YXN5bmMgX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YTogSW5uZXJBcHBEYXRhLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50LFxuXHRcdFx0bmF2aWdhdGlvblNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblxuXHRcdGlmICh0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSkge1xuXHRcdFx0Ly8gYW55IG90aGVyIHZhbHVlXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSsrO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAwIG9yIHVuZGVmaW5lZFxuXHRcdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPSAxO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblxuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdLS07XG5cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0cmV0dXJuIGFwcFN0YXRlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYXBwc3RhdGUgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIGlubmVyQXBwU3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQSBCb29sZWFuIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3bHkgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy52aWV3SWQgSWQgb2YgdGhlIHZpZXcgZm9yIHdoaWNoIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBhcHAgc3RhdGUuIFRoaXMgYWxsb3dzIHVzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldy1zcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleXNcblx0ICovXG5cdGFzeW5jIF9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZTogSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkLCBjcmVhdGVBcHBQYXJhbWV0ZXJzPzogQ3JlYXRlQXBwUGFyYW1ldGVycyk6IFByb21pc2U8QXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0Y29uc3QgeyByZXBsYWNlSGFzaCA9IHRydWUsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fTtcblxuXHRcdGxldCBhcHBTdGF0ZUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cdFx0bGV0IGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblxuXHRcdGNvbnN0IGN1cnJlbnRTdGF0ZVRvVXBkYXRlID0gdGhpcy5fZ2V0SW5uZXJBcHBTdGF0ZUZvclZpZXcodGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRpZiAoaW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKGN1cnJlbnRTdGF0ZVRvVXBkYXRlLCBpbm5lckFwcFN0YXRlKSkge1xuXHRcdFx0Ly9cblx0XHRcdHRoaXMuX21DdXJyZW50QXBwU3RhdGUgPSB7IC4uLnRoaXMuX21DdXJyZW50QXBwU3RhdGUsIC4uLihpbm5lckFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB9O1xuXHRcdFx0YXBwU3RhdGVEYXRhID0geyBhcHBTdGF0ZTogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSB9O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YXBwU3RhdGVLZXkgPSBhd2FpdCB0aGlzLl9jcmVhdGVBcHBTdGF0ZUtleShhcHBTdGF0ZURhdGEsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0XHRcdGlmIChyZXBsYWNlSGFzaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdHRoaXMuX2FkZEFwcFN0YXRlSW5IYXNoKGFwcFN0YXRlS2V5LCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0XHRoYXNoID0gcm91dGVyUHJveHkuZ2V0SGFzaCgpO1xuXHRcdFx0YXBwU3RhdGVLZXkgPSByb3V0ZXJQcm94eS5maW5kQXBwU3RhdGVJbkhhc2goaGFzaCkgYXMgc3RyaW5nO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0YXBwU3RhdGVEYXRhLFxuXHRcdFx0YXBwU3RhdGVLZXlcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgdXBkYXRlcyB0aGUgYXBwc3RhdGUuXG5cdCAqIFJlcGxhY2VzIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBhcHBzdGF0ZSBiYXNlZCBvbiByZXBsYWNlSGFzaFxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBhbGxvd3MgdXMgdG8gY3JlYXRlIG9yIHVwZGF0ZSB2aWV3LXNwZWNpZmljIGFwcHN0YXRlLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldykge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Y29uc3Qga2V5VmFsdWUgPSBiaW5kaW5nQ29udGV4dC5nZXRPYmplY3QoKVtlbGVtZW50XTtcblx0XHRcdFx0aWYgKGtleVZhbHVlICE9PSB0ZWNobmljYWxLZXlzT2JqZWN0W2VsZW1lbnRdKSB7XG5cdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZykge1xuXHRcdGxldCBrZXkgPSBcIlwiLFxuXHRcdFx0aSA9IDA7XG5cdFx0Y29uc3QgYXBwU3RhdGVEYXRhID0gbmF2VHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQgPyBvQXBwRGF0YS5pQXBwU3RhdGUgOiBvQXBwRGF0YTtcblxuXHRcdGlmIChhcHBTdGF0ZURhdGE/LmFwcFN0YXRlKSB7XG5cdFx0XHRmb3IgKGk7IGkgPCBPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldID09PSB2aWV3SWQpIHtcblx0XHRcdFx0XHRrZXkgPSBPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChhcHBTdGF0ZURhdGE/LmFwcFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRbT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXV06IGFwcFN0YXRlRGF0YS5hcHBTdGF0ZVtrZXldIHx8IHt9XG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBcHBsaWVzIGFuIGFwcHN0YXRlIGJ5IGZldGNoaW5nIGFwcGRhdGEgYW5kIHBhc3NpbmcgaXQgdG8gX2FwcGx5QXBwc3RhdGVUb1BhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3SWRcblx0ICogQHBhcmFtIHZpZXdcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luYyBoYW5kbGluZ1xuXHQgKi9cblx0YXN5bmMgYXBwbHlBcHBTdGF0ZSh2aWV3SWQ/OiBzdHJpbmcsIHZpZXc/OiBWaWV3KSB7XG5cdFx0aWYgKCF0aGlzLm9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2hlY2tJZkxhc3RTZWVuUmVjb3JkID0gdGhpcy5fY2hlY2tJZkxhc3RTZWVuUmVjb3JkKHZpZXcpO1xuXHRcdGlmIChjaGVja0lmTGFzdFNlZW5SZWNvcmQgPT09IHRydWUpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcyk7XG5cdFx0Ly8gRG9uZSBmb3IgYnVzeSBpbmRpY2F0b3Jcblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXHRcdC8vIFRPRE8gb05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpIHNob3VsZCByZXR1cm4gRVM2IHByb21pc2UgaW5zdGVhZCBqUXVlcnkucHJvbWlzZVxuXHRcdHJldHVybiB0b0VTNlByb21pc2Uob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXHRcdFx0XHRpZiAoIW9Sb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBleHRlbnNpb24gcmVxdWlyZWQgZm9yIGNvbnRyb2xsZXIgJHtvUm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUob0FwcERhdGEsIHNOYXZUeXBlKSkge1xuXHRcdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5fZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpKSB7XG5cdFx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNob3VsZEFwcGx5U3RhdGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBhcHBseVZpZXdTdGF0ZSA9IGF3YWl0IG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIXNob3VsZEFwcGx5U3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcGx5Vmlld1N0YXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiYXBwU3RhdGUgY291bGQgbm90IGJlIGFwcGxpZWRcIiwgb0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdHRocm93IG9FcnJvcjtcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMpO1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUbyBjaGVjayBpcyByb3V0ZSBpcyBjaGFuZ2VkIGJ5IGNoYW5nZSBpbiB0aGUgaUFQUFN0YXRlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdXRlIGhhcyBjaG5hZ2VkXG5cdCAqL1xuXHRjaGVja0lmUm91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdHJldHVybiB0aGlzLmJOb1JvdXRlQ2hhbmdlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICovXG5cdHJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdGlmICh0aGlzLmJOb1JvdXRlQ2hhbmdlKSB7XG5cdFx0XHR0aGlzLmJOb1JvdXRlQ2hhbmdlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBZ0JBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBZ0JsQyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7RUFBQyxJQUd4REMsZUFBZSxXQURwQkMsY0FBYyxDQUFDLDZCQUE2QixDQUFDO0lBQUE7SUFZN0MseUJBQVlDLGFBQTJCLEVBQUU7TUFBQTtNQUN4Qyw4QkFBTztNQUFDLE1BTERDLGlCQUFpQixHQUFjLENBQUMsQ0FBQztNQU14QyxNQUFLRCxhQUFhLEdBQUdBLGFBQWE7TUFDbEMsTUFBS0UsR0FBRyxHQUFJLEdBQUVGLGFBQWEsQ0FBQ0csS0FBSyxFQUFHLGtCQUFpQjtNQUNy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
|
|
328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0IiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsIl9jaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJ2aWV3IiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwidGVjaG5pY2FsS2V5c09iamVjdCIsImJpbmRpbmdDb250ZXh0IiwicGF0aCIsImdldFBhdGgiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsIm1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJ0ZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0IiwiZWxlbWVudCIsImtleVZhbHVlIiwic2V0UHJvcGVydHkiLCJfZ2V0QXBwU3RhdGVEYXRhIiwibmF2VHlwZSIsImtleSIsImkiLCJoeWJyaWQiLCJpQXBwU3RhdGUiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlBcHBTdGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tJZkxhc3RTZWVuUmVjb3JkIiwibG9jayIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInRvRVM2UHJvbWlzZSIsInBhcnNlTmF2aWdhdGlvbiIsImNhdGNoIiwiYUVycm9yRGF0YSIsIndhcm5pbmciLCJ0aGVuIiwiYVJlc3VsdHMiLCJpbml0aWFsIiwib1Jvb3RDb250cm9sbGVyIiwic2hvdWxkQXBwbHlTdGF0ZSIsIl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlIiwiX2dldEluaXRpYWxTdGF0ZUFwcGxpZWQiLCJfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsImFwcGx5Vmlld1N0YXRlIiwiZmluYWxseSIsInVubG9jayIsImNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAiLCJyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgPSBcIlJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEVcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU/OiBBcHBTdGF0ZSA9IHt9O1xuXG5cdHNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG5cblx0Y29uc3RydWN0b3Iob0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9BcHBDb21wb25lbnQgPSBvQXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc0lkID0gYCR7b0FwcENvbXBvbmVudC5nZXRJZCgpfS9BcHBTdGF0ZUhhbmRsZXJgO1xuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9IHt9O1xuXHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSBmYWxzZTtcblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFIDogQXBwc3RhdGUgaGFuZGxlciBpbml0aWFsaXplZFwiKTtcblx0fVxuXG5cdGdldElkKCkge1xuXHRcdHJldHVybiB0aGlzLnNJZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZpZXctc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLCBpZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllciwgSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdID09PSAwICYmIG5ld0hhc2ggIT09IGhhc2gpIHtcblx0XHRcdHJvdXRlclByb3h5Lm5hdlRvSGFzaChuZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdH1cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIEFwcHN0YXRlIEtleS5cblx0ICpcblx0ICogQHBhcmFtIGFwcFN0YXRlRGF0YSBBcHBzdGF0ZVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIsIElkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqIEByZXR1cm5zIEFwcHN0YXRlIEtleVxuXHQgKi9cblx0YXN5bmMgX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YTogSW5uZXJBcHBEYXRhLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50LFxuXHRcdFx0bmF2aWdhdGlvblNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblxuXHRcdGlmICh0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSkge1xuXHRcdFx0Ly8gYW55IG90aGVyIHZhbHVlXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSsrO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAwIG9yIHVuZGVmaW5lZFxuXHRcdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPSAxO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblxuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdLS07XG5cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0cmV0dXJuIGFwcFN0YXRlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYXBwc3RhdGUgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIGlubmVyQXBwU3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQSBCb29sZWFuIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3bHkgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy52aWV3SWQgSWQgb2YgdGhlIHZpZXcgZm9yIHdoaWNoIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBhcHAgc3RhdGUuIFRoaXMgYWxsb3dzIHVzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldy1zcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleXNcblx0ICovXG5cdGFzeW5jIF9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZTogSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkLCBjcmVhdGVBcHBQYXJhbWV0ZXJzPzogQ3JlYXRlQXBwUGFyYW1ldGVycyk6IFByb21pc2U8QXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0Y29uc3QgeyByZXBsYWNlSGFzaCA9IHRydWUsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fTtcblxuXHRcdGxldCBhcHBTdGF0ZUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cdFx0bGV0IGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblxuXHRcdGNvbnN0IGN1cnJlbnRTdGF0ZVRvVXBkYXRlID0gdGhpcy5fZ2V0SW5uZXJBcHBTdGF0ZUZvclZpZXcodGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRpZiAoaW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKGN1cnJlbnRTdGF0ZVRvVXBkYXRlLCBpbm5lckFwcFN0YXRlKSkge1xuXHRcdFx0Ly9cblx0XHRcdHRoaXMuX21DdXJyZW50QXBwU3RhdGUgPSB7IC4uLnRoaXMuX21DdXJyZW50QXBwU3RhdGUsIC4uLihpbm5lckFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB9O1xuXHRcdFx0YXBwU3RhdGVEYXRhID0geyBhcHBTdGF0ZTogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSB9O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YXBwU3RhdGVLZXkgPSBhd2FpdCB0aGlzLl9jcmVhdGVBcHBTdGF0ZUtleShhcHBTdGF0ZURhdGEsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0XHRcdGlmIChyZXBsYWNlSGFzaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdHRoaXMuX2FkZEFwcFN0YXRlSW5IYXNoKGFwcFN0YXRlS2V5LCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0XHRoYXNoID0gcm91dGVyUHJveHkuZ2V0SGFzaCgpO1xuXHRcdFx0YXBwU3RhdGVLZXkgPSByb3V0ZXJQcm94eS5maW5kQXBwU3RhdGVJbkhhc2goaGFzaCkgYXMgc3RyaW5nO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0YXBwU3RhdGVEYXRhLFxuXHRcdFx0YXBwU3RhdGVLZXlcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb3IgdXBkYXRlcyB0aGUgYXBwc3RhdGUuXG5cdCAqIFJlcGxhY2VzIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBhcHBzdGF0ZSBiYXNlZCBvbiByZXBsYWNlSGFzaFxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBhbGxvd3MgdXMgdG8gY3JlYXRlIG9yIHVwZGF0ZSB2aWV3LXNwZWNpZmljIGFwcHN0YXRlLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldykge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Y29uc3Qga2V5VmFsdWUgPSBiaW5kaW5nQ29udGV4dC5nZXRPYmplY3QoKVtlbGVtZW50XTtcblx0XHRcdFx0aWYgKGtleVZhbHVlICE9PSB0ZWNobmljYWxLZXlzT2JqZWN0W2VsZW1lbnRdKSB7XG5cdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZykge1xuXHRcdGxldCBrZXkgPSBcIlwiLFxuXHRcdFx0aSA9IDA7XG5cdFx0Y29uc3QgYXBwU3RhdGVEYXRhID0gbmF2VHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQgPyBvQXBwRGF0YS5pQXBwU3RhdGUgOiBvQXBwRGF0YTtcblxuXHRcdGlmIChhcHBTdGF0ZURhdGE/LmFwcFN0YXRlKSB7XG5cdFx0XHRmb3IgKGk7IGkgPCBPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldID09PSB2aWV3SWQpIHtcblx0XHRcdFx0XHRrZXkgPSBPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChhcHBTdGF0ZURhdGE/LmFwcFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRbT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXV06IGFwcFN0YXRlRGF0YS5hcHBTdGF0ZVtrZXldIHx8IHt9XG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBcHBsaWVzIGFuIGFwcHN0YXRlIGJ5IGZldGNoaW5nIGFwcGRhdGEgYW5kIHBhc3NpbmcgaXQgdG8gX2FwcGx5QXBwc3RhdGVUb1BhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3SWRcblx0ICogQHBhcmFtIHZpZXdcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luYyBoYW5kbGluZ1xuXHQgKi9cblx0YXN5bmMgYXBwbHlBcHBTdGF0ZSh2aWV3SWQ/OiBzdHJpbmcsIHZpZXc/OiBWaWV3KSB7XG5cdFx0aWYgKCF0aGlzLm9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2hlY2tJZkxhc3RTZWVuUmVjb3JkID0gdGhpcy5fY2hlY2tJZkxhc3RTZWVuUmVjb3JkKHZpZXcpO1xuXHRcdGlmIChjaGVja0lmTGFzdFNlZW5SZWNvcmQgPT09IHRydWUpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcyk7XG5cdFx0Ly8gRG9uZSBmb3IgYnVzeSBpbmRpY2F0b3Jcblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXHRcdC8vIFRPRE8gb05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpIHNob3VsZCByZXR1cm4gRVM2IHByb21pc2UgaW5zdGVhZCBqUXVlcnkucHJvbWlzZVxuXHRcdHJldHVybiB0b0VTNlByb21pc2Uob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXHRcdFx0XHRpZiAoIW9Sb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBleHRlbnNpb24gcmVxdWlyZWQgZm9yIGNvbnRyb2xsZXIgJHtvUm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUob0FwcERhdGEsIHNOYXZUeXBlKSkge1xuXHRcdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5fZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpKSB7XG5cdFx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNob3VsZEFwcGx5U3RhdGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBhcHBseVZpZXdTdGF0ZSA9IGF3YWl0IG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIXNob3VsZEFwcGx5U3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcGx5Vmlld1N0YXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiYXBwU3RhdGUgY291bGQgbm90IGJlIGFwcGxpZWRcIiwgb0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdHRocm93IG9FcnJvcjtcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMpO1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUbyBjaGVjayBpcyByb3V0ZSBpcyBjaGFuZ2VkIGJ5IGNoYW5nZSBpbiB0aGUgaUFQUFN0YXRlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdXRlIGhhcyBjaG5hZ2VkXG5cdCAqL1xuXHRjaGVja0lmUm91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdHJldHVybiB0aGlzLmJOb1JvdXRlQ2hhbmdlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICovXG5cdHJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdGlmICh0aGlzLmJOb1JvdXRlQ2hhbmdlKSB7XG5cdFx0XHR0aGlzLmJOb1JvdXRlQ2hhbmdlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBZ0JBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBZ0JsQyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7RUFBQyxJQUd4REMsZUFBZSxXQURwQkMsY0FBYyxDQUFDLDZCQUE2QixDQUFDO0lBQUE7SUFZN0MseUJBQVlDLGFBQTJCLEVBQUU7TUFBQTtNQUN4Qyw4QkFBTztNQUFDLE1BTERDLGlCQUFpQixHQUFjLENBQUMsQ0FBQztNQU14QyxNQUFLRCxhQUFhLEdBQUdBLGFBQWE7TUFDbEMsTUFBS0UsR0FBRyxHQUFJLEdBQUVGLGFBQWEsQ0FBQ0csS0FBSyxFQUFHLGtCQUFpQjtNQUNyRCxNQUFLQyx5QkFBeUIsR0FBRyxDQUFDLENBQUM7TUFDbkMsTUFBS0MsY0FBYyxHQUFHLEtBQUs7TUFDM0JDLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLHlDQUF5QyxDQUFDO01BQUM7SUFDckQ7SUFBQztJQUFBLE9BRURKLEtBQUssR0FBTCxpQkFBUTtNQUNQLE9BQU8sSUFBSSxDQUFDRCxHQUFHO0lBQ2hCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQSxPQU9BTSx3QkFBd0IsR0FBeEIsa0NBQXlCQyxhQUF1QyxFQUFFQyxlQUF1QixFQUE0QjtNQUNwSCxJQUFJQSxlQUFlLEtBQUtiLHlCQUF5QixJQUFJLENBQUNZLGFBQWEsRUFBRTtRQUNwRTtRQUNBLE9BQU9BLGFBQWE7TUFDckI7O01BRUE7TUFDQSxPQUFPO1FBQ04sQ0FBQ0MsZUFBZSxHQUFHRCxhQUFhLENBQUNDLGVBQWUsQ0FBK0IsSUFBSSxDQUFDO01BQ3JGLENBQUM7SUFDRjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBLE9BTUFDLGtCQUFrQixHQUFsQiw0QkFBbUJDLFdBQW1CLEVBQUVGLGVBQXVCLEVBQVE7TUFDdEUsTUFBTUcsWUFBWSxHQUFHLElBQUksQ0FBQ2IsYUFBYTtRQUN0Q2MsaUJBQWlCLEdBQUdELFlBQVksQ0FBQ0Usb0JBQW9CLEVBQUU7UUFDdkRDLFdBQVcsR0FBR0gsWUFBWSxDQUFDSSxjQUFjLEVBQUU7UUFDM0NDLElBQUksR0FBR0YsV0FBVyxDQUFDRyxPQUFPLEVBQUU7UUFDNUJDLFlBQVksR0FBR0MsV0FBVyxDQUFDQyx3QkFBd0IsQ0FBQ1QsWUFBWSxDQUFDVSxZQUFZLEVBQUUsQ0FBQztRQUNoRkMsT0FBTyxHQUFHVixpQkFBaUIsQ0FBQ1csdUJBQXVCLENBQUNULFdBQVcsQ0FBQ0csT0FBTyxFQUFFLEVBQUVQLFdBQVcsQ0FBQztNQUV4RixJQUFJLElBQUksQ0FBQ1IseUJBQXlCLENBQUNNLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSWMsT0FBTyxLQUFLTixJQUFJLEVBQUU7UUFDOUVGLFdBQVcsQ0FBQ1UsU0FBUyxDQUFDRixPQUFPLEVBQUVHLFNBQVMsRUFBRUEsU0FBUyxFQUFFQSxTQUFTLEVBQUUsQ0FBQ1AsWUFBWSxDQUFDO1FBQzlFLElBQUksQ0FBQ2YsY0FBYyxHQUFHLElBQUk7TUFDM0I7TUFDQUMsR0FBRyxDQUFDQyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDaEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBLE9BT01xQixrQkFBa0IsR0FBeEIsa0NBQXlCQyxZQUEwQixFQUFFbkIsZUFBdUIsRUFBbUI7TUFDOUYsTUFBTUcsWUFBWSxHQUFHLElBQUksQ0FBQ2IsYUFBYTtRQUN0Q2MsaUJBQWlCLEdBQUdELFlBQVksQ0FBQ0Usb0JBQW9CLEVBQUU7TUFFeEQsSUFBSSxJQUFJLENBQUNYLHlCQUF5QixDQUFDTSxlQUFlLENBQUMsRUFBRTtRQUNwRDtRQUNBLElBQUksQ0FBQ04seUJBQXlCLENBQUNNLGVBQWUsQ0FBQyxFQUFFO01BQ2xELENBQUMsTUFBTTtRQUNOO1FBQ0EsSUFBSSxDQUFDTix5QkFBeUIsQ0FBQ00sZUFBZSxDQUFDLEdBQUcsQ0FBQztNQUNwRDtNQUVBLE1BQU1FLFdBQVcsR0FBRyxNQUFNRSxpQkFBaUIsQ0FBQ2dCLHVCQUF1QixDQUFDRCxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztNQUU3RixJQUFJLENBQUN6Qix5QkFBeUIsQ0FBQ00sZUFBZSxDQUFDLEVBQUU7TUFFakRKLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDO01BQ3JDLE9BQU9LLFdBQVc7SUFDbkI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUkM7SUFBQSxPQVNNbUIsZ0JBQWdCLEdBQXRCLGdDQUF1QnRCLGFBQXVDLEVBQUV1QixtQkFBeUMsRUFBd0I7TUFDaEksTUFBTW5CLFlBQVksR0FBRyxJQUFJLENBQUNiLGFBQWE7TUFDdkMsTUFBTTtRQUFFaUMsV0FBVyxHQUFHLElBQUk7UUFBRUMsTUFBTSxFQUFFeEIsZUFBZSxHQUFHYjtNQUEwQixDQUFDLEdBQUdtQyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7TUFFN0csSUFBSXBCLFdBQTBCLEdBQUcsSUFBSTtNQUNyQyxJQUFJaUIsWUFBWSxHQUFHO1FBQUVNLFFBQVEsRUFBRSxJQUFJLENBQUNsQztNQUFrQixDQUFDO01BRXZELE1BQU1tQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM1Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUNQLGlCQUFpQixFQUFFUyxlQUFlLENBQUM7TUFDbkcsSUFBSUQsYUFBYSxJQUFJLENBQUM0QixTQUFTLENBQUNELG9CQUFvQixFQUFFM0IsYUFBYSxDQUFDLEVBQUU7UUFDckU7UUFDQSxJQUFJLENBQUNSLGlCQUFpQixHQUFHO1VBQUUsR0FBRyxJQUFJLENBQUNBLGlCQUFpQjtVQUFFLEdBQUlRO1FBQTBDLENBQUM7UUFDckdvQixZQUFZLEdBQUc7VUFBRU0sUUFBUSxFQUFFLElBQUksQ0FBQ2xDO1FBQWtCLENBQUM7UUFDbkQsSUFBSTtVQUNIVyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUNnQixrQkFBa0IsQ0FBQ0MsWUFBWSxFQUFFbkIsZUFBZSxDQUFDO1VBQzFFLElBQUl1QixXQUFXLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQ3RCLGtCQUFrQixDQUFDQyxXQUFXLEVBQUVGLGVBQWUsQ0FBQztVQUN0RDtRQUNELENBQUMsQ0FBQyxPQUFPNEIsTUFBZSxFQUFFO1VBQ3pCaEMsR0FBRyxDQUFDaUMsS0FBSyxDQUFDRCxNQUFNLENBQVc7UUFDNUI7TUFDRCxDQUFDLE1BQU07UUFDTixNQUFNdEIsV0FBVyxHQUFHSCxZQUFZLENBQUNJLGNBQWMsRUFBRTtVQUNoREMsSUFBSSxHQUFHRixXQUFXLENBQUNHLE9BQU8sRUFBRTtRQUM3QlAsV0FBVyxHQUFHSSxXQUFXLENBQUN3QixrQkFBa0IsQ0FBQ3RCLElBQUksQ0FBVztNQUM3RDtNQUNBLE9BQU87UUFDTlcsWUFBWTtRQUNaakI7TUFDRCxDQUFDO0lBQ0Y7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FUQztJQUFBLE9BVU02QixjQUFjLEdBQXBCLDhCQUFxQlQsbUJBQXlDLEVBQStCO01BQzVGLE1BQU1uQixZQUFZLEdBQUcsSUFBSSxDQUFDYixhQUFhO01BQ3ZDLElBQUksQ0FBQ2EsWUFBWSxDQUFDNkIsMEJBQTBCLEVBQUUsQ0FBQ0MsZUFBZSxFQUFFLENBQUNDLFFBQVEsSUFBSUMsVUFBVSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdkc7TUFDRDtNQUNBLE1BQU07VUFBRUMsU0FBUyxHQUFHLEtBQUs7VUFBRWIsTUFBTSxFQUFFeEIsZUFBZSxHQUFHYjtRQUEwQixDQUFDLEdBQUdtQyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7UUFDM0dnQixjQUFjLEdBQUduQyxZQUFZLENBQUNvQyxjQUFjLEVBQUUsQ0FBQ0MsYUFBYSxFQUFFO01BRS9ELElBQUksQ0FBQ0YsY0FBYyxDQUFDRyxTQUFTLEVBQUU7UUFDOUIsTUFBTSxJQUFJQyxLQUFLLENBQUUsZ0VBQStESixjQUFjLENBQUNLLFdBQVcsRUFBRSxDQUFDQyxPQUFPLEVBQUcsRUFBQyxDQUFDO01BQzFIOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0EsTUFBTU4sY0FBYyxDQUFDTyxpQkFBaUIsRUFBRTs7TUFFeEM7TUFDQSxJQUFJOUMsYUFBYSxHQUFJLE1BQU11QyxjQUFjLENBQUNHLFNBQVMsQ0FBQ0ssaUJBQWlCLEVBQStCO01BQ3BHL0MsYUFBYSxHQUFHLElBQUksQ0FBQ0Qsd0JBQXdCLENBQUNDLGFBQWEsRUFBRUMsZUFBZSxDQUFDO01BQzdFLElBQUlxQyxTQUFTLEVBQUU7UUFDZHRDLGFBQWEsR0FBRztVQUFFLEdBQUdBLGFBQWE7VUFBRSxHQUFHO1lBQUVzQztVQUFVO1FBQUUsQ0FBQztNQUN2RDtNQUVBLE9BQU8sSUFBSSxDQUFDaEIsZ0JBQWdCLENBQUN0QixhQUFhLEVBQUV1QixtQkFBbUIsQ0FBQztJQUNqRSxDQUFDO0lBQUEsT0FFRHlCLDJCQUEyQixHQUEzQixxQ0FBNEJDLFFBQWlCLEVBQUVDLFFBQWdCLEVBQXVCO01BQ3JGLE9BQU9DLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFSCxRQUFRLEVBQUU7UUFDbENJLHdCQUF3QixFQUFFSixRQUFRLENBQUNLLDBCQUEwQjtRQUM3REMsZ0JBQWdCLEVBQUVOLFFBQVEsQ0FBQ08saUJBQWlCO1FBQzVDQyx1QkFBdUIsRUFBRSxDQUFDUixRQUFRLENBQUNTLHlCQUF5QjtRQUM1REMsY0FBYyxFQUFFVDtNQUNqQixDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUEsT0FFRFUsc0JBQXNCLEdBQXRCLGdDQUF1QkMsSUFBVyxFQUFFO01BQ25DO01BQ0EsTUFBTUMsb0JBQW9CLEdBQUdELElBQUksSUFBS0EsSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxVQUFVLENBQTBCO01BQ2pHLElBQUlELG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0UsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3pGLE1BQU1DLG1CQUFtQixHQUFHSCxvQkFBb0IsQ0FBQ0UsV0FBVyxDQUFDLCtCQUErQixDQUFDO1FBQzdGLE1BQU1FLGNBQWMsR0FBR0wsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVFLGlCQUFpQixFQUFhO1FBQzNELE1BQU1JLElBQUksR0FBSUQsY0FBYyxJQUFJQSxjQUFjLENBQUNFLE9BQU8sRUFBRSxJQUFLLEVBQUU7UUFDL0QsTUFBTUMsU0FBUyxHQUFHSCxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRUksUUFBUSxFQUFFLENBQUN4RCxZQUFZLEVBQUU7UUFDM0QsTUFBTXlELFFBQVEsR0FBR0YsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVHLFdBQVcsQ0FBQ0wsSUFBSSxDQUFDO1FBQzdDLE1BQU1NLGFBQWEsR0FBR0osU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVLLFNBQVMsQ0FBRSxHQUFFSCxRQUFTLGFBQVksQ0FBQztRQUNwRSxLQUFLLE1BQU1JLE9BQU8sSUFBSUYsYUFBYSxFQUFFO1VBQ3BDLE1BQU1HLFFBQVEsR0FBR1YsY0FBYyxDQUFDUSxTQUFTLEVBQUUsQ0FBQ0MsT0FBTyxDQUFDO1VBQ3BELElBQUlDLFFBQVEsS0FBS1gsbUJBQW1CLENBQUNVLE9BQU8sQ0FBQyxFQUFFO1lBQzlDYixvQkFBb0IsQ0FBQ2UsV0FBVyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQztZQUMxRCxPQUFPLElBQUk7VUFDWjtRQUNEO1FBQ0E7TUFDRDs7TUFDQSxPQUFPLEtBQUs7SUFDYixDQUFDO0lBQUEsT0FFREMsZ0JBQWdCLEdBQWhCLDBCQUFpQjdCLFFBQWlCLEVBQUV4QixNQUFlLEVBQUVzRCxPQUFnQixFQUFFO01BQ3RFLElBQUlDLEdBQUcsR0FBRyxFQUFFO1FBQ1hDLENBQUMsR0FBRyxDQUFDO01BQ04sTUFBTTdELFlBQVksR0FBRzJELE9BQU8sS0FBSzlGLE9BQU8sQ0FBQ2lHLE1BQU0sR0FBR2pDLFFBQVEsQ0FBQ2tDLFNBQVMsR0FBR2xDLFFBQVE7TUFFL0UsSUFBSTdCLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUVNLFFBQVEsRUFBRTtRQUMzQixLQUFLdUQsQ0FBQyxFQUFFQSxDQUFDLEdBQUc5QixNQUFNLENBQUNpQyxJQUFJLENBQUNoRSxZQUFZLENBQUNNLFFBQVEsQ0FBQyxDQUFDMkQsTUFBTSxFQUFFSixDQUFDLEVBQUUsRUFBRTtVQUMzRCxJQUFJOUIsTUFBTSxDQUFDaUMsSUFBSSxDQUFDaEUsWUFBWSxDQUFDTSxRQUFRLENBQUMsQ0FBQ3VELENBQUMsQ0FBQyxLQUFLeEQsTUFBTSxFQUFFO1lBQ3JEdUQsR0FBRyxHQUFHN0IsTUFBTSxDQUFDaUMsSUFBSSxDQUFDaEUsWUFBWSxDQUFDTSxRQUFRLENBQUMsQ0FBQ3VELENBQUMsQ0FBQztZQUMzQztVQUNEO1FBQ0Q7TUFDRDtNQUNBLElBQUk3RCxZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFTSxRQUFRLEVBQUU7UUFDM0IsT0FBTztVQUNOLENBQUN5QixNQUFNLENBQUNpQyxJQUFJLENBQUNoRSxZQUFZLENBQUNNLFFBQVEsQ0FBQyxDQUFDdUQsQ0FBQyxDQUFDLEdBQUc3RCxZQUFZLENBQUNNLFFBQVEsQ0FBQ3NELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDekUsQ0FBQztNQUNGO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBLE9BT01NLGFBQWEsR0FBbkIsNkJBQW9CN0QsTUFBZSxFQUFFb0MsSUFBVyxFQUFFO01BQ2pELElBQUksQ0FBQyxJQUFJLENBQUN0RSxhQUFhLENBQUMwQywwQkFBMEIsRUFBRSxDQUFDQyxlQUFlLEVBQUUsQ0FBQ0MsUUFBUSxJQUFJQyxVQUFVLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM3RyxPQUFPa0QsT0FBTyxDQUFDQyxPQUFPLEVBQUU7TUFDekI7TUFFQSxNQUFNQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM3QixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDO01BQy9ELElBQUk0QixxQkFBcUIsS0FBSyxJQUFJLEVBQUU7UUFDbkMsT0FBT0YsT0FBTyxDQUFDQyxPQUFPLEVBQUU7TUFDekI7TUFFQXBELFVBQVUsQ0FBQ3NELElBQUksQ0FBQyxJQUFJLENBQUM7TUFDckI7TUFDQXRELFVBQVUsQ0FBQ3NELElBQUksQ0FBQyxJQUFJLENBQUNuRyxhQUFhLENBQUNpRCxjQUFjLEVBQUUsQ0FBQztNQUNwRCxNQUFNbUQsa0JBQWtCLEdBQUcsSUFBSSxDQUFDcEcsYUFBYSxDQUFDZSxvQkFBb0IsRUFBRTtNQUNwRTtNQUNBLE9BQU9zRixZQUFZLENBQUNELGtCQUFrQixDQUFDRSxlQUFlLEVBQUUsQ0FBQyxDQUN2REMsS0FBSyxDQUFDLFVBQVVDLFVBQXFCLEVBQUU7UUFDdkMsSUFBSSxDQUFDQSxVQUFVLEVBQUU7VUFDaEJBLFVBQVUsR0FBRyxFQUFFO1FBQ2hCO1FBQ0FsRyxHQUFHLENBQUNtRyxPQUFPLENBQUMsbUNBQW1DLEVBQUVELFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBVztRQUN6RSxPQUFPLENBQ047VUFDQztRQUFBLENBQ0EsRUFDREEsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUNiQSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ2I7TUFDRixDQUFDLENBQUMsQ0FDREUsSUFBSSxDQUFDLE1BQU9DLFFBQW1CLElBQUs7UUFBQTtRQUNwQ3JHLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLGlDQUFpQyxDQUFDOztRQUUzQztRQUNBLE1BQU1tRCxRQUFRLEdBQUlpRCxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFhO1VBQzlDaEQsUUFBUSxHQUFJZ0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFlakgsT0FBTyxDQUFDa0gsT0FBTztVQUNyREMsZUFBZSxHQUFHLElBQUksQ0FBQzdHLGFBQWEsQ0FBQ2lELGNBQWMsRUFBRSxDQUFDQyxhQUFhLEVBQUU7UUFDdEU7UUFDQSxNQUFNckIsWUFBWSxHQUFHLElBQUksQ0FBQzBELGdCQUFnQixDQUFDN0IsUUFBUSxFQUFFeEIsTUFBTSxFQUFFeUIsUUFBUSxDQUFDO1FBQ3RFO1FBQ0EsTUFBTVosU0FBOEIsR0FBR1csUUFBUSxhQUFSQSxRQUFRLDZDQUFSQSxRQUFRLENBQUV2QixRQUFRLHVEQUFsQixtQkFBcUJ2QyxjQUFjLENBQUM7UUFDM0UsSUFBSSxDQUFDSyxpQkFBaUIsR0FDckIwRCxRQUFRLEtBQUtqRSxPQUFPLENBQUNrRyxTQUFTLElBQUlqQyxRQUFRLEtBQUtqRSxPQUFPLENBQUNpRyxNQUFNLEdBQUc7VUFBRSxHQUFHLElBQUksQ0FBQzFGLGlCQUFpQjtVQUFFLEdBQUc0QjtRQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEgsSUFBSWlGLGdCQUFnQixHQUFHLElBQUk7UUFDM0IsSUFBSSxDQUFDRCxlQUFlLENBQUMxRCxTQUFTLEVBQUU7VUFDL0IsTUFBTSxJQUFJQyxLQUFLLENBQUUsK0NBQThDeUQsZUFBZSxDQUFDeEQsV0FBVyxFQUFFLENBQUNDLE9BQU8sRUFBRyxFQUFDLENBQUM7UUFDMUc7UUFDQSxJQUFJdUQsZUFBZSxDQUFDMUQsU0FBUyxDQUFDNEQsZ0NBQWdDLENBQUNyRCxRQUFRLEVBQUVDLFFBQVEsQ0FBQyxFQUFFO1VBQ25GLElBQUksQ0FBQ2tELGVBQWUsQ0FBQzFELFNBQVMsQ0FBQzZELHVCQUF1QixFQUFFLEVBQUU7WUFDekRILGVBQWUsQ0FBQzFELFNBQVMsQ0FBQzhELHVCQUF1QixFQUFFO1VBQ3BEO1VBQ0FILGdCQUFnQixHQUFHLEtBQUs7UUFDekI7UUFDQSxNQUFNSSxjQUFjLEdBQUcsTUFBTUwsZUFBZSxDQUFDMUQsU0FBUyxDQUFDK0QsY0FBYyxDQUNwRSxJQUFJLENBQUNqSCxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDd0QsMkJBQTJCLENBQUNDLFFBQVEsRUFBRUMsUUFBUSxDQUFDLEVBQ3BEWixTQUFTLENBQ1Q7UUFDRCxJQUFJLENBQUMrRCxnQkFBZ0IsRUFBRTtVQUN0QixPQUFPLENBQUMsQ0FBQztRQUNWLENBQUMsTUFBTTtVQUNOLE9BQU9JLGNBQWM7UUFDdEI7TUFDRCxDQUFDLENBQUMsQ0FDRFgsS0FBSyxDQUFDLFVBQVVqRSxNQUFlLEVBQUU7UUFDakNoQyxHQUFHLENBQUNpQyxLQUFLLENBQUMsK0JBQStCLEVBQUVELE1BQU0sQ0FBVztRQUM1RCxNQUFNQSxNQUFNO01BQ2IsQ0FBQyxDQUFDLENBQ0Q2RSxPQUFPLENBQUMsTUFBTTtRQUNkdEUsVUFBVSxDQUFDdUUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN2QnZFLFVBQVUsQ0FBQ3VFLE1BQU0sQ0FBQyxJQUFJLENBQUNwSCxhQUFhLENBQUNpRCxjQUFjLEVBQUUsQ0FBQztNQUN2RCxDQUFDLENBQUM7SUFDSjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQSxPQUtBb0UseUJBQXlCLEdBQXpCLHFDQUE0QjtNQUMzQixPQUFPLElBQUksQ0FBQ2hILGNBQWM7SUFDM0I7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQSxPQUdBaUgsdUJBQXVCLEdBQXZCLG1DQUEwQjtNQUN6QixJQUFJLElBQUksQ0FBQ2pILGNBQWMsRUFBRTtRQUN4QixJQUFJLENBQUNBLGNBQWMsR0FBRyxLQUFLO01BQzVCO0lBQ0QsQ0FBQztJQUFBO0VBQUEsRUE1VDRCa0gsVUFBVTtFQStUeEM7QUFDQTtBQUNBO0VBRkEsT0FHZXpILGVBQWU7QUFBQSJ9
|
|
@@ -102,7 +102,7 @@ class AppStateHandler extends BaseObject {
|
|
|
102
102
|
routerProxy = appComponent.getRouterProxy(),
|
|
103
103
|
hash = routerProxy.getHash(),
|
|
104
104
|
isStickyMode = ModelHelper.isStickySessionSupported(appComponent.getMetaModel()),
|
|
105
|
-
newHash = navigationService.replaceInnerAppStateKey(routerProxy.
|
|
105
|
+
newHash = navigationService.replaceInnerAppStateKey(routerProxy.getHash(), appStateKey);
|
|
106
106
|
|
|
107
107
|
if (this.simultaneousCreateRequest[stateIdentifier] === 0 && newHash !== hash) {
|
|
108
108
|
routerProxy.navToHash(newHash, undefined, undefined, undefined, !isStickyMode);
|