diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-04-10 13:24:40 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-05-16 09:50:21 +0200 |
commit | 8bca1558c3d4056c1bfcb746516f9394fc93f09f (patch) | |
tree | c36aa5ab51c514159c2b5a4efc4b05f4281f0ea2 | |
parent | 82e1f182c826b3a586cef59e9a4e90e1a4b9eb1f (diff) | |
download | nextcloud-server-8bca1558c3d4056c1bfcb746516f9394fc93f09f.tar.gz nextcloud-server-8bca1558c3d4056c1bfcb746516f9394fc93f09f.zip |
Settings users list new user language
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | settings/js/main.js | 8 | ||||
-rw-r--r-- | settings/src/components/userList.vue | 39 | ||||
-rw-r--r-- | settings/src/components/userList/userRow.vue | 16 | ||||
-rw-r--r-- | settings/src/store/users.js | 10 | ||||
-rw-r--r-- | settings/users.php | 1 |
5 files changed, 44 insertions, 30 deletions
diff --git a/settings/js/main.js b/settings/js/main.js index 93a4f1aa32c..4a8c0f05bf3 100644 --- a/settings/js/main.js +++ b/settings/js/main.js @@ -162,14 +162,14 @@ eval("function validate(binding) {\r\n if (typeof binding.value !== 'function') /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__userList_userRow__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_multiselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userList',\n\tprops: ['users', 'showConfig'],\n\tcomponents: {\n\t\tuserRow: __WEBPACK_IMPORTED_MODULE_0__userList_userRow__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default.a,\n\t\tInfiniteLoading: __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default.a\n\t},\n\tdata: function data() {\n\t\tvar unlimitedQuota = { id: 'none', label: t('settings', 'Unlimited') },\n\t\t defaultQuota = { id: 'default', label: t('settings', 'Default quota') };\n\t\treturn {\n\t\t\tunlimitedQuota: unlimitedQuota,\n\t\t\tdefaultQuota: defaultQuota,\n\t\t\tloading: false,\n\t\t\tscrolled: false,\n\t\t\tnewUser: {\n\t\t\t\tid: '',\n\t\t\t\tdisplayName: '',\n\t\t\t\tpassword: '',\n\t\t\t\tmailAddress: '',\n\t\t\t\tgroups: [],\n\t\t\t\tsubAdminsGroups: [],\n\t\t\t\tquota: defaultQuota\n\t\t\t}\n\t\t};\n\t},\n\tmounted: function mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsettings: function settings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers: function filteredUsers() {\n\t\t\tif (this.$route.hash === '#group_disabled') {\n\t\t\t\tvar disabledUsers = this.users.filter(function (user) {\n\t\t\t\t\treturn user.enabled !== true;\n\t\t\t\t});\n\t\t\t\tif (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\twindow.location.hash = '#group_everyone';\n\t\t\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\treturn this.users.filter(function (user) {\n\t\t\t\treturn user.enabled === true;\n\t\t\t});\n\t\t},\n\t\tgroups: function groups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups.filter(function (group) {\n\t\t\t\treturn group.id !== '_disabled';\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups: function subAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getServerData.subadmingroups;\n\t\t},\n\t\tquotaOptions: function quotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tvar quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n\t\t\t\treturn acc.concat({ id: cur, label: cur });\n\t\t\t}, []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// get selected hash\n\t\tselectedGroup: function selectedGroup() {\n\t\t\tvar hash = this.$route.hash;\n\t\t\tif (typeof hash === 'string' && hash.length > 0) {\n\t\t\t\t// we have a valid hash: groupXXXX\n\t\t\t\t// group_XXXX are reserved groups\n\t\t\t\tvar split = hash.split('group');\n\t\t\t\tif (split.length === 2 && split[1].charAt(0) !== '_') {\n\t\t\t\t\treturn hash.split('group')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function selectedGroup(val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll: function onScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTop > 0;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Object}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota > 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = { id: quota, label: quota };\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\t\tinfiniteHandler: function infiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', { offset: this.usersOffset, limit: this.usersLimit, group: this.selectedGroup }).then(function (response) {\n\t\t\t\tresponse ? $state.loaded() : $state.complete();\n\t\t\t});\n\t\t},\n\t\tresetForm: function resetForm() {\n\t\t\t// revert form to original state\n\t\t\tObject.assign(this.newUser, this.$options.data.call(this).newUser);\n\t\t\tthis.loading = false;\n\t\t},\n\t\tcreateUser: function createUser() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.loading = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tquota: this.newUser.quota.id\n\t\t\t}).then(function () {\n\t\t\t\treturn _this.resetForm();\n\t\t\t});\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlP2JjNTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUdBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBO2tCQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUpBO3VCQUtBOzBEQUNBOzJEQUNBOzttQkFFQTtpQkFDQTtZQUNBO2FBQ0E7O1FBRUE7aUJBQ0E7Y0FDQTtpQkFDQTtZQUNBO3FCQUNBO1dBR0E7QUFUQTtBQUxBO0FBZUE7NkJBQ0E7d0NBQ0E7K0NBQ0E7QUFDQTtBQUNBOzs7Z0NBRUE7OEJBQ0E7QUFDQTswQ0FDQTsrQ0FDQTs7NkJBQ0E7OzJHQUNBO0FBQ0E7NEJBQ0E7c0NBQ0E7QUFDQTtXQUNBO0FBQ0E7OzRCQUNBOztBQUNBOzRCQUNBO0FBQ0E7O3dCQUNBOztBQUNBOzhDQUNBO0FBQ0E7NENBQ0E7QUFDQTt3Q0FDQTtBQUNBOzs7TUFDQTtBQUNBOzRCQUNBOzRCQUNBO1VBQ0E7QUFDQTtrREFDQTs4QkFDQTtBQUNBO3NDQUNBOzhCQUNBO0FBQ0E7b0NBQ0E7OEJBQ0E7QUFDQTs7QUFDQTswQ0FDQTswQkFDQTtvREFDQTtBQUNBO0FBQ0E7MkJBQ0E7MERBQ0E7Z0NBQ0E7QUFDQTtBQUNBO1VBQ0E7QUFFQTtBQXREQTs7QUF3REE7a0RBQ0E7c0JBQ0E7b0NBQ0E7QUFFQTtBQU5BOztxQ0FRQTs0Q0FDQTtBQUVBOzs7QUFNQTs7Ozs7OytDQUNBO0FBQ0E7NkNBQ0E7OENBQ0E7QUFDQTsyREFDQTtvREFDQTtBQUNBO0FBQ0E7aURBQ0E7QUFFQTtvREFDQTtvR0FDQTs7QUFDQTtBQUVBO2tDQUNBO0FBQ0E7NkRBQ0E7a0JBQ0E7QUFDQTs7QUFDQTs7a0JBQ0E7O3lCQUVBOzJCQUNBO3dCQUNBOztrQkFDQTs7O2tCQUNBOzs4QkFDQTtBQU5BO2lCQU9BOztBQUVBO0FBNUNBO0FBOUZBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGlkPVwiYXBwLWNvbnRlbnRcIiBjbGFzcz1cInVzZXItbGlzdC1ncmlkXCIgdi1vbjpzY3JvbGwucGFzc2l2ZT1cIm9uU2Nyb2xsXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiIGlkPVwiZ3JpZC1oZWFkZXJcIiA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmICFzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybX1cIj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBdmF0YXJcIiBjbGFzcz1cImF2YXRhclwiPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD1cImhlYWRlck5hbWVcIiBjbGFzcz1cIm5hbWVcIj57eyB0KCdzZXR0aW5ncycsICdVc2VybmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyRGlzcGxheU5hbWVcIiBjbGFzcz1cImRpc3BsYXlOYW1lXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ0Z1bGwgbmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyUGFzc3dvcmRcIiBjbGFzcz1cInBhc3N3b3JkXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ1Bhc3N3b3JkJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBZGRyZXNzXCIgY2xhc3M9XCJtYWlsQWRkcmVzc1wiPnt7IHQoJ3NldHRpbmdzJywgICdFbWFpbCcpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyR3JvdXBzXCIgY2xhc3M9XCJncm91cHNcIj57eyB0KCdzZXR0aW5ncycsICAnR3JvdXBzJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJTdWJBZG1pbnNcIiBjbGFzcz1cInN1YmFkbWluc1wiXG5cdFx0XHRcdCB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCI+e3sgdCgnc2V0dGluZ3MnLCAnR3JvdXAgYWRtaW4gZm9yJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJRdW90YVwiIGNsYXNzPVwicXVvdGFcIj57eyB0KCdzZXR0aW5ncycsICdRdW90YScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyTGFuZ3VhZ2VzXCIgY2xhc3M9XCJsYW5ndWFnZXNcIlxuXHRcdFx0XHQgdi1pZj1cInNob3dDb25maWcuc2hvd0xhbmd1YWdlc1wiPnt7IHQoJ3NldHRpbmdzJywgJ0xhbmd1YWdlcycpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj57eyB0KCdzZXR0aW5ncycsICdTdG9yYWdlIGxvY2F0aW9uJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcIj57eyB0KCdzZXR0aW5ncycsICdVc2VyIGJhY2tlbmQnKSB9fTwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiBcblx0XHRcdFx0IHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj57eyB0KCdzZXR0aW5ncycsICdMYXN0IGxvZ2luJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPjwvZGl2PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGZvcm0gY2xhc3M9XCJyb3dcIiBpZD1cIm5ldy11c2VyXCIgdi1zaG93PVwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiY3JlYXRlVXNlclwiIDpkaXNhYmxlZD1cImxvYWRpbmdcIlxuXHRcdFx0ICA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmIHNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtfVwiPlxuXHRcdFx0PGRpdiA6Y2xhc3M9XCJsb2FkaW5nPydpY29uLWxvYWRpbmctc21hbGwnOidpY29uLWFkZCdcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJuYW1lXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCB2LW1vZGVsPVwibmV3VXNlci5pZFwiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnVXNlciBuYW1lJylcIiBuYW1lPVwidXNlcm5hbWVcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICBwYXR0ZXJuPVwiW2EtekEtWjAtOSBfXFwuQFxcLSddK1wiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZGlzcGxheU5hbWVcIj5cblx0XHRcdFx0PGlucHV0IGlkPVwibmV3ZGlzcGxheW5hbWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJuZXdVc2VyLmRpc3BsYXlOYW1lXCJcblx0XHRcdFx0XHQgICA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdEaXNwbGF5IG5hbWUnKVwiIG5hbWU9XCJkaXNwbGF5bmFtZVwiXG5cdFx0XHRcdFx0ICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhc3N3b3JkXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIHYtbW9kZWw9XCJuZXdVc2VyLnBhc3N3b3JkXCJcblx0XHRcdFx0XHQgICA6cmVxdWlyZWQ9XCJuZXdVc2VyLm1haWxBZGRyZXNzPT09JydcIlxuXHRcdFx0XHRcdCAgIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1Bhc3N3b3JkJylcIiBuYW1lPVwicGFzc3dvcmRcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1haWxBZGRyZXNzXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld2VtYWlsXCIgdHlwZT1cImVtYWlsXCIgdi1tb2RlbD1cIm5ld1VzZXIubWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdCAgIDpyZXF1aXJlZD1cIm5ld1VzZXIucGFzc3dvcmQ9PT0nJ1wiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTWFpbCBhZGRyZXNzJylcIiBuYW1lPVwiZW1haWxcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCI+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwiZ3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuZ3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ0FkZCB1c2VyIGluIGdyb3VwJylcIlxuXHRcdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2Utb24tc2VsZWN0PVwiZmFsc2VcIj5cblx0XHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwic3ViQWRtaW5zR3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOmNsb3NlLW9uLXNlbGVjdD1cImZhbHNlXCI+XG5cdFx0XHRcdFx0PHNwYW4gc2xvdD1cIm5vUmVzdWx0XCI+e3t0KCdzZXR0aW5ncycsJ05vIHJlc3VsdCcpfX08L3NwYW4+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgdi1tb2RlbD1cIm5ld1VzZXIucXVvdGFcIlxuXHRcdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHRcdCBsYWJlbD1cImxhYmVsXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiID5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhbmd1YWdlc1wiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYW5ndWFnZXNcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzdG9yYWdlTG9jYXRpb25cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQmFja2VuZFwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhc3RMb2dpblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGlkPVwibmV3c3VibWl0XCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBpY29uLWNoZWNrbWFyay13aGl0ZSBoYXMtdG9vbHRpcFwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdBZGQgYSBuZXcgdXNlcicpXCI+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwicmVzZXRcIiBpZD1cIm5ld3Jlc2V0XCIgY2xhc3M9XCJidXR0b24gaWNvbi1jbG9zZSBoYXMtdG9vbHRpcFwiIEBjbGljaz1cInJlc2V0Rm9ybVwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdDYW5jZWwgYW5kIHJlc2V0IHRoZSBmb3JtJylcIj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZm9ybT5cblxuXHRcdDx1c2VyLXJvdyB2LWZvcj1cIih1c2VyLCBrZXkpIGluIGZpbHRlcmVkVXNlcnNcIiA6dXNlcj1cInVzZXJcIiA6a2V5PVwia2V5XCIgOnNldHRpbmdzPVwic2V0dGluZ3NcIiA6c2hvd0NvbmZpZz1cInNob3dDb25maWdcIlxuXHRcdFx0XHQgIDpncm91cHM9XCJncm91cHNcIiA6c3ViQWRtaW5zR3JvdXBzPVwic3ViQWRtaW5zR3JvdXBzXCIgOnF1b3RhT3B0aW9ucz1cInF1b3RhT3B0aW9uc1wiIC8+XG5cdFx0PGluZmluaXRlLWxvYWRpbmcgQGluZmluaXRlPVwiaW5maW5pdGVIYW5kbGVyXCIgcmVmPVwiaW5maW5pdGVMb2FkaW5nXCI+XG5cdFx0XHQ8ZGl2IHNsb3Q9XCJzcGlubmVyXCI+PGRpdiBjbGFzcz1cInVzZXJzLWljb24tbG9hZGluZyBpY29uLWxvYWRpbmdcIj48L2Rpdj48L2Rpdj5cblx0XHRcdDxkaXYgc2xvdD1cIm5vLW1vcmVcIj48ZGl2IGNsYXNzPVwidXNlcnMtbGlzdC1lbmRcIj7igJQge3t0KCdzZXR0aW5ncycsICdubyBtb3JlIHJlc3VsdHMnKX19IOKAlDwvZGl2PjwvZGl2PlxuXHRcdFx0PGRpdiBzbG90PVwibm8tcmVzdWx0c1wiPlxuXHRcdFx0XHQ8ZGl2IGlkPVwiZW1wdHljb250ZW50XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImljb24tY29udGFjdHMtZGFya1wiPjwvZGl2PlxuXHRcdFx0XHRcdDxoMj57e3QoJ3NldHRpbmdzJywgJ05vIHVzZXJzIGluIGhlcmUnKX19PC9oMj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2luZmluaXRlLWxvYWRpbmc+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCB1c2VyUm93IGZyb20gJy4vdXNlckxpc3QvdXNlclJvdyc7XG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAndnVlLW11bHRpc2VsZWN0JztcbmltcG9ydCBJbmZpbml0ZUxvYWRpbmcgZnJvbSAndnVlLWluZmluaXRlLWxvYWRpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICd1c2VyTGlzdCcsXG5cdHByb3BzOiBbJ3VzZXJzJywgJ3Nob3dDb25maWcnXSxcblx0Y29tcG9uZW50czoge1xuXHRcdHVzZXJSb3csXG5cdFx0TXVsdGlzZWxlY3QsXG5cdFx0SW5maW5pdGVMb2FkaW5nXG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0bGV0IHVubGltaXRlZFF1b3RhID0ge2lkOidub25lJywgbGFiZWw6dCgnc2V0dGluZ3MnLCAnVW5saW1pdGVkJyl9LFxuXHRcdFx0ZGVmYXVsdFF1b3RhID0ge2lkOidkZWZhdWx0JywgbGFiZWw6dCgnc2V0dGluZ3MnLCAnRGVmYXVsdCBxdW90YScpfTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dW5saW1pdGVkUXVvdGE6IHVubGltaXRlZFF1b3RhLFxuXHRcdFx0ZGVmYXVsdFF1b3RhOiBkZWZhdWx0UXVvdGEsXG5cdFx0XHRsb2FkaW5nOiBmYWxzZSxcblx0XHRcdHNjcm9sbGVkOiBmYWxzZSxcblx0XHRcdG5ld1VzZXI6IHtcblx0XHRcdFx0aWQ6JycsXG5cdFx0XHRcdGRpc3BsYXlOYW1lOicnLFxuXHRcdFx0XHRwYXNzd29yZDonJyxcblx0XHRcdFx0bWFpbEFkZHJlc3M6JycsXG5cdFx0XHRcdGdyb3VwczogW10sXG5cdFx0XHRcdHN1YkFkbWluc0dyb3VwczogW10sXG5cdFx0XHRcdHF1b3RhOiBkZWZhdWx0UXVvdGFcblx0XHRcdH1cblx0XHR9O1xuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5jYW5DaGFuZ2VQYXNzd29yZCkge1xuXHRcdFx0T0MuTm90aWZpY2F0aW9uLnNob3dUZW1wb3JhcnkodCgnc2V0dGluZ3MnLCdQYXNzd29yZCBjaGFuZ2UgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgbWFzdGVyIGtleSBpcyBkaXNhYmxlZCcpKTtcblx0XHR9XG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0c2V0dGluZ3MoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhO1xuXHRcdH0sXG5cdFx0ZmlsdGVyZWRVc2VycygpIHtcblx0XHRcdGlmICh0aGlzLiRyb3V0ZS5oYXNoID09PSAnI2dyb3VwX2Rpc2FibGVkJykge1xuXHRcdFx0XHRsZXQgZGlzYWJsZWRVc2VycyA9IHRoaXMudXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5lbmFibGVkICE9PSB0cnVlKTtcblx0XHRcdFx0aWYgKGRpc2FibGVkVXNlcnMubGVuZ3RoPT09MCAmJiB0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZyAmJiB0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZy5pc0NvbXBsZXRlKSB7XG5cdFx0XHRcdFx0Ly8gZGlzYWJsZWQgZ3JvdXAgaXMgZW1wdHksIHJlZGlyZWN0aW9uIHRvIGFsbCB1c2Vyc1xuXHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyNncm91cF9ldmVyeW9uZSc7XG5cdFx0XHRcdFx0dGhpcy4kcmVmcy5pbmZpbml0ZUxvYWRpbmcuJGVtaXQoJyRJbmZpbml0ZUxvYWRpbmc6cmVzZXQnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZGlzYWJsZWRVc2Vycztcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIuZW5hYmxlZCA9PT0gdHJ1ZSk7XG5cdFx0fSxcblx0XHRncm91cHMoKSB7XG5cdFx0XHQvLyBkYXRhIHByb3ZpZGVkIHBocCBzaWRlICsgcmVtb3ZlIHRoZSBkaXNhYmxlZCBncm91cFxuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzLmZpbHRlcihncm91cCA9PiBncm91cC5pZCAhPT0gJ19kaXNhYmxlZCcpO1xuXHRcdH0sXG5cdFx0c3ViQWRtaW5zR3JvdXBzKCkge1xuXHRcdFx0Ly8gZGF0YSBwcm92aWRlZCBwaHAgc2lkZVxuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U2VydmVyRGF0YS5zdWJhZG1pbmdyb3Vwcztcblx0XHR9LFxuXHRcdHF1b3RhT3B0aW9ucygpIHtcblx0XHRcdC8vIGNvbnZlcnQgdGhlIHByZXNldCBhcnJheSBpbnRvIG9iamVjdHNcblx0XHRcdGxldCBxdW90YVByZXNldCA9IHRoaXMuc2V0dGluZ3MucXVvdGFQcmVzZXQucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjLmNvbmNhdCh7aWQ6Y3VyLCBsYWJlbDpjdXJ9KSwgW10pO1xuXHRcdFx0Ly8gYWRkIGRlZmF1bHQgcHJlc2V0c1xuXHRcdFx0cXVvdGFQcmVzZXQudW5zaGlmdCh0aGlzLnVubGltaXRlZFF1b3RhKTtcblx0XHRcdHF1b3RhUHJlc2V0LnVuc2hpZnQodGhpcy5kZWZhdWx0UXVvdGEpO1xuXHRcdFx0cmV0dXJuIHF1b3RhUHJlc2V0O1xuXHRcdH0sXG5cdFx0bWluUGFzc3dvcmRMZW5ndGgoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aDtcblx0XHR9LFxuXHRcdHVzZXJzT2Zmc2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNPZmZzZXQ7XG5cdFx0fSxcblx0XHR1c2Vyc0xpbWl0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNMaW1pdDtcblx0XHR9LFxuXHRcdC8vIGdldCBzZWxlY3RlZCBoYXNoXG5cdFx0c2VsZWN0ZWRHcm91cCgpIHtcblx0XHRcdGxldCBoYXNoID0gdGhpcy4kcm91dGUuaGFzaDtcblx0XHRcdGlmICh0eXBlb2YgaGFzaCA9PT0gJ3N0cmluZycgJiYgaGFzaC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSB2YWxpZCBoYXNoOiBncm91cFhYWFhcblx0XHRcdFx0Ly8gZ3JvdXBfWFhYWCBhcmUgcmVzZXJ2ZWQgZ3JvdXBzXG5cdFx0XHRcdGxldCBzcGxpdCA9IGhhc2guc3BsaXQoJ2dyb3VwJyk7XG5cdFx0XHRcdGlmIChzcGxpdC5sZW5ndGggPT09IDIgJiYgc3BsaXRbMV0uY2hhckF0KDApICE9PSAnXycpIHtcblx0XHRcdFx0XHRyZXR1cm4gaGFzaC5zcGxpdCgnZ3JvdXAnKVsxXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblx0fSxcblx0d2F0Y2g6IHtcblx0XHQvLyB3YXRjaCB1cmwgY2hhbmdlIGFuZCBncm91cCBzZWxlY3Rcblx0XHRzZWxlY3RlZEdyb3VwOiBmdW5jdGlvbiAodmFsLCBvbGQpIHtcblx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdCgncmVzZXRVc2VycycpO1xuXHRcdFx0dGhpcy4kcmVmcy5pbmZpbml0ZUxvYWRpbmcuJGVtaXQoJyRJbmZpbml0ZUxvYWRpbmc6cmVzZXQnKTtcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRvblNjcm9sbChldmVudCkge1xuXHRcdFx0dGhpcy5zY3JvbGxlZCA9IGV2ZW50LnRhcmdldC5zY3JvbGxUb3A+MDtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogVmFsaWRhdGUgcXVvdGEgc3RyaW5nIHRvIG1ha2Ugc3VyZSBpdCdzIGEgdmFsaWQgaHVtYW4gZmlsZSBzaXplXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHF1b3RhIFF1b3RhIGluIHJlYWRhYmxlIGZvcm1hdCAnNSBHQidcblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdHZhbGlkYXRlUXVvdGEocXVvdGEpIHtcblx0XHRcdC8vIG9ubHkgdXNlZCBmb3IgbmV3IHByZXNldHMgc2VudCB0aHJvdWdoIEBUYWdcblx0XHRcdGxldCB2YWxpZFF1b3RhID0gT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKTtcblx0XHRcdGlmICh2YWxpZFF1b3RhICE9PSBudWxsICYmIHZhbGlkUXVvdGEgPiAwKSB7XG5cdFx0XHRcdC8vIHVuaWZ5IGZvcm1hdCBvdXRwdXRcblx0XHRcdFx0cXVvdGEgPSBPQy5VdGlsLmh1bWFuRmlsZVNpemUoT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKSk7XG5cdFx0XHRcdHJldHVybiB0aGlzLm5ld1VzZXIucXVvdGEgPSB7aWQ6IHF1b3RhLCBsYWJlbDogcXVvdGF9O1xuXHRcdFx0fVxuXHRcdFx0Ly8gRGVmYXVsdCBpcyB1bmxpbWl0ZWRcblx0XHRcdHJldHVybiB0aGlzLm5ld1VzZXIucXVvdGEgPSB0aGlzLnF1b3RhT3B0aW9uc1swXTtcblx0XHR9LFxuXG5cdFx0aW5maW5pdGVIYW5kbGVyKCRzdGF0ZSkge1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldFVzZXJzJywge29mZnNldDp0aGlzLnVzZXJzT2Zmc2V0LCBsaW1pdDp0aGlzLnVzZXJzTGltaXQsIGdyb3VwOnRoaXMuc2VsZWN0ZWRHcm91cH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4ge3Jlc3BvbnNlPyRzdGF0ZS5sb2FkZWQoKTokc3RhdGUuY29tcGxldGUoKX0pO1xuXHRcdH0sXG5cblx0XHRyZXNldEZvcm0gKCkge1xuXHRcdFx0Ly8gcmV2ZXJ0IGZvcm0gdG8gb3JpZ2luYWwgc3RhdGVcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5uZXdVc2VyLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKS5uZXdVc2VyKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdH0sXG5cdFx0Y3JlYXRlVXNlcigpIHtcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkVXNlcicsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLm5ld1VzZXIuaWQsXG5cdFx0XHRcdHBhc3N3b3JkOiB0aGlzLm5ld1VzZXIucGFzc3dvcmQsXG5cdFx0XHRcdGVtYWlsOiB0aGlzLm5ld1VzZXIubWFpbEFkZHJlc3MsXG5cdFx0XHRcdGdyb3VwczogdGhpcy5uZXdVc2VyLmdyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAuaWQpLFxuXHRcdFx0XHRzdWJhZG1pbjogdGhpcy5uZXdVc2VyLnN1YkFkbWluc0dyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAuaWQpLFxuXHRcdFx0XHRxdW90YTogdGhpcy5uZXdVc2VyLnF1b3RhLmlkXG5cdFx0XHR9KS50aGVuKCgpID0+IHRoaXMucmVzZXRGb3JtKCkpO1xuXHRcdH1cblx0fVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__userList_userRow__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_multiselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue__ = __webpack_require__(3);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userList',\n\tprops: ['users', 'showConfig'],\n\tcomponents: {\n\t\tuserRow: __WEBPACK_IMPORTED_MODULE_0__userList_userRow__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default.a,\n\t\tInfiniteLoading: __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default.a\n\t},\n\tdata: function data() {\n\t\tvar unlimitedQuota = { id: 'none', label: t('settings', 'Unlimited') },\n\t\t defaultQuota = { id: 'default', label: t('settings', 'Default quota') };\n\t\treturn {\n\t\t\tunlimitedQuota: unlimitedQuota,\n\t\t\tdefaultQuota: defaultQuota,\n\t\t\tloading: false,\n\t\t\tscrolled: false,\n\t\t\tnewUser: {\n\t\t\t\tid: '',\n\t\t\t\tdisplayName: '',\n\t\t\t\tpassword: '',\n\t\t\t\tmailAddress: '',\n\t\t\t\tgroups: [],\n\t\t\t\tsubAdminsGroups: [],\n\t\t\t\tquota: defaultQuota,\n\t\t\t\tlanguage: { code: 'en', name: t('settings', 'Default language') }\n\t\t\t}\n\t\t};\n\t},\n\tmounted: function mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\t\t/** \n * Init default language from server data. The use of this.settings\n * requires a computed variable,vwhich break the v-model binding of the form,\n * this is a much easier solution than getter and setter\n */\n\t\t__WEBPACK_IMPORTED_MODULE_3_vue__[\"a\" /* default */].set(this.newUser.language, 'code', this.settings.defaultLanguage);\n\t},\n\n\tcomputed: {\n\t\tsettings: function settings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers: function filteredUsers() {\n\t\t\tif (this.$route.hash === '#group_disabled') {\n\t\t\t\tvar disabledUsers = this.users.filter(function (user) {\n\t\t\t\t\treturn user.enabled !== true;\n\t\t\t\t});\n\t\t\t\tif (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\twindow.location.hash = '#group_everyone';\n\t\t\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\treturn this.users.filter(function (user) {\n\t\t\t\treturn user.enabled === true;\n\t\t\t});\n\t\t},\n\t\tgroups: function groups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups.filter(function (group) {\n\t\t\t\treturn group.id !== '_disabled';\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups: function subAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getServerData.subadmingroups;\n\t\t},\n\t\tquotaOptions: function quotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tvar quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n\t\t\t\treturn acc.concat({ id: cur, label: cur });\n\t\t\t}, []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// get selected hash\n\t\tselectedGroup: function selectedGroup() {\n\t\t\tvar hash = this.$route.hash;\n\t\t\tif (typeof hash === 'string' && hash.length > 0) {\n\t\t\t\t// we have a valid hash: groupXXXX\n\t\t\t\t// group_XXXX are reserved groups\n\t\t\t\tvar split = hash.split('group');\n\t\t\t\tif (split.length === 2 && split[1].charAt(0) !== '_') {\n\t\t\t\t\treturn hash.split('group')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\n\n\t\t/* LANGUAGES */\n\t\tlanguages: function languages() {\n\t\t\treturn Array({\n\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\tlanguages: this.settings.languages.commonlanguages\n\t\t\t}, {\n\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\tlanguages: this.settings.languages.languages\n\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function selectedGroup(val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll: function onScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTop > 0;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Object}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota > 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = { id: quota, label: quota };\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\t\tinfiniteHandler: function infiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', { offset: this.usersOffset, limit: this.usersLimit, group: this.selectedGroup }).then(function (response) {\n\t\t\t\tresponse ? $state.loaded() : $state.complete();\n\t\t\t});\n\t\t},\n\t\tresetForm: function resetForm() {\n\t\t\t// revert form to original state\n\t\t\tObject.assign(this.newUser, this.$options.data.call(this).newUser);\n\t\t\tthis.loading = false;\n\t\t},\n\t\tcreateUser: function createUser() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.loading = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\tlanguage: this.newUser.language.code\n\t\t\t}).then(function () {\n\t\t\t\treturn _this.resetForm();\n\t\t\t});\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlP2JjNTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZHQTtBQUNBO0FBQ0E7QUFDQTs7eURBRUE7T0FFQTtrQkFDQTs7QUFFQTtBQUNBO0FBRUE7QUFKQTt1QkFLQTswREFDQTsyREFDQTs7bUJBRUE7aUJBQ0E7WUFDQTthQUNBOztRQUVBO2lCQUNBO2NBQ0E7aUJBQ0E7WUFDQTtxQkFDQTtXQUNBO2dEQUdBO0FBVkE7QUFMQTtBQWdCQTs2QkFDQTt3Q0FDQTsrQ0FDQTtBQUNBO0FBS0E7Ozs7O3dHQUNBO0FBQ0E7OztnQ0FFQTs4QkFDQTtBQUNBOzBDQUNBOytDQUNBOzs2QkFDQTs7MkdBQ0E7QUFDQTs0QkFDQTtzQ0FDQTtBQUNBO1dBQ0E7QUFDQTs7NEJBQ0E7O0FBQ0E7NEJBQ0E7QUFDQTs7d0JBQ0E7O0FBQ0E7OENBQ0E7QUFDQTs0Q0FDQTtBQUNBO3dDQUNBO0FBQ0E7OztNQUNBO0FBQ0E7NEJBQ0E7NEJBQ0E7VUFDQTtBQUNBO2tEQUNBOzhCQUNBO0FBQ0E7c0NBQ0E7OEJBQ0E7QUFDQTtvQ0FDQTs4QkFDQTtBQUNBOztBQUNBOzBDQUNBOzBCQUNBO29EQUNBO0FBQ0E7QUFDQTsyQkFDQTswREFDQTtnQ0FDQTtBQUNBO0FBQ0E7VUFDQTtBQUVBOzs7QUFDQTtrQ0FDQTs7eUJBR0E7dUNBRUE7QUFIQSxJQURBO3lCQU1BO3VDQUdBO0FBSkE7QUFNQTtBQXBFQTs7QUFzRUE7a0RBQ0E7c0JBQ0E7b0NBQ0E7QUFFQTtBQU5BOztxQ0FRQTs0Q0FDQTtBQUVBOzs7QUFNQTs7Ozs7OytDQUNBO0FBQ0E7NkNBQ0E7OENBQ0E7QUFDQTsyREFDQTtvREFDQTtBQUNBO0FBQ0E7aURBQ0E7QUFFQTtvREFDQTtvR0FDQTs7QUFDQTtBQUVBO2tDQUNBO0FBQ0E7NkRBQ0E7a0JBQ0E7QUFDQTs7QUFDQTs7a0JBQ0E7O3lCQUVBOzJCQUNBO3dCQUNBOztrQkFDQTs7O2tCQUNBOzs4QkFDQTtvQ0FDQTtBQVBBO2lCQVFBOztBQUVBO0FBN0NBO0FBbkhBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGlkPVwiYXBwLWNvbnRlbnRcIiBjbGFzcz1cInVzZXItbGlzdC1ncmlkXCIgdi1vbjpzY3JvbGwucGFzc2l2ZT1cIm9uU2Nyb2xsXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiIGlkPVwiZ3JpZC1oZWFkZXJcIiA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmICFzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybX1cIj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBdmF0YXJcIiBjbGFzcz1cImF2YXRhclwiPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD1cImhlYWRlck5hbWVcIiBjbGFzcz1cIm5hbWVcIj57eyB0KCdzZXR0aW5ncycsICdVc2VybmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyRGlzcGxheU5hbWVcIiBjbGFzcz1cImRpc3BsYXlOYW1lXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ0Z1bGwgbmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyUGFzc3dvcmRcIiBjbGFzcz1cInBhc3N3b3JkXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ1Bhc3N3b3JkJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBZGRyZXNzXCIgY2xhc3M9XCJtYWlsQWRkcmVzc1wiPnt7IHQoJ3NldHRpbmdzJywgICdFbWFpbCcpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyR3JvdXBzXCIgY2xhc3M9XCJncm91cHNcIj57eyB0KCdzZXR0aW5ncycsICAnR3JvdXBzJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJTdWJBZG1pbnNcIiBjbGFzcz1cInN1YmFkbWluc1wiXG5cdFx0XHRcdCB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCI+e3sgdCgnc2V0dGluZ3MnLCAnR3JvdXAgYWRtaW4gZm9yJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJRdW90YVwiIGNsYXNzPVwicXVvdGFcIj57eyB0KCdzZXR0aW5ncycsICdRdW90YScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyTGFuZ3VhZ2VzXCIgY2xhc3M9XCJsYW5ndWFnZXNcIlxuXHRcdFx0XHQgdi1pZj1cInNob3dDb25maWcuc2hvd0xhbmd1YWdlc1wiPnt7IHQoJ3NldHRpbmdzJywgJ0xhbmd1YWdlcycpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj57eyB0KCdzZXR0aW5ncycsICdTdG9yYWdlIGxvY2F0aW9uJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcIj57eyB0KCdzZXR0aW5ncycsICdVc2VyIGJhY2tlbmQnKSB9fTwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiBcblx0XHRcdFx0IHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj57eyB0KCdzZXR0aW5ncycsICdMYXN0IGxvZ2luJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPjwvZGl2PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGZvcm0gY2xhc3M9XCJyb3dcIiBpZD1cIm5ldy11c2VyXCIgdi1zaG93PVwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiY3JlYXRlVXNlclwiIDpkaXNhYmxlZD1cImxvYWRpbmdcIlxuXHRcdFx0ICA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmIHNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtfVwiPlxuXHRcdFx0PGRpdiA6Y2xhc3M9XCJsb2FkaW5nPydpY29uLWxvYWRpbmctc21hbGwnOidpY29uLWFkZCdcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJuYW1lXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCB2LW1vZGVsPVwibmV3VXNlci5pZFwiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnVXNlciBuYW1lJylcIiBuYW1lPVwidXNlcm5hbWVcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICBwYXR0ZXJuPVwiW2EtekEtWjAtOSBfXFwuQFxcLSddK1wiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZGlzcGxheU5hbWVcIj5cblx0XHRcdFx0PGlucHV0IGlkPVwibmV3ZGlzcGxheW5hbWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJuZXdVc2VyLmRpc3BsYXlOYW1lXCJcblx0XHRcdFx0XHQgICA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdEaXNwbGF5IG5hbWUnKVwiIG5hbWU9XCJkaXNwbGF5bmFtZVwiXG5cdFx0XHRcdFx0ICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhc3N3b3JkXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIHYtbW9kZWw9XCJuZXdVc2VyLnBhc3N3b3JkXCJcblx0XHRcdFx0XHQgICA6cmVxdWlyZWQ9XCJuZXdVc2VyLm1haWxBZGRyZXNzPT09JydcIlxuXHRcdFx0XHRcdCAgIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1Bhc3N3b3JkJylcIiBuYW1lPVwicGFzc3dvcmRcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1haWxBZGRyZXNzXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld2VtYWlsXCIgdHlwZT1cImVtYWlsXCIgdi1tb2RlbD1cIm5ld1VzZXIubWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdCAgIDpyZXF1aXJlZD1cIm5ld1VzZXIucGFzc3dvcmQ9PT0nJ1wiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTWFpbCBhZGRyZXNzJylcIiBuYW1lPVwiZW1haWxcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCI+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwiZ3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuZ3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ0FkZCB1c2VyIGluIGdyb3VwJylcIlxuXHRcdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2Utb24tc2VsZWN0PVwiZmFsc2VcIj5cblx0XHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwic3ViQWRtaW5zR3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOmNsb3NlLW9uLXNlbGVjdD1cImZhbHNlXCI+XG5cdFx0XHRcdFx0PHNwYW4gc2xvdD1cIm5vUmVzdWx0XCI+e3t0KCdzZXR0aW5ncycsJ05vIHJlc3VsdCcpfX08L3NwYW4+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgdi1tb2RlbD1cIm5ld1VzZXIucXVvdGFcIlxuXHRcdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHRcdCBsYWJlbD1cImxhYmVsXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiID5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhbmd1YWdlc1wiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYW5ndWFnZXNcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwibGFuZ3VhZ2VzXCIgdi1tb2RlbD1cIm5ld1VzZXIubGFuZ3VhZ2VcIlxuXHRcdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnRGVmYXVsdCBsYW5ndWFnZScpXCJcblx0XHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiY29kZVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiBncm91cC12YWx1ZXM9XCJsYW5ndWFnZXNcIiBncm91cC1sYWJlbD1cImxhYmVsXCI+XG5cdFx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzdG9yYWdlTG9jYXRpb25cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQmFja2VuZFwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhc3RMb2dpblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGlkPVwibmV3c3VibWl0XCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBpY29uLWNoZWNrbWFyay13aGl0ZSBoYXMtdG9vbHRpcFwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdBZGQgYSBuZXcgdXNlcicpXCI+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwicmVzZXRcIiBpZD1cIm5ld3Jlc2V0XCIgY2xhc3M9XCJidXR0b24gaWNvbi1jbG9zZSBoYXMtdG9vbHRpcFwiIEBjbGljaz1cInJlc2V0Rm9ybVwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdDYW5jZWwgYW5kIHJlc2V0IHRoZSBmb3JtJylcIj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZm9ybT5cblxuXHRcdDx1c2VyLXJvdyB2LWZvcj1cIih1c2VyLCBrZXkpIGluIGZpbHRlcmVkVXNlcnNcIiA6dXNlcj1cInVzZXJcIiA6a2V5PVwia2V5XCIgOnNldHRpbmdzPVwic2V0dGluZ3NcIiA6c2hvd0NvbmZpZz1cInNob3dDb25maWdcIlxuXHRcdFx0XHQgIDpncm91cHM9XCJncm91cHNcIiA6c3ViQWRtaW5zR3JvdXBzPVwic3ViQWRtaW5zR3JvdXBzXCIgOnF1b3RhT3B0aW9ucz1cInF1b3RhT3B0aW9uc1wiIDpsYW5ndWFnZXM9XCJsYW5ndWFnZXNcIiAvPlxuXHRcdDxpbmZpbml0ZS1sb2FkaW5nIEBpbmZpbml0ZT1cImluZmluaXRlSGFuZGxlclwiIHJlZj1cImluZmluaXRlTG9hZGluZ1wiPlxuXHRcdFx0PGRpdiBzbG90PVwic3Bpbm5lclwiPjxkaXYgY2xhc3M9XCJ1c2Vycy1pY29uLWxvYWRpbmcgaWNvbi1sb2FkaW5nXCI+PC9kaXY+PC9kaXY+XG5cdFx0XHQ8ZGl2IHNsb3Q9XCJuby1tb3JlXCI+PGRpdiBjbGFzcz1cInVzZXJzLWxpc3QtZW5kXCI+4oCUIHt7dCgnc2V0dGluZ3MnLCAnbm8gbW9yZSByZXN1bHRzJyl9fSDigJQ8L2Rpdj48L2Rpdj5cblx0XHRcdDxkaXYgc2xvdD1cIm5vLXJlc3VsdHNcIj5cblx0XHRcdFx0PGRpdiBpZD1cImVtcHR5Y29udGVudFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhY3RzLWRhcmtcIj48L2Rpdj5cblx0XHRcdFx0XHQ8aDI+e3t0KCdzZXR0aW5ncycsICdObyB1c2VycyBpbiBoZXJlJyl9fTwvaDI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9pbmZpbml0ZS1sb2FkaW5nPlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgdXNlclJvdyBmcm9tICcuL3VzZXJMaXN0L3VzZXJSb3cnO1xuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJ3Z1ZS1tdWx0aXNlbGVjdCc7XG5pbXBvcnQgSW5maW5pdGVMb2FkaW5nIGZyb20gJ3Z1ZS1pbmZpbml0ZS1sb2FkaW5nJztcbmltcG9ydCBWdWUgZnJvbSAndnVlJztcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAndXNlckxpc3QnLFxuXHRwcm9wczogWyd1c2VycycsICdzaG93Q29uZmlnJ10sXG5cdGNvbXBvbmVudHM6IHtcblx0XHR1c2VyUm93LFxuXHRcdE11bHRpc2VsZWN0LFxuXHRcdEluZmluaXRlTG9hZGluZ1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdGxldCB1bmxpbWl0ZWRRdW90YSA9IHtpZDonbm9uZScsIGxhYmVsOnQoJ3NldHRpbmdzJywgJ1VubGltaXRlZCcpfSxcblx0XHRcdGRlZmF1bHRRdW90YSA9IHtpZDonZGVmYXVsdCcsIGxhYmVsOnQoJ3NldHRpbmdzJywgJ0RlZmF1bHQgcXVvdGEnKX07XG5cdFx0cmV0dXJuIHtcblx0XHRcdHVubGltaXRlZFF1b3RhOiB1bmxpbWl0ZWRRdW90YSxcblx0XHRcdGRlZmF1bHRRdW90YTogZGVmYXVsdFF1b3RhLFxuXHRcdFx0bG9hZGluZzogZmFsc2UsXG5cdFx0XHRzY3JvbGxlZDogZmFsc2UsXG5cdFx0XHRuZXdVc2VyOiB7XG5cdFx0XHRcdGlkOicnLFxuXHRcdFx0XHRkaXNwbGF5TmFtZTonJyxcblx0XHRcdFx0cGFzc3dvcmQ6JycsXG5cdFx0XHRcdG1haWxBZGRyZXNzOicnLFxuXHRcdFx0XHRncm91cHM6IFtdLFxuXHRcdFx0XHRzdWJBZG1pbnNHcm91cHM6IFtdLFxuXHRcdFx0XHRxdW90YTogZGVmYXVsdFF1b3RhLFxuXHRcdFx0XHRsYW5ndWFnZToge2NvZGU6ICdlbicsIG5hbWU6IHQoJ3NldHRpbmdzJywgJ0RlZmF1bHQgbGFuZ3VhZ2UnKX1cblx0XHRcdH1cblx0XHR9O1xuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5jYW5DaGFuZ2VQYXNzd29yZCkge1xuXHRcdFx0T0MuTm90aWZpY2F0aW9uLnNob3dUZW1wb3JhcnkodCgnc2V0dGluZ3MnLCAnUGFzc3dvcmQgY2hhbmdlIGlzIGRpc2FibGVkIGJlY2F1c2UgdGhlIG1hc3RlciBrZXkgaXMgZGlzYWJsZWQnKSk7XG5cdFx0fVxuXHRcdC8qKiBcblx0XHQgKiBJbml0IGRlZmF1bHQgbGFuZ3VhZ2UgZnJvbSBzZXJ2ZXIgZGF0YS4gVGhlIHVzZSBvZiB0aGlzLnNldHRpbmdzXG5cdFx0ICogcmVxdWlyZXMgYSBjb21wdXRlZCB2YXJpYWJsZSx2d2hpY2ggYnJlYWsgdGhlIHYtbW9kZWwgYmluZGluZyBvZiB0aGUgZm9ybSxcblx0XHQgKiB0aGlzIGlzIGEgbXVjaCBlYXNpZXIgc29sdXRpb24gdGhhbiBnZXR0ZXIgYW5kIHNldHRlclxuXHRcdCAqL1xuXHRcdFZ1ZS5zZXQodGhpcy5uZXdVc2VyLmxhbmd1YWdlLCAnY29kZScsIHRoaXMuc2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlKTtcblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHRzZXR0aW5ncygpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFNlcnZlckRhdGE7XG5cdFx0fSxcblx0XHRmaWx0ZXJlZFVzZXJzKCkge1xuXHRcdFx0aWYgKHRoaXMuJHJvdXRlLmhhc2ggPT09ICcjZ3JvdXBfZGlzYWJsZWQnKSB7XG5cdFx0XHRcdGxldCBkaXNhYmxlZFVzZXJzID0gdGhpcy51c2Vycy5maWx0ZXIodXNlciA9PiB1c2VyLmVuYWJsZWQgIT09IHRydWUpO1xuXHRcdFx0XHRpZiAoZGlzYWJsZWRVc2Vycy5sZW5ndGg9PT0wICYmIHRoaXMuJHJlZnMuaW5maW5pdGVMb2FkaW5nICYmIHRoaXMuJHJlZnMuaW5maW5pdGVMb2FkaW5nLmlzQ29tcGxldGUpIHtcblx0XHRcdFx0XHQvLyBkaXNhYmxlZCBncm91cCBpcyBlbXB0eSwgcmVkaXJlY3Rpb24gdG8gYWxsIHVzZXJzXG5cdFx0XHRcdFx0d2luZG93LmxvY2F0aW9uLmhhc2ggPSAnI2dyb3VwX2V2ZXJ5b25lJztcblx0XHRcdFx0XHR0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZy4kZW1pdCgnJEluZmluaXRlTG9hZGluZzpyZXNldCcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBkaXNhYmxlZFVzZXJzO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMudXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5lbmFibGVkID09PSB0cnVlKTtcblx0XHR9LFxuXHRcdGdyb3VwcygpIHtcblx0XHRcdC8vIGRhdGEgcHJvdmlkZWQgcGhwIHNpZGUgKyByZW1vdmUgdGhlIGRpc2FibGVkIGdyb3VwXG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRHcm91cHMuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmlkICE9PSAnX2Rpc2FibGVkJyk7XG5cdFx0fSxcblx0XHRzdWJBZG1pbnNHcm91cHMoKSB7XG5cdFx0XHQvLyBkYXRhIHByb3ZpZGVkIHBocCBzaWRlXG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhLnN1YmFkbWluZ3JvdXBzO1xuXHRcdH0sXG5cdFx0cXVvdGFPcHRpb25zKCkge1xuXHRcdFx0Ly8gY29udmVydCB0aGUgcHJlc2V0IGFycmF5IGludG8gb2JqZWN0c1xuXHRcdFx0bGV0IHF1b3RhUHJlc2V0ID0gdGhpcy5zZXR0aW5ncy5xdW90YVByZXNldC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MuY29uY2F0KHtpZDpjdXIsIGxhYmVsOmN1cn0pLCBbXSk7XG5cdFx0XHQvLyBhZGQgZGVmYXVsdCBwcmVzZXRzXG5cdFx0XHRxdW90YVByZXNldC51bnNoaWZ0KHRoaXMudW5saW1pdGVkUXVvdGEpO1xuXHRcdFx0cXVvdGFQcmVzZXQudW5zaGlmdCh0aGlzLmRlZmF1bHRRdW90YSk7XG5cdFx0XHRyZXR1cm4gcXVvdGFQcmVzZXQ7XG5cdFx0fSxcblx0XHRtaW5QYXNzd29yZExlbmd0aCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoO1xuXHRcdH0sXG5cdFx0dXNlcnNPZmZzZXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc09mZnNldDtcblx0XHR9LFxuXHRcdHVzZXJzTGltaXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc0xpbWl0O1xuXHRcdH0sXG5cdFx0Ly8gZ2V0IHNlbGVjdGVkIGhhc2hcblx0XHRzZWxlY3RlZEdyb3VwKCkge1xuXHRcdFx0bGV0IGhhc2ggPSB0aGlzLiRyb3V0ZS5oYXNoO1xuXHRcdFx0aWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJyAmJiBoYXNoLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gd2UgaGF2ZSBhIHZhbGlkIGhhc2g6IGdyb3VwWFhYWFxuXHRcdFx0XHQvLyBncm91cF9YWFhYIGFyZSByZXNlcnZlZCBncm91cHNcblx0XHRcdFx0bGV0IHNwbGl0ID0gaGFzaC5zcGxpdCgnZ3JvdXAnKTtcblx0XHRcdFx0aWYgKHNwbGl0Lmxlbmd0aCA9PT0gMiAmJiBzcGxpdFsxXS5jaGFyQXQoMCkgIT09ICdfJykge1xuXHRcdFx0XHRcdHJldHVybiBoYXNoLnNwbGl0KCdncm91cCcpWzFdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fSxcblxuXHRcdC8qIExBTkdVQUdFUyAqL1xuXHRcdGxhbmd1YWdlcygpIHtcblx0XHRcdHJldHVybiBBcnJheShcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB0KCdzZXR0aW5ncycsICdDb21tb24gbGFuZ3VhZ2VzJyksXG5cdFx0XHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmxhbmd1YWdlcy5jb21tb25sYW5ndWFnZXNcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB0KCdzZXR0aW5ncycsICdBbGwgbGFuZ3VhZ2VzJyksXG5cdFx0XHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmxhbmd1YWdlcy5sYW5ndWFnZXNcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cdHdhdGNoOiB7XG5cdFx0Ly8gd2F0Y2ggdXJsIGNoYW5nZSBhbmQgZ3JvdXAgc2VsZWN0XG5cdFx0c2VsZWN0ZWRHcm91cDogZnVuY3Rpb24gKHZhbCwgb2xkKSB7XG5cdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ3Jlc2V0VXNlcnMnKTtcblx0XHRcdHRoaXMuJHJlZnMuaW5maW5pdGVMb2FkaW5nLiRlbWl0KCckSW5maW5pdGVMb2FkaW5nOnJlc2V0Jyk7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0b25TY3JvbGwoZXZlbnQpIHtcblx0XHRcdHRoaXMuc2Nyb2xsZWQgPSBldmVudC50YXJnZXQuc2Nyb2xsVG9wPjA7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFZhbGlkYXRlIHF1b3RhIHN0cmluZyB0byBtYWtlIHN1cmUgaXQncyBhIHZhbGlkIGh1bWFuIGZpbGUgc2l6ZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBxdW90YSBRdW90YSBpbiByZWFkYWJsZSBmb3JtYXQgJzUgR0InXG5cdFx0ICogQHJldHVybnMge09iamVjdH1cblx0XHQgKi9cblx0XHR2YWxpZGF0ZVF1b3RhKHF1b3RhKSB7XG5cdFx0XHQvLyBvbmx5IHVzZWQgZm9yIG5ldyBwcmVzZXRzIHNlbnQgdGhyb3VnaCBAVGFnXG5cdFx0XHRsZXQgdmFsaWRRdW90YSA9IE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSk7XG5cdFx0XHRpZiAodmFsaWRRdW90YSAhPT0gbnVsbCAmJiB2YWxpZFF1b3RhID4gMCkge1xuXHRcdFx0XHQvLyB1bmlmeSBmb3JtYXQgb3V0cHV0XG5cdFx0XHRcdHF1b3RhID0gT0MuVXRpbC5odW1hbkZpbGVTaXplKE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSkpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5uZXdVc2VyLnF1b3RhID0ge2lkOiBxdW90YSwgbGFiZWw6IHF1b3RhfTtcblx0XHRcdH1cblx0XHRcdC8vIERlZmF1bHQgaXMgdW5saW1pdGVkXG5cdFx0XHRyZXR1cm4gdGhpcy5uZXdVc2VyLnF1b3RhID0gdGhpcy5xdW90YU9wdGlvbnNbMF07XG5cdFx0fSxcblxuXHRcdGluZmluaXRlSGFuZGxlcigkc3RhdGUpIHtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdnZXRVc2VycycsIHtvZmZzZXQ6dGhpcy51c2Vyc09mZnNldCwgbGltaXQ6dGhpcy51c2Vyc0xpbWl0LCBncm91cDp0aGlzLnNlbGVjdGVkR3JvdXB9KVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtyZXNwb25zZT8kc3RhdGUubG9hZGVkKCk6JHN0YXRlLmNvbXBsZXRlKCl9KTtcblx0XHR9LFxuXG5cdFx0cmVzZXRGb3JtICgpIHtcblx0XHRcdC8vIHJldmVydCBmb3JtIHRvIG9yaWdpbmFsIHN0YXRlXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMubmV3VXNlciwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcykubmV3VXNlcik7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblx0XHR9LFxuXHRcdGNyZWF0ZVVzZXIoKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXInLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy5uZXdVc2VyLmlkLFxuXHRcdFx0XHRwYXNzd29yZDogdGhpcy5uZXdVc2VyLnBhc3N3b3JkLFxuXHRcdFx0XHRlbWFpbDogdGhpcy5uZXdVc2VyLm1haWxBZGRyZXNzLFxuXHRcdFx0XHRncm91cHM6IHRoaXMubmV3VXNlci5ncm91cHMubWFwKGdyb3VwID0+IGdyb3VwLmlkKSxcblx0XHRcdFx0c3ViYWRtaW46IHRoaXMubmV3VXNlci5zdWJBZG1pbnNHcm91cHMubWFwKGdyb3VwID0+IGdyb3VwLmlkKSxcblx0XHRcdFx0cXVvdGE6IHRoaXMubmV3VXNlci5xdW90YS5pZCxcblx0XHRcdFx0bGFuZ3VhZ2U6IHRoaXMubmV3VXNlci5sYW5ndWFnZS5jb2RlLFxuXHRcdFx0fSkudGhlbigoKSA9PiB0aGlzLnJlc2V0Rm9ybSgpKTtcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jb21wb25lbnRzL3VzZXJMaXN0LnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n"); /***/ }), /* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popoverMenu__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_click_outside__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_multiselect__);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig'],\n\tcomponents: {\n\t\tpopoverMenu: __WEBPACK_IMPORTED_MODULE_0__popoverMenu__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default.a\n\t},\n\tdirectives: {\n\t\tClickOutside: __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default.a\n\t},\n\tmounted: function mounted() {\n\t\t// required if popup needs to stay opened after menu click\n\t\t// since we only have disable/delete actions, let's close it directly\n\t\t// this.popupItem = this.$el;\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false\n\t\t\t}\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions: function userActions() {\n\t\t\treturn [{\n\t\t\t\ticon: 'icon-delete',\n\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\taction: this.deleteUser\n\t\t\t}, {\n\t\t\t\t'icon': this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t'text': this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t'action': this.enableDisableUser\n\t\t\t}];\n\t\t},\n\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups: function userGroups() {\n\t\t\tvar _this = this;\n\n\t\t\tvar userGroups = this.groups.filter(function (group) {\n\t\t\t\treturn _this.user.groups.includes(group.id);\n\t\t\t});\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups: function userSubAdminsGroups() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n\t\t\t\treturn _this2.user.subadmin.includes(group.id);\n\t\t\t});\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedQuota: function usedQuota() {\n\t\t\tvar quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - 1 / (usedInGB + 1));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota: function userQuota() {\n\t\t\tif (this.user.quota.quota > 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tvar humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tvar userQuota = this.quotaOptions.find(function (quota) {\n\t\t\t\t\treturn quota.id === humanQuota;\n\t\t\t\t});\n\t\t\t\treturn userQuota ? userQuota : { id: humanQuota, label: humanQuota };\n\t\t\t} else if (this.user.quota.quota === 0 || this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\n\n\t\t/* LANGUAGES */\n\t\tlanguages: function languages() {\n\t\t\treturn Array({\n\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\tlanguages: this.settings.languages.commonlanguages\n\t\t\t}, {\n\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\tlanguages: this.settings.languages.languages\n\t\t\t});\n\t\t},\n\t\tuserLanguage: function userLanguage() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n\t\t\tvar userLang = availableLanguages.find(function (lang) {\n\t\t\t\treturn lang.code === _this3.user.language;\n\t\t\t});\n\t\t\tif ((typeof userLang === 'undefined' ? 'undefined' : _typeof(userLang)) !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language\n\t\t\t\t};\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn userLang;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\tshowMenu: function showMenu() {\n\t\t\tthis.openedMenu = true;\n\t\t},\n\t\thideMenu: function hideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\n\t\t/**\n * Generate avatar url\n * \n * @param {string} user The user name\n * @param {int} size Size integer, default 32\n * @returns {string}\n */\n\t\tgenerateAvatar: function generateAvatar(user) {\n\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n\n\t\t\treturn OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n\t\t\t\tuser: user,\n\t\t\t\tsize: size,\n\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Format the limit text in the selected options\n * \n * @param {int} count elements left\n * @returns {string}\n */\n\t\tlimitGroups: function limitGroups(count) {\n\t\t\treturn '+' + count;\n\t\t},\n\t\tdeleteUser: function deleteUser() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', { userid: userid }).then(function () {\n\t\t\t\t_this4.loading.delete = false;\n\t\t\t\t_this4.loading.all = false;\n\t\t\t});\n\t\t},\n\t\tenableDisableUser: function enableDisableUser() {\n\t\t\tvar _this5 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', { userid: userid, enabled: enabled }).then(function () {\n\t\t\t\t_this5.loading.delete = false;\n\t\t\t\t_this5.loading.all = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user displayName\n * \n * @param {string} displayName The display name\n * @returns {Promise}\n */\n\t\tupdateDisplayName: function updateDisplayName() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(function () {\n\t\t\t\t_this6.loading.displayName = false;\n\t\t\t\t_this6.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user password\n * \n * @param {string} password The email adress\n * @returns {Promise}\n */\n\t\tupdatePassword: function updatePassword() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(function () {\n\t\t\t\t_this7.loading.password = false;\n\t\t\t\t_this7.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user mailAddress\n * \n * @param {string} mailAddress The email adress\n * @returns {Promise}\n */\n\t\tupdateEmail: function updateEmail() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(function () {\n\t\t\t\t_this8.loading.mailAddress = false;\n\t\t\t\t_this8.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Create a new group\n * \n * @param {string} groups Group id\n * @returns {Promise}\n */\n\t\tcreateGroup: function createGroup(gid) {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.loading = { groups: true, subadmins: true };\n\t\t\tthis.$store.dispatch('addGroup', gid).then(function () {\n\t\t\t\t_this9.loading = { groups: false, subadmins: false };\n\t\t\t\tvar userid = _this9.user.id;\n\t\t\t\t_this9.$store.dispatch('addUserGroup', { userid: userid, gid: gid });\n\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserGroup: function addUserGroup(group) {\n\t\t\tvar _this10 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this10.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserGroup: function removeUserGroup(group) {\n\t\t\tvar _this11 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this11.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserSubAdmin: function addUserSubAdmin(group) {\n\t\t\tvar _this12 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this12.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserSubAdmin: function removeUserSubAdmin(group) {\n\t\t\tvar _this13 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this13.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Dispatch quota set request\n * \n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n * @returns {string}\n */\n\t\tsetUserQuota: function setUserQuota() {\n\t\t\tvar _this14 = this;\n\n\t\t\tvar quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(function () {\n\t\t\t\treturn _this14.loading.quota = false;\n\t\t\t});\n\t\t\treturn quota;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Promise|boolean}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === 0) {\n\t\t\t\treturn this.setUserQuota('none');\n\t\t\t} else if (validQuota !== null) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid doo not change\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n * Dispatch language set request\n * \n * @param {Object} lang language object {code:'en', name:'English'}\n * @returns {Object}\n */\n\t\tsetUserLanguage: function setUserLanguage(lang) {\n\t\t\tvar _this15 = this;\n\n\t\t\tthis.loading.languages = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: lang.code\n\t\t\t}).then(function () {\n\t\t\t\treturn _this15.loading.languages = false;\n\t\t\t});\n\t\t\treturn lang;\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QvdXNlclJvdy52dWU/Mjg4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFGQTtBQUNBO0FBQ0E7O0FBRUE7T0FFQTswRUFDQTs7QUFFQTtBQUVBO0FBSEE7O0FBTUE7QUFGQTs2QkFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO3VCQUNBOztrQ0FFQTtlQUNBOztTQUVBO2lCQUNBO2NBQ0E7aUJBQ0E7WUFDQTtlQUNBO1dBQ0E7WUFDQTthQUNBO2VBR0E7QUFaQTtBQUhBO0FBZ0JBOzs7QUFFQTtzQ0FDQTs7VUFFQTt3QkFDQTtpQkFDQTtBQUhBOytDQUtBOzhFQUNBO21CQUVBO0FBSkE7QUFNQTs7O0FBQ0E7O0FBQ0E7Ozs0Q0FDQTs7VUFDQTtBQUNBOztBQUNBOzs7K0NBQ0E7O1VBQ0E7QUFFQTs7O0FBQ0E7a0NBQ0E7K0JBQ0E7a0JBQ0E7b0VBQ0E7VUFDQTs0REFDQTtBQUNBO3NDQUNBO0FBQ0E7NkJBQ0E7QUFDQTs7QUFDQTs7a0NBRUE7QUFDQTsyREFDQTs7eUJBQ0E7OzREQUNBO2tGQUNBO0FBQ0E7NkJBQ0E7QUFDQTsrQkFUQSxDQVVBO0FBRUE7OztBQUNBO2tEQUNBOzhCQUNBO0FBRUE7OztBQUNBO2tDQUNBOzt5QkFHQTt1Q0FFQTtBQUhBLElBREE7eUJBTUE7dUNBR0E7QUFKQTtBQUtBOztBQUNBOztpRkFDQTs7cUNBQ0E7O3NIQUNBOztxQkFFQTtxQkFFQTtBQUhBO3lDQUlBO1dBQ0E7QUFDQTtVQUNBO0FBRUE7QUFqRkE7O0FBbUZBO2dDQUNBO3FCQUNBO0FBQ0E7Z0NBQ0E7cUJBQ0E7QUFFQTs7O0FBT0E7Ozs7Ozs7O0FBQ0E7O2FBQ0EsWUFDQTtVQUVBO1VBQ0E7a0NBR0E7QUFMQTtBQVFBOzs7QUFNQTs7Ozs7OzJDQUNBO2dCQUNBO0FBRUE7O0FBQ0E7O3lCQUNBO3NCQUNBOzBCQUNBOytDQUNBLG1DQUNBOzRCQUNBO3lCQUNBO0FBQ0E7QUFFQTs7QUFDQTs7eUJBQ0E7c0JBQ0E7MEJBQ0E7NEJBQ0E7c0VBQ0EscUNBQ0E7NEJBQ0E7eUJBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0Q0FDQTs4QkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7aUNBQ0E7cUNBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOztzQ0FDQTsyQkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7OEJBQ0E7c0NBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0Q0FDQTs4QkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7aUNBQ0E7cUNBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs2Q0FDQTswREFDQTtpREFDQTs2QkFDQTs2REFDQTtBQUNBO29EQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3lCQUNBOzBCQUNBO21CQUNBO2lFQUNBO29DQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzt5QkFDQTswQkFDQTttQkFDQTtvRUFDQTtvQ0FDQTs7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7MEJBQ0E7bUJBQ0E7b0VBQ0E7dUNBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRCQUNBOzBCQUNBO21CQUNBO3VFQUNBO3VDQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs7O3dCQUNBO0FBQ0E7aUNBQ0E7O3NCQUVBO1NBQ0E7V0FDQTtBQUhBO21DQUlBOztVQUNBO0FBRUE7OztBQU1BOzs7Ozs7K0NBQ0E7QUFDQTs2Q0FDQTt5QkFDQTs2QkFDQTttQ0FDQTtBQUNBOzRFQUNBO0FBQ0E7QUFDQTtVQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRCQUNBO0FBQ0E7O3NCQUVBO1NBQ0E7Z0JBQ0E7QUFIQTt1Q0FJQTs7VUFDQTtBQUVBO0FBblBBO0FBbkhBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGNsYXNzPVwicm93XCIgOmNsYXNzPVwieydkaXNhYmxlZCc6IGxvYWRpbmcuZGVsZXRlIHx8IGxvYWRpbmcuZGlzYWJsZX1cIj5cblx0XHQ8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLmRlbGV0ZSB8fCBsb2FkaW5nLmRpc2FibGV9XCI+XG5cdFx0XHQ8aW1nIGFsdD1cIlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIDpzcmM9XCJnZW5lcmF0ZUF2YXRhcih1c2VyLmlkLCAzMilcIlxuXHRcdFx0XHQgOnNyY3NldD1cImdlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDY0KSsnIDJ4LCAnK2dlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDEyOCkrJyA0eCdcIlxuXHRcdFx0XHQgdi1pZj1cIiFsb2FkaW5nLmRlbGV0ZSAmJiAhbG9hZGluZy5kaXNhYmxlXCI+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cIm5hbWVcIj57e3VzZXIuaWR9fTwvZGl2PlxuXHRcdDxmb3JtIGNsYXNzPVwiZGlzcGxheU5hbWVcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuZGlzcGxheU5hbWV9XCIgdi1vbjpzdWJtaXQucHJldmVudD1cInVwZGF0ZURpc3BsYXlOYW1lXCI+XG5cdFx0XHQ8aW5wdXQgOmlkPVwiJ2Rpc3BsYXlOYW1lJyt1c2VyLmlkK3JhbmRcIiB0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwibG9hZGluZy5kaXNwbGF5TmFtZXx8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdDp2YWx1ZT1cInVzZXIuZGlzcGxheW5hbWVcIiByZWY9XCJkaXNwbGF5TmFtZVwiXG5cdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIC8+XG5cdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaWNvbi1jb25maXJtXCIgdmFsdWU9XCJcIiAvPlxuXHRcdDwvZm9ybT5cblx0XHQ8Zm9ybSBjbGFzcz1cInBhc3N3b3JkXCIgdi1pZj1cInNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnBhc3N3b3JkfVwiXG5cdFx0XHQgIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVQYXNzd29yZFwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidwYXNzd29yZCcrdXNlci5pZCtyYW5kXCIgdHlwZT1cInBhc3N3b3JkXCIgcmVxdWlyZWRcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJsb2FkaW5nLnBhc3N3b3JkfHxsb2FkaW5nLmFsbFwiIDptaW5sZW5ndGg9XCJtaW5QYXNzd29yZExlbmd0aFwiXG5cdFx0XHRcdFx0dmFsdWU9XCJcIiA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdOZXcgcGFzc3dvcmQnKVwiIHJlZj1cInBhc3N3b3JkXCJcblx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cblx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpY29uLWNvbmZpcm1cIiB2YWx1ZT1cIlwiIC8+XG5cdFx0PC9mb3JtPlxuXHRcdDxkaXYgdi1lbHNlPjwvZGl2PlxuXHRcdDxmb3JtIGNsYXNzPVwibWFpbEFkZHJlc3NcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcubWFpbEFkZHJlc3N9XCIgdi1vbjpzdWJtaXQucHJldmVudD1cInVwZGF0ZUVtYWlsXCI+XG5cdFx0XHQ8aW5wdXQgOmlkPVwiJ21haWxBZGRyZXNzJyt1c2VyLmlkK3JhbmRcIiB0eXBlPVwiZW1haWxcIlxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cImxvYWRpbmcubWFpbEFkZHJlc3N8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHQ6dmFsdWU9XCJ1c2VyLmVtYWlsXCIgcmVmPVwibWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiAvPlxuXHRcdFx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImljb24tY29uZmlybVwiIHZhbHVlPVwiXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdFx0PGRpdiBjbGFzcz1cImdyb3Vwc1wiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5ncm91cHN9XCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlckdyb3Vwc1wiIDpvcHRpb25zPVwiZ3JvdXBzXCIgOmRpc2FibGVkPVwibG9hZGluZy5ncm91cHN8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCB0YWctcGxhY2Vob2xkZXI9XCJjcmVhdGVcIiA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdBZGQgdXNlciBpbiBncm91cCcpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDpsaW1pdD1cIjJcIiA6bGltaXRUZXh0PVwibGltaXRHcm91cHNcIlxuXHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6dGFnZ2FibGU9XCJ0cnVlXCIgOmNsb3NlT25TZWxlY3Q9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHQgQHRhZz1cImNyZWF0ZUdyb3VwXCIgQHNlbGVjdD1cImFkZFVzZXJHcm91cFwiIEByZW1vdmU9XCJyZW1vdmVVc2VyR3JvdXBcIj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuc3ViYWRtaW5zfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJTdWJBZG1pbnNHcm91cHNcIiA6b3B0aW9ucz1cInN1YkFkbWluc0dyb3Vwc1wiIDpkaXNhYmxlZD1cImxvYWRpbmcuc3ViYWRtaW5zfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2V0IHVzZXIgYXMgYWRtaW4gZm9yJylcIlxuXHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmxpbWl0PVwiMlwiIDpsaW1pdFRleHQ9XCJsaW1pdEdyb3Vwc1wiXG5cdFx0XHRcdFx0XHQgOm11bHRpcGxlPVwidHJ1ZVwiIDpjbG9zZU9uU2VsZWN0PVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0IEBzZWxlY3Q9XCJhZGRVc2VyU3ViQWRtaW5cIiBAcmVtb3ZlPVwicmVtb3ZlVXNlclN1YkFkbWluXCI+XG5cdFx0XHRcdDxzcGFuIHNsb3Q9XCJub1Jlc3VsdFwiPnt7dCgnc2V0dGluZ3MnLCdObyByZXN1bHQnKX19PC9zcGFuPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcucXVvdGF9XCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlclF1b3RhXCIgOm9wdGlvbnM9XCJxdW90YU9wdGlvbnNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLnF1b3RhfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgdGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJsYWJlbFwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmFsbG93RW1wdHk9XCJmYWxzZVwiIDp0YWdnYWJsZT1cInRydWVcIlxuXHRcdFx0XHRcdFx0IEB0YWc9XCJ2YWxpZGF0ZVF1b3RhXCIgQGlucHV0PVwic2V0VXNlclF1b3RhXCI+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PHByb2dyZXNzIGNsYXNzPVwicXVvdGEtdXNlci1wcm9ncmVzc1wiIDpjbGFzcz1cInsnd2Fybic6dXNlZFF1b3RhPjgwfVwiIDp2YWx1ZT1cInVzZWRRdW90YVwiIG1heD1cIjEwMFwiPjwvcHJvZ3Jlc3M+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImxhbmd1YWdlc1wiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5sYW5ndWFnZXN9XCJcblx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93TGFuZ3VhZ2VzXCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlckxhbmd1YWdlXCIgOm9wdGlvbnM9XCJsYW5ndWFnZXNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLmxhbmd1YWdlc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ05vIGxhbmd1YWdlIHNldCcpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImNvZGVcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmFsbG93RW1wdHk9XCJmYWxzZVwiIGdyb3VwLXZhbHVlcz1cImxhbmd1YWdlc1wiIGdyb3VwLWxhYmVsPVwibGFiZWxcIlxuXHRcdFx0XHRcdFx0IEBpbnB1dD1cInNldFVzZXJMYW5ndWFnZVwiPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic3RvcmFnZUxvY2F0aW9uXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXCI+e3t1c2VyLnN0b3JhZ2VMb2NhdGlvbn19PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInVzZXJCYWNrZW5kXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXCI+e3t1c2VyLmJhY2tlbmR9fTwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJsYXN0TG9naW5cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93TGFzdExvZ2luXCIgOnRpdGxlPVwidXNlci5sYXN0TG9naW4+MCA/IE9DLlV0aWwuZm9ybWF0RGF0ZSh1c2VyLmxhc3RMb2dpbikgOiAnJ1wiPlxuXHRcdFx0e3t1c2VyLmxhc3RMb2dpbj4wID8gT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZSh1c2VyLmxhc3RMb2dpbikgOiB0KCdzZXR0aW5ncycsJ05ldmVyJyl9fVxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZVVzZXJBY3Rpb25zXCIgdi1pZj1cIk9DLmN1cnJlbnRVc2VyICE9PSB1c2VyLmlkICYmIHVzZXIuaWQgIT09ICdhZG1pbicgJiYgIWxvYWRpbmcuYWxsXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLW1vcmVcIiB2LWNsaWNrLW91dHNpZGU9XCJoaWRlTWVudVwiIEBjbGljaz1cInNob3dNZW51XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwb3BvdmVybWVudVwiIDpjbGFzcz1cInsgJ29wZW4nOiBvcGVuZWRNZW51IH1cIj5cblx0XHRcdFx0XHQ8cG9wb3Zlci1tZW51IDptZW51PVwidXNlckFjdGlvbnNcIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBwb3BvdmVyTWVudSBmcm9tICcuLi9wb3BvdmVyTWVudSc7XG5pbXBvcnQgQ2xpY2tPdXRzaWRlIGZyb20gJ3Z1ZS1jbGljay1vdXRzaWRlJztcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICd2dWUtbXVsdGlzZWxlY3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICd1c2VyUm93Jyxcblx0cHJvcHM6IFsndXNlcicsICdzZXR0aW5ncycsICdncm91cHMnLCAnc3ViQWRtaW5zR3JvdXBzJywgJ3F1b3RhT3B0aW9ucycsICdzaG93Q29uZmlnJ10sXG5cdGNvbXBvbmVudHM6IHtcblx0XHRwb3BvdmVyTWVudSxcblx0XHRNdWx0aXNlbGVjdFxuXHR9LFxuXHRkaXJlY3RpdmVzOiB7XG5cdFx0Q2xpY2tPdXRzaWRlXG5cdH0sXG5cdG1vdW50ZWQoKSB7XG5cdFx0Ly8gcmVxdWlyZWQgaWYgcG9wdXAgbmVlZHMgdG8gc3RheSBvcGVuZWQgYWZ0ZXIgbWVudSBjbGlja1xuXHRcdC8vIHNpbmNlIHdlIG9ubHkgaGF2ZSBkaXNhYmxlL2RlbGV0ZSBhY3Rpb25zLCBsZXQncyBjbG9zZSBpdCBkaXJlY3RseVxuXHRcdC8vIHRoaXMucG9wdXBJdGVtID0gdGhpcy4kZWw7XG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJhbmQ6IHBhcnNlSW50KE1hdGgucmFuZG9tKCkgKiAxMDAwKSxcblx0XHRcdG9wZW5lZE1lbnU6IGZhbHNlLFxuXHRcdFx0bG9hZGluZzoge1xuXHRcdFx0XHRhbGw6IGZhbHNlLFxuXHRcdFx0XHRkaXNwbGF5TmFtZTogZmFsc2UsXG5cdFx0XHRcdHBhc3N3b3JkOiBmYWxzZSxcblx0XHRcdFx0bWFpbEFkZHJlc3M6IGZhbHNlLFxuXHRcdFx0XHRncm91cHM6IGZhbHNlLFxuXHRcdFx0XHRzdWJhZG1pbnM6IGZhbHNlLFxuXHRcdFx0XHRxdW90YTogZmFsc2UsXG5cdFx0XHRcdGRlbGV0ZTogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGU6IGZhbHNlLFxuXHRcdFx0XHRsYW5ndWFnZXM6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRjb21wdXRlZDoge1xuXHRcdC8qIFVTRVIgUE9QT1ZFUk1FTlUgQUNUSU9OUyAqL1xuXHRcdHVzZXJBY3Rpb25zKCkge1xuXHRcdFx0cmV0dXJuIFt7XG5cdFx0XHRcdGljb246ICdpY29uLWRlbGV0ZScsXG5cdFx0XHRcdHRleHQ6IHQoJ3NldHRpbmdzJywnRGVsZXRlIHVzZXInKSxcblx0XHRcdFx0YWN0aW9uOiB0aGlzLmRlbGV0ZVVzZXJcblx0XHRcdH0se1xuXHRcdFx0XHQnaWNvbic6IHRoaXMudXNlci5lbmFibGVkID8gJ2ljb24tY2xvc2UnIDogJ2ljb24tYWRkJyxcblx0XHRcdFx0J3RleHQnOiB0aGlzLnVzZXIuZW5hYmxlZCA/IHQoJ3NldHRpbmdzJywnRGlzYWJsZSB1c2VyJykgOiB0KCdzZXR0aW5ncycsJ0VuYWJsZSB1c2VyJyksXG5cdFx0XHRcdCdhY3Rpb24nOiB0aGlzLmVuYWJsZURpc2FibGVVc2VyXG5cdFx0XHR9XVxuXHRcdH0sXG5cblx0XHQvKiBHUk9VUFMgTUFOQUdFTUVOVCAqL1xuXHRcdHVzZXJHcm91cHMoKSB7XG5cdFx0XHRsZXQgdXNlckdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLnVzZXIuZ3JvdXBzLmluY2x1ZGVzKGdyb3VwLmlkKSk7XG5cdFx0XHRyZXR1cm4gdXNlckdyb3Vwcztcblx0XHR9LFxuXHRcdHVzZXJTdWJBZG1pbnNHcm91cHMoKSB7XG5cdFx0XHRsZXQgdXNlclN1YkFkbWluc0dyb3VwcyA9IHRoaXMuc3ViQWRtaW5zR3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLnVzZXIuc3ViYWRtaW4uaW5jbHVkZXMoZ3JvdXAuaWQpKTtcblx0XHRcdHJldHVybiB1c2VyU3ViQWRtaW5zR3JvdXBzO1xuXHRcdH0sXG5cblx0XHQvKiBRVU9UQSBNQU5BR0VNRU5UICovXG5cdFx0dXNlZFF1b3RhKCkge1xuXHRcdFx0bGV0IHF1b3RhID0gdGhpcy51c2VyLnF1b3RhLnF1b3RhO1xuXHRcdFx0aWYgKHF1b3RhID4gMCkge1xuXHRcdFx0XHRxdW90YSA9IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCh0aGlzLnVzZXIucXVvdGEudXNlZCAvIHF1b3RhICogMTAwKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgdXNlZEluR0IgPSB0aGlzLnVzZXIucXVvdGEudXNlZCAvICgxMCAqIE1hdGgucG93KDIsIDMwKSk7XG5cdFx0XHRcdC8vYXN5bXB0b3RpYyBjdXJ2ZSBhcHByb2FjaGluZyA1MCUgYXQgMTBHQiB0byB2aXN1YWxpemUgdXNlZCBzdGFjZSB3aXRoIGluZmluaXRlIHF1b3RhXG5cdFx0XHRcdHF1b3RhID0gOTUgKiAoMSAtICgxIC8gKHVzZWRJbkdCICsgMSkpKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpc05hTihxdW90YSkgPyAwIDogcXVvdGE7XG5cdFx0fSxcblx0XHQvLyBNYXBwaW5nIHNhdmVkIHZhbHVlcyB0byBvYmplY3RzXG5cdFx0dXNlclF1b3RhKCkge1xuXHRcdFx0aWYgKHRoaXMudXNlci5xdW90YS5xdW90YSA+IDApIHtcblx0XHRcdFx0Ly8gaWYgdmFsdWUgaXMgdmFsaWQsIGxldCdzIG1hcCB0aGUgcXVvdGFPcHRpb25zIG9yIHJldHVybiBjdXN0b20gcXVvdGFcblx0XHRcdFx0bGV0IGh1bWFuUXVvdGEgPSBPQy5VdGlsLmh1bWFuRmlsZVNpemUodGhpcy51c2VyLnF1b3RhLnF1b3RhKTtcblx0XHRcdFx0bGV0IHVzZXJRdW90YSA9IHRoaXMucXVvdGFPcHRpb25zLmZpbmQocXVvdGEgPT4gcXVvdGEuaWQgPT09IGh1bWFuUXVvdGEpO1xuXHRcdFx0XHRyZXR1cm4gdXNlclF1b3RhID8gdXNlclF1b3RhIDoge2lkOmh1bWFuUXVvdGEsIGxhYmVsOmh1bWFuUXVvdGF9O1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnVzZXIucXVvdGEucXVvdGEgPT09IDAgfHwgdGhpcy51c2VyLnF1b3RhLnF1b3RhID09PSAnZGVmYXVsdCcpIHtcblx0XHRcdFx0Ly8gZGVmYXVsdCBxdW90YSBpcyByZXBsYWNlZCBieSB0aGUgcHJvcGVyIHZhbHVlIG9uIGxvYWRcblx0XHRcdFx0cmV0dXJuIHRoaXMucXVvdGFPcHRpb25zWzBdO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMucXVvdGFPcHRpb25zWzFdOyAvLyB1bmxpbWl0ZWRcblx0XHR9LFxuXG5cdFx0LyogUEFTU1dPUkQgUE9MSUNZPyAqL1xuXHRcdG1pblBhc3N3b3JkTGVuZ3RoKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGg7XG5cdFx0fSxcblxuXHRcdC8qIExBTkdVQUdFUyAqL1xuXHRcdGxhbmd1YWdlcygpIHtcblx0XHRcdHJldHVybiBBcnJheShcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB0KCdzZXR0aW5ncycsICdDb21tb24gbGFuZ3VhZ2VzJyksXG5cdFx0XHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmxhbmd1YWdlcy5jb21tb25sYW5ndWFnZXNcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB0KCdzZXR0aW5ncycsICdBbGwgbGFuZ3VhZ2VzJyksXG5cdFx0XHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmxhbmd1YWdlcy5sYW5ndWFnZXNcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdHVzZXJMYW5ndWFnZSgpIHtcblx0XHRcdGxldCBhdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlc1swXS5sYW5ndWFnZXMuY29uY2F0KHRoaXMubGFuZ3VhZ2VzWzFdLmxhbmd1YWdlcyk7XG5cdFx0XHRsZXQgdXNlckxhbmcgPSBhdmFpbGFibGVMYW5ndWFnZXMuZmluZChsYW5nID0+IGxhbmcuY29kZSA9PT0gdGhpcy51c2VyLmxhbmd1YWdlKTtcblx0XHRcdGlmICh0eXBlb2YgdXNlckxhbmcgIT09ICdvYmplY3QnICYmIHRoaXMudXNlci5sYW5ndWFnZSAhPT0gJycpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRjb2RlOiB0aGlzLnVzZXIubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0bmFtZTogdGhpcy51c2VyLmxhbmd1YWdlXG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZih0aGlzLnVzZXIubGFuZ3VhZ2UgPT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB1c2VyTGFuZztcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHQvKiBNRU5VIEhBTkRMSU5HICovXG5cdFx0c2hvd01lbnUgKCkge1xuXHRcdFx0dGhpcy5vcGVuZWRNZW51ID0gdHJ1ZTtcblx0XHR9LFxuXHRcdGhpZGVNZW51ICgpIHtcblx0XHRcdHRoaXMub3BlbmVkTWVudSA9IGZhbHNlO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBHZW5lcmF0ZSBhdmF0YXIgdXJsXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHVzZXIgVGhlIHVzZXIgbmFtZVxuXHRcdCAqIEBwYXJhbSB7aW50fSBzaXplIFNpemUgaW50ZWdlciwgZGVmYXVsdCAzMlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Z2VuZXJhdGVBdmF0YXIodXNlciwgc2l6ZT0zMikge1xuXHRcdFx0cmV0dXJuIE9DLmdlbmVyYXRlVXJsKFxuXHRcdFx0XHQnL2F2YXRhci97dXNlcn0ve3NpemV9P3Y9e3ZlcnNpb259Jyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVzZXI6IHVzZXIsXG5cdFx0XHRcdFx0c2l6ZTogc2l6ZSxcblx0XHRcdFx0XHR2ZXJzaW9uOiBvY191c2VyY29uZmlnLmF2YXRhci52ZXJzaW9uXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSxcblxuXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0IHRoZSBsaW1pdCB0ZXh0IGluIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtpbnR9IGNvdW50IGVsZW1lbnRzIGxlZnRcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGxpbWl0R3JvdXBzKGNvdW50KSB7XG5cdFx0XHRyZXR1cm4gJysnK2NvdW50O1xuXHRcdH0sXG5cblx0XHRkZWxldGVVc2VyKCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RlbGV0ZVVzZXInLCB7dXNlcmlkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0ZW5hYmxlRGlzYWJsZVVzZXIoKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlID0gdHJ1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBlbmFibGVkID0gIXRoaXMudXNlci5lbmFibGVkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdlbmFibGVEaXNhYmxlVXNlcicsIHt1c2VyaWQsIGVuYWJsZWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IGZhbHNlXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLmFsbCA9IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTZXQgdXNlciBkaXNwbGF5TmFtZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwbGF5TmFtZSBUaGUgZGlzcGxheSBuYW1lXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0dXBkYXRlRGlzcGxheU5hbWUoKSB7XG5cdFx0XHRsZXQgZGlzcGxheU5hbWUgPSB0aGlzLiRyZWZzLmRpc3BsYXlOYW1lLnZhbHVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRpc3BsYXlOYW1lID0gdHJ1ZTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzZXRVc2VyRGF0YScsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLnVzZXIuaWQsIFxuXHRcdFx0XHRrZXk6ICdkaXNwbGF5bmFtZScsXG5cdFx0XHRcdHZhbHVlOiBkaXNwbGF5TmFtZVxuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5kaXNwbGF5TmFtZSA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLmRpc3BsYXlOYW1lLnZhbHVlID0gZGlzcGxheU5hbWU7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgcGFzc3dvcmRcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQgVGhlIGVtYWlsIGFkcmVzc1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZVBhc3N3b3JkKCkge1xuXHRcdFx0bGV0IHBhc3N3b3JkID0gdGhpcy4kcmVmcy5wYXNzd29yZC52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5wYXNzd29yZCA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLFxuXHRcdFx0XHRrZXk6ICdwYXNzd29yZCcsXG5cdFx0XHRcdHZhbHVlOiBwYXNzd29yZFxuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5wYXNzd29yZCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLnBhc3N3b3JkLnZhbHVlID0gJyc7IC8vIGVtcHR5ICYgc2hvdyBwbGFjZWhvbGRlciBcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTZXQgdXNlciBtYWlsQWRkcmVzc1xuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBtYWlsQWRkcmVzcyBUaGUgZW1haWwgYWRyZXNzXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0dXBkYXRlRW1haWwoKSB7XG5cdFx0XHRsZXQgbWFpbEFkZHJlc3MgPSB0aGlzLiRyZWZzLm1haWxBZGRyZXNzLnZhbHVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLm1haWxBZGRyZXNzID0gdHJ1ZTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzZXRVc2VyRGF0YScsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLnVzZXIuaWQsXG5cdFx0XHRcdGtleTogJ2VtYWlsJyxcblx0XHRcdFx0dmFsdWU6IG1haWxBZGRyZXNzXG5cdFx0XHR9KS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nLm1haWxBZGRyZXNzID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuJHJlZnMubWFpbEFkZHJlc3MudmFsdWUgPSBtYWlsQWRkcmVzcztcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBDcmVhdGUgYSBuZXcgZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBzIEdyb3VwIGlkXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0Y3JlYXRlR3JvdXAoZ2lkKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB7Z3JvdXBzOnRydWUsIHN1YmFkbWluczp0cnVlfVxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZEdyb3VwJywgZ2lkKS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0ge2dyb3VwczpmYWxzZSwgc3ViYWRtaW5zOmZhbHNlfTtcblx0XHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRHcm91cHNbdGhpcy5ncm91cHMubGVuZ3RoXTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQWRkIHVzZXIgdG8gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0YWRkVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0cmVtb3ZlVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JlbW92ZVVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGFkZFVzZXJTdWJBZG1pbihncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyU3ViQWRtaW4nLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBSZW1vdmUgdXNlciBmcm9tIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZVVzZXJTdWJBZG1pbihncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdyZW1vdmVVc2VyU3ViQWRtaW4nLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBEaXNwYXRjaCBxdW90YSBzZXQgcmVxdWVzdFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJyBvciBPYmplY3Qge2lkOiAnNSBHQicsIGxhYmVsOiAnNUdCJ31cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHNldFVzZXJRdW90YShxdW90YSA9ICdub25lJykge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnF1b3RhID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0cXVvdGEgPSBxdW90YS5pZCA/IHF1b3RhLmlkIDogcXVvdGE7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAncXVvdGEnLFxuXHRcdFx0XHR2YWx1ZTogcXVvdGFcblx0XHRcdH0pLnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnF1b3RhID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIHF1b3RhO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBWYWxpZGF0ZSBxdW90YSBzdHJpbmcgdG8gbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBodW1hbiBmaWxlIHNpemVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJ1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfGJvb2xlYW59XG5cdFx0ICovXG5cdFx0dmFsaWRhdGVRdW90YShxdW90YSkge1xuXHRcdFx0Ly8gb25seSB1c2VkIGZvciBuZXcgcHJlc2V0cyBzZW50IHRocm91Z2ggQFRhZ1xuXHRcdFx0bGV0IHZhbGlkUXVvdGEgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpO1xuXHRcdFx0aWYgKHZhbGlkUXVvdGEgPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0VXNlclF1b3RhKCdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbGlkUXVvdGEgIT09IG51bGwpIHtcblx0XHRcdFx0Ly8gdW5pZnkgZm9ybWF0IG91dHB1dFxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRVc2VyUXVvdGEoT0MuVXRpbC5odW1hbkZpbGVTaXplKE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSkpKTtcblx0XHRcdH1cblx0XHRcdC8vIGlmIG5vIHZhbGlkIGRvbyBub3QgY2hhbmdlXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERpc3BhdGNoIGxhbmd1YWdlIHNldCByZXF1ZXN0XG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGxhbmcgbGFuZ3VhZ2Ugb2JqZWN0IHtjb2RlOidlbicsIG5hbWU6J0VuZ2xpc2gnfVxuXHRcdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0c2V0VXNlckxhbmd1YWdlKGxhbmcpIHtcblx0XHRcdHRoaXMubG9hZGluZy5sYW5ndWFnZXMgPSB0cnVlO1xuXHRcdFx0Ly8gZW5zdXJlIHdlIG9ubHkgc2VuZCB0aGUgcHJlc2V0IGlkXG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAnbGFuZ3VhZ2UnLFxuXHRcdFx0XHR2YWx1ZTogbGFuZy5jb2RlXG5cdFx0XHR9KS50aGVuKCgpID0+IHRoaXMubG9hZGluZy5sYW5ndWFnZXMgPSBmYWxzZSk7XG5cdFx0XHRyZXR1cm4gbGFuZztcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///15\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popoverMenu__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_click_outside__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_multiselect__);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages'],\n\tcomponents: {\n\t\tpopoverMenu: __WEBPACK_IMPORTED_MODULE_0__popoverMenu__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default.a\n\t},\n\tdirectives: {\n\t\tClickOutside: __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default.a\n\t},\n\tmounted: function mounted() {\n\t\t// required if popup needs to stay opened after menu click\n\t\t// since we only have disable/delete actions, let's close it directly\n\t\t// this.popupItem = this.$el;\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false\n\t\t\t}\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions: function userActions() {\n\t\t\treturn [{\n\t\t\t\ticon: 'icon-delete',\n\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\taction: this.deleteUser\n\t\t\t}, {\n\t\t\t\t'icon': this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t'text': this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t'action': this.enableDisableUser\n\t\t\t}];\n\t\t},\n\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups: function userGroups() {\n\t\t\tvar _this = this;\n\n\t\t\tvar userGroups = this.groups.filter(function (group) {\n\t\t\t\treturn _this.user.groups.includes(group.id);\n\t\t\t});\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups: function userSubAdminsGroups() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n\t\t\t\treturn _this2.user.subadmin.includes(group.id);\n\t\t\t});\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedQuota: function usedQuota() {\n\t\t\tvar quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - 1 / (usedInGB + 1));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota: function userQuota() {\n\t\t\tif (this.user.quota.quota > 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tvar humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tvar userQuota = this.quotaOptions.find(function (quota) {\n\t\t\t\t\treturn quota.id === humanQuota;\n\t\t\t\t});\n\t\t\t\treturn userQuota ? userQuota : { id: humanQuota, label: humanQuota };\n\t\t\t} else if (this.user.quota.quota === 0 || this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage: function userLanguage() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n\t\t\tvar userLang = availableLanguages.find(function (lang) {\n\t\t\t\treturn lang.code === _this3.user.language;\n\t\t\t});\n\t\t\tif ((typeof userLang === 'undefined' ? 'undefined' : _typeof(userLang)) !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language\n\t\t\t\t};\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn userLang;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\tshowMenu: function showMenu() {\n\t\t\tthis.openedMenu = true;\n\t\t},\n\t\thideMenu: function hideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\n\t\t/**\n * Generate avatar url\n * \n * @param {string} user The user name\n * @param {int} size Size integer, default 32\n * @returns {string}\n */\n\t\tgenerateAvatar: function generateAvatar(user) {\n\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n\n\t\t\treturn OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n\t\t\t\tuser: user,\n\t\t\t\tsize: size,\n\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Format the limit text in the selected options\n * \n * @param {int} count elements left\n * @returns {string}\n */\n\t\tlimitGroups: function limitGroups(count) {\n\t\t\treturn '+' + count;\n\t\t},\n\t\tdeleteUser: function deleteUser() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', { userid: userid }).then(function () {\n\t\t\t\t_this4.loading.delete = false;\n\t\t\t\t_this4.loading.all = false;\n\t\t\t});\n\t\t},\n\t\tenableDisableUser: function enableDisableUser() {\n\t\t\tvar _this5 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', { userid: userid, enabled: enabled }).then(function () {\n\t\t\t\t_this5.loading.delete = false;\n\t\t\t\t_this5.loading.all = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user displayName\n * \n * @param {string} displayName The display name\n * @returns {Promise}\n */\n\t\tupdateDisplayName: function updateDisplayName() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(function () {\n\t\t\t\t_this6.loading.displayName = false;\n\t\t\t\t_this6.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user password\n * \n * @param {string} password The email adress\n * @returns {Promise}\n */\n\t\tupdatePassword: function updatePassword() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(function () {\n\t\t\t\t_this7.loading.password = false;\n\t\t\t\t_this7.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user mailAddress\n * \n * @param {string} mailAddress The email adress\n * @returns {Promise}\n */\n\t\tupdateEmail: function updateEmail() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(function () {\n\t\t\t\t_this8.loading.mailAddress = false;\n\t\t\t\t_this8.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Create a new group\n * \n * @param {string} groups Group id\n * @returns {Promise}\n */\n\t\tcreateGroup: function createGroup(gid) {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.loading = { groups: true, subadmins: true };\n\t\t\tthis.$store.dispatch('addGroup', gid).then(function () {\n\t\t\t\t_this9.loading = { groups: false, subadmins: false };\n\t\t\t\tvar userid = _this9.user.id;\n\t\t\t\t_this9.$store.dispatch('addUserGroup', { userid: userid, gid: gid });\n\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserGroup: function addUserGroup(group) {\n\t\t\tvar _this10 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this10.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserGroup: function removeUserGroup(group) {\n\t\t\tvar _this11 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this11.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserSubAdmin: function addUserSubAdmin(group) {\n\t\t\tvar _this12 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this12.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserSubAdmin: function removeUserSubAdmin(group) {\n\t\t\tvar _this13 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this13.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Dispatch quota set request\n * \n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n * @returns {string}\n */\n\t\tsetUserQuota: function setUserQuota() {\n\t\t\tvar _this14 = this;\n\n\t\t\tvar quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(function () {\n\t\t\t\treturn _this14.loading.quota = false;\n\t\t\t});\n\t\t\treturn quota;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Promise|boolean}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === 0) {\n\t\t\t\treturn this.setUserQuota('none');\n\t\t\t} else if (validQuota !== null) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid doo not change\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n * Dispatch language set request\n * \n * @param {Object} lang language object {code:'en', name:'English'}\n * @returns {Object}\n */\n\t\tsetUserLanguage: function setUserLanguage(lang) {\n\t\t\tvar _this15 = this;\n\n\t\t\tthis.loading.languages = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: lang.code\n\t\t\t}).then(function () {\n\t\t\t\treturn _this15.loading.languages = false;\n\t\t\t});\n\t\t\treturn lang;\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QvdXNlclJvdy52dWU/Mjg4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFGQTtBQUNBO0FBQ0E7O0FBRUE7T0FFQTt3RkFDQTs7QUFFQTtBQUVBO0FBSEE7O0FBTUE7QUFGQTs2QkFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO3VCQUNBOztrQ0FFQTtlQUNBOztTQUVBO2lCQUNBO2NBQ0E7aUJBQ0E7WUFDQTtlQUNBO1dBQ0E7WUFDQTthQUNBO2VBR0E7QUFaQTtBQUhBO0FBZ0JBOzs7QUFFQTtzQ0FDQTs7VUFFQTt3QkFDQTtpQkFDQTtBQUhBOytDQUtBOzhFQUNBO21CQUVBO0FBSkE7QUFNQTs7O0FBQ0E7O0FBQ0E7Ozs0Q0FDQTs7VUFDQTtBQUNBOztBQUNBOzs7K0NBQ0E7O1VBQ0E7QUFFQTs7O0FBQ0E7a0NBQ0E7K0JBQ0E7a0JBQ0E7b0VBQ0E7VUFDQTs0REFDQTtBQUNBO3NDQUNBO0FBQ0E7NkJBQ0E7QUFDQTs7QUFDQTs7a0NBRUE7QUFDQTsyREFDQTs7eUJBQ0E7OzREQUNBO2tGQUNBO0FBQ0E7NkJBQ0E7QUFDQTsrQkFUQSxDQVVBO0FBRUE7OztBQUNBO2tEQUNBOzhCQUNBO0FBRUE7OztBQUNBOztBQUNBOztpRkFDQTs7cUNBQ0E7O3NIQUNBOztxQkFFQTtxQkFFQTtBQUhBO3lDQUlBO1dBQ0E7QUFDQTtVQUNBO0FBRUE7QUFyRUE7O0FBdUVBO2dDQUNBO3FCQUNBO0FBQ0E7Z0NBQ0E7cUJBQ0E7QUFFQTs7O0FBT0E7Ozs7Ozs7O0FBQ0E7O2FBQ0EsWUFDQTtVQUVBO1VBQ0E7a0NBR0E7QUFMQTtBQVFBOzs7QUFNQTs7Ozs7OzJDQUNBO2dCQUNBO0FBRUE7O0FBQ0E7O3lCQUNBO3NCQUNBOzBCQUNBOytDQUNBLG1DQUNBOzRCQUNBO3lCQUNBO0FBQ0E7QUFFQTs7QUFDQTs7eUJBQ0E7c0JBQ0E7MEJBQ0E7NEJBQ0E7c0VBQ0EscUNBQ0E7NEJBQ0E7eUJBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0Q0FDQTs4QkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7aUNBQ0E7cUNBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOztzQ0FDQTsyQkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7OEJBQ0E7c0NBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0Q0FDQTs4QkFDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEEsdUJBSUE7aUNBQ0E7cUNBQ0E7QUFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs2Q0FDQTswREFDQTtpREFDQTs2QkFDQTs2REFDQTtBQUNBO29EQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3lCQUNBOzBCQUNBO21CQUNBO2lFQUNBO29DQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzt5QkFDQTswQkFDQTttQkFDQTtvRUFDQTtvQ0FDQTs7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7MEJBQ0E7bUJBQ0E7b0VBQ0E7dUNBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRCQUNBOzBCQUNBO21CQUNBO3VFQUNBO3VDQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs7O3dCQUNBO0FBQ0E7aUNBQ0E7O3NCQUVBO1NBQ0E7V0FDQTtBQUhBO21DQUlBOztVQUNBO0FBRUE7OztBQU1BOzs7Ozs7K0NBQ0E7QUFDQTs2Q0FDQTt5QkFDQTs2QkFDQTttQ0FDQTtBQUNBOzRFQUNBO0FBQ0E7QUFDQTtVQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRCQUNBO0FBQ0E7O3NCQUVBO1NBQ0E7Z0JBQ0E7QUFIQTt1Q0FJQTs7VUFDQTtBQUVBO0FBblBBO0FBdkdBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGNsYXNzPVwicm93XCIgOmNsYXNzPVwieydkaXNhYmxlZCc6IGxvYWRpbmcuZGVsZXRlIHx8IGxvYWRpbmcuZGlzYWJsZX1cIj5cblx0XHQ8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLmRlbGV0ZSB8fCBsb2FkaW5nLmRpc2FibGV9XCI+XG5cdFx0XHQ8aW1nIGFsdD1cIlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIDpzcmM9XCJnZW5lcmF0ZUF2YXRhcih1c2VyLmlkLCAzMilcIlxuXHRcdFx0XHQgOnNyY3NldD1cImdlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDY0KSsnIDJ4LCAnK2dlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDEyOCkrJyA0eCdcIlxuXHRcdFx0XHQgdi1pZj1cIiFsb2FkaW5nLmRlbGV0ZSAmJiAhbG9hZGluZy5kaXNhYmxlXCI+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cIm5hbWVcIj57e3VzZXIuaWR9fTwvZGl2PlxuXHRcdDxmb3JtIGNsYXNzPVwiZGlzcGxheU5hbWVcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuZGlzcGxheU5hbWV9XCIgdi1vbjpzdWJtaXQucHJldmVudD1cInVwZGF0ZURpc3BsYXlOYW1lXCI+XG5cdFx0XHQ8aW5wdXQgOmlkPVwiJ2Rpc3BsYXlOYW1lJyt1c2VyLmlkK3JhbmRcIiB0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwibG9hZGluZy5kaXNwbGF5TmFtZXx8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdDp2YWx1ZT1cInVzZXIuZGlzcGxheW5hbWVcIiByZWY9XCJkaXNwbGF5TmFtZVwiXG5cdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIC8+XG5cdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaWNvbi1jb25maXJtXCIgdmFsdWU9XCJcIiAvPlxuXHRcdDwvZm9ybT5cblx0XHQ8Zm9ybSBjbGFzcz1cInBhc3N3b3JkXCIgdi1pZj1cInNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnBhc3N3b3JkfVwiXG5cdFx0XHQgIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVQYXNzd29yZFwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidwYXNzd29yZCcrdXNlci5pZCtyYW5kXCIgdHlwZT1cInBhc3N3b3JkXCIgcmVxdWlyZWRcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJsb2FkaW5nLnBhc3N3b3JkfHxsb2FkaW5nLmFsbFwiIDptaW5sZW5ndGg9XCJtaW5QYXNzd29yZExlbmd0aFwiXG5cdFx0XHRcdFx0dmFsdWU9XCJcIiA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdOZXcgcGFzc3dvcmQnKVwiIHJlZj1cInBhc3N3b3JkXCJcblx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cblx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpY29uLWNvbmZpcm1cIiB2YWx1ZT1cIlwiIC8+XG5cdFx0PC9mb3JtPlxuXHRcdDxkaXYgdi1lbHNlPjwvZGl2PlxuXHRcdDxmb3JtIGNsYXNzPVwibWFpbEFkZHJlc3NcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcubWFpbEFkZHJlc3N9XCIgdi1vbjpzdWJtaXQucHJldmVudD1cInVwZGF0ZUVtYWlsXCI+XG5cdFx0XHQ8aW5wdXQgOmlkPVwiJ21haWxBZGRyZXNzJyt1c2VyLmlkK3JhbmRcIiB0eXBlPVwiZW1haWxcIlxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cImxvYWRpbmcubWFpbEFkZHJlc3N8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHQ6dmFsdWU9XCJ1c2VyLmVtYWlsXCIgcmVmPVwibWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiAvPlxuXHRcdFx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImljb24tY29uZmlybVwiIHZhbHVlPVwiXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdFx0PGRpdiBjbGFzcz1cImdyb3Vwc1wiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5ncm91cHN9XCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlckdyb3Vwc1wiIDpvcHRpb25zPVwiZ3JvdXBzXCIgOmRpc2FibGVkPVwibG9hZGluZy5ncm91cHN8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCB0YWctcGxhY2Vob2xkZXI9XCJjcmVhdGVcIiA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdBZGQgdXNlciBpbiBncm91cCcpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDpsaW1pdD1cIjJcIiA6bGltaXRUZXh0PVwibGltaXRHcm91cHNcIlxuXHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6dGFnZ2FibGU9XCJ0cnVlXCIgOmNsb3NlT25TZWxlY3Q9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHQgQHRhZz1cImNyZWF0ZUdyb3VwXCIgQHNlbGVjdD1cImFkZFVzZXJHcm91cFwiIEByZW1vdmU9XCJyZW1vdmVVc2VyR3JvdXBcIj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuc3ViYWRtaW5zfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJTdWJBZG1pbnNHcm91cHNcIiA6b3B0aW9ucz1cInN1YkFkbWluc0dyb3Vwc1wiIDpkaXNhYmxlZD1cImxvYWRpbmcuc3ViYWRtaW5zfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2V0IHVzZXIgYXMgYWRtaW4gZm9yJylcIlxuXHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmxpbWl0PVwiMlwiIDpsaW1pdFRleHQ9XCJsaW1pdEdyb3Vwc1wiXG5cdFx0XHRcdFx0XHQgOm11bHRpcGxlPVwidHJ1ZVwiIDpjbG9zZU9uU2VsZWN0PVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0IEBzZWxlY3Q9XCJhZGRVc2VyU3ViQWRtaW5cIiBAcmVtb3ZlPVwicmVtb3ZlVXNlclN1YkFkbWluXCI+XG5cdFx0XHRcdDxzcGFuIHNsb3Q9XCJub1Jlc3VsdFwiPnt7dCgnc2V0dGluZ3MnLCdObyByZXN1bHQnKX19PC9zcGFuPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcucXVvdGF9XCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlclF1b3RhXCIgOm9wdGlvbnM9XCJxdW90YU9wdGlvbnNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLnF1b3RhfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgdGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJsYWJlbFwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmFsbG93RW1wdHk9XCJmYWxzZVwiIDp0YWdnYWJsZT1cInRydWVcIlxuXHRcdFx0XHRcdFx0IEB0YWc9XCJ2YWxpZGF0ZVF1b3RhXCIgQGlucHV0PVwic2V0VXNlclF1b3RhXCI+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PHByb2dyZXNzIGNsYXNzPVwicXVvdGEtdXNlci1wcm9ncmVzc1wiIDpjbGFzcz1cInsnd2Fybic6dXNlZFF1b3RhPjgwfVwiIDp2YWx1ZT1cInVzZWRRdW90YVwiIG1heD1cIjEwMFwiPjwvcHJvZ3Jlc3M+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImxhbmd1YWdlc1wiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5sYW5ndWFnZXN9XCJcblx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93TGFuZ3VhZ2VzXCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlckxhbmd1YWdlXCIgOm9wdGlvbnM9XCJsYW5ndWFnZXNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLmxhbmd1YWdlc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ05vIGxhbmd1YWdlIHNldCcpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImNvZGVcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmFsbG93RW1wdHk9XCJmYWxzZVwiIGdyb3VwLXZhbHVlcz1cImxhbmd1YWdlc1wiIGdyb3VwLWxhYmVsPVwibGFiZWxcIlxuXHRcdFx0XHRcdFx0IEBpbnB1dD1cInNldFVzZXJMYW5ndWFnZVwiPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic3RvcmFnZUxvY2F0aW9uXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXCI+e3t1c2VyLnN0b3JhZ2VMb2NhdGlvbn19PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInVzZXJCYWNrZW5kXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXCI+e3t1c2VyLmJhY2tlbmR9fTwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJsYXN0TG9naW5cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93TGFzdExvZ2luXCIgOnRpdGxlPVwidXNlci5sYXN0TG9naW4+MCA/IE9DLlV0aWwuZm9ybWF0RGF0ZSh1c2VyLmxhc3RMb2dpbikgOiAnJ1wiPlxuXHRcdFx0e3t1c2VyLmxhc3RMb2dpbj4wID8gT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZSh1c2VyLmxhc3RMb2dpbikgOiB0KCdzZXR0aW5ncycsJ05ldmVyJyl9fVxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZVVzZXJBY3Rpb25zXCIgdi1pZj1cIk9DLmN1cnJlbnRVc2VyICE9PSB1c2VyLmlkICYmIHVzZXIuaWQgIT09ICdhZG1pbicgJiYgIWxvYWRpbmcuYWxsXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLW1vcmVcIiB2LWNsaWNrLW91dHNpZGU9XCJoaWRlTWVudVwiIEBjbGljaz1cInNob3dNZW51XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwb3BvdmVybWVudVwiIDpjbGFzcz1cInsgJ29wZW4nOiBvcGVuZWRNZW51IH1cIj5cblx0XHRcdFx0XHQ8cG9wb3Zlci1tZW51IDptZW51PVwidXNlckFjdGlvbnNcIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBwb3BvdmVyTWVudSBmcm9tICcuLi9wb3BvdmVyTWVudSc7XG5pbXBvcnQgQ2xpY2tPdXRzaWRlIGZyb20gJ3Z1ZS1jbGljay1vdXRzaWRlJztcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICd2dWUtbXVsdGlzZWxlY3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICd1c2VyUm93Jyxcblx0cHJvcHM6IFsndXNlcicsICdzZXR0aW5ncycsICdncm91cHMnLCAnc3ViQWRtaW5zR3JvdXBzJywgJ3F1b3RhT3B0aW9ucycsICdzaG93Q29uZmlnJywgJ2xhbmd1YWdlcyddLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0cG9wb3Zlck1lbnUsXG5cdFx0TXVsdGlzZWxlY3Rcblx0fSxcblx0ZGlyZWN0aXZlczoge1xuXHRcdENsaWNrT3V0c2lkZVxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdC8vIHJlcXVpcmVkIGlmIHBvcHVwIG5lZWRzIHRvIHN0YXkgb3BlbmVkIGFmdGVyIG1lbnUgY2xpY2tcblx0XHQvLyBzaW5jZSB3ZSBvbmx5IGhhdmUgZGlzYWJsZS9kZWxldGUgYWN0aW9ucywgbGV0J3MgY2xvc2UgaXQgZGlyZWN0bHlcblx0XHQvLyB0aGlzLnBvcHVwSXRlbSA9IHRoaXMuJGVsO1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyYW5kOiBwYXJzZUludChNYXRoLnJhbmRvbSgpICogMTAwMCksXG5cdFx0XHRvcGVuZWRNZW51OiBmYWxzZSxcblx0XHRcdGxvYWRpbmc6IHtcblx0XHRcdFx0YWxsOiBmYWxzZSxcblx0XHRcdFx0ZGlzcGxheU5hbWU6IGZhbHNlLFxuXHRcdFx0XHRwYXNzd29yZDogZmFsc2UsXG5cdFx0XHRcdG1haWxBZGRyZXNzOiBmYWxzZSxcblx0XHRcdFx0Z3JvdXBzOiBmYWxzZSxcblx0XHRcdFx0c3ViYWRtaW5zOiBmYWxzZSxcblx0XHRcdFx0cXVvdGE6IGZhbHNlLFxuXHRcdFx0XHRkZWxldGU6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlOiBmYWxzZSxcblx0XHRcdFx0bGFuZ3VhZ2VzOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHQvKiBVU0VSIFBPUE9WRVJNRU5VIEFDVElPTlMgKi9cblx0XHR1c2VyQWN0aW9ucygpIHtcblx0XHRcdHJldHVybiBbe1xuXHRcdFx0XHRpY29uOiAnaWNvbi1kZWxldGUnLFxuXHRcdFx0XHR0ZXh0OiB0KCdzZXR0aW5ncycsJ0RlbGV0ZSB1c2VyJyksXG5cdFx0XHRcdGFjdGlvbjogdGhpcy5kZWxldGVVc2VyXG5cdFx0XHR9LHtcblx0XHRcdFx0J2ljb24nOiB0aGlzLnVzZXIuZW5hYmxlZCA/ICdpY29uLWNsb3NlJyA6ICdpY29uLWFkZCcsXG5cdFx0XHRcdCd0ZXh0JzogdGhpcy51c2VyLmVuYWJsZWQgPyB0KCdzZXR0aW5ncycsJ0Rpc2FibGUgdXNlcicpIDogdCgnc2V0dGluZ3MnLCdFbmFibGUgdXNlcicpLFxuXHRcdFx0XHQnYWN0aW9uJzogdGhpcy5lbmFibGVEaXNhYmxlVXNlclxuXHRcdFx0fV1cblx0XHR9LFxuXG5cdFx0LyogR1JPVVBTIE1BTkFHRU1FTlQgKi9cblx0XHR1c2VyR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJHcm91cHMgPSB0aGlzLmdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLmdyb3Vwcy5pbmNsdWRlcyhncm91cC5pZCkpO1xuXHRcdFx0cmV0dXJuIHVzZXJHcm91cHM7XG5cdFx0fSxcblx0XHR1c2VyU3ViQWRtaW5zR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJTdWJBZG1pbnNHcm91cHMgPSB0aGlzLnN1YkFkbWluc0dyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLnN1YmFkbWluLmluY2x1ZGVzKGdyb3VwLmlkKSk7XG5cdFx0XHRyZXR1cm4gdXNlclN1YkFkbWluc0dyb3Vwcztcblx0XHR9LFxuXG5cdFx0LyogUVVPVEEgTUFOQUdFTUVOVCAqL1xuXHRcdHVzZWRRdW90YSgpIHtcblx0XHRcdGxldCBxdW90YSA9IHRoaXMudXNlci5xdW90YS5xdW90YTtcblx0XHRcdGlmIChxdW90YSA+IDApIHtcblx0XHRcdFx0cXVvdGEgPSBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQodGhpcy51c2VyLnF1b3RhLnVzZWQgLyBxdW90YSAqIDEwMCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIHVzZWRJbkdCID0gdGhpcy51c2VyLnF1b3RhLnVzZWQgLyAoMTAgKiBNYXRoLnBvdygyLCAzMCkpO1xuXHRcdFx0XHQvL2FzeW1wdG90aWMgY3VydmUgYXBwcm9hY2hpbmcgNTAlIGF0IDEwR0IgdG8gdmlzdWFsaXplIHVzZWQgc3RhY2Ugd2l0aCBpbmZpbml0ZSBxdW90YVxuXHRcdFx0XHRxdW90YSA9IDk1ICogKDEgLSAoMSAvICh1c2VkSW5HQiArIDEpKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaXNOYU4ocXVvdGEpID8gMCA6IHF1b3RhO1xuXHRcdH0sXG5cdFx0Ly8gTWFwcGluZyBzYXZlZCB2YWx1ZXMgdG8gb2JqZWN0c1xuXHRcdHVzZXJRdW90YSgpIHtcblx0XHRcdGlmICh0aGlzLnVzZXIucXVvdGEucXVvdGEgPiAwKSB7XG5cdFx0XHRcdC8vIGlmIHZhbHVlIGlzIHZhbGlkLCBsZXQncyBtYXAgdGhlIHF1b3RhT3B0aW9ucyBvciByZXR1cm4gY3VzdG9tIHF1b3RhXG5cdFx0XHRcdGxldCBodW1hblF1b3RhID0gT0MuVXRpbC5odW1hbkZpbGVTaXplKHRoaXMudXNlci5xdW90YS5xdW90YSk7XG5cdFx0XHRcdGxldCB1c2VyUXVvdGEgPSB0aGlzLnF1b3RhT3B0aW9ucy5maW5kKHF1b3RhID0+IHF1b3RhLmlkID09PSBodW1hblF1b3RhKTtcblx0XHRcdFx0cmV0dXJuIHVzZXJRdW90YSA/IHVzZXJRdW90YSA6IHtpZDpodW1hblF1b3RhLCBsYWJlbDpodW1hblF1b3RhfTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy51c2VyLnF1b3RhLnF1b3RhID09PSAwIHx8IHRoaXMudXNlci5xdW90YS5xdW90YSA9PT0gJ2RlZmF1bHQnKSB7XG5cdFx0XHRcdC8vIGRlZmF1bHQgcXVvdGEgaXMgcmVwbGFjZWQgYnkgdGhlIHByb3BlciB2YWx1ZSBvbiBsb2FkXG5cdFx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1swXTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1sxXTsgLy8gdW5saW1pdGVkXG5cdFx0fSxcblxuXHRcdC8qIFBBU1NXT1JEIFBPTElDWT8gKi9cblx0XHRtaW5QYXNzd29yZExlbmd0aCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoO1xuXHRcdH0sXG5cblx0XHQvKiBMQU5HVUFHRSAqL1xuXHRcdHVzZXJMYW5ndWFnZSgpIHtcblx0XHRcdGxldCBhdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlc1swXS5sYW5ndWFnZXMuY29uY2F0KHRoaXMubGFuZ3VhZ2VzWzFdLmxhbmd1YWdlcyk7XG5cdFx0XHRsZXQgdXNlckxhbmcgPSBhdmFpbGFibGVMYW5ndWFnZXMuZmluZChsYW5nID0+IGxhbmcuY29kZSA9PT0gdGhpcy51c2VyLmxhbmd1YWdlKTtcblx0XHRcdGlmICh0eXBlb2YgdXNlckxhbmcgIT09ICdvYmplY3QnICYmIHRoaXMudXNlci5sYW5ndWFnZSAhPT0gJycpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRjb2RlOiB0aGlzLnVzZXIubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0bmFtZTogdGhpcy51c2VyLmxhbmd1YWdlXG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZih0aGlzLnVzZXIubGFuZ3VhZ2UgPT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB1c2VyTGFuZztcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHQvKiBNRU5VIEhBTkRMSU5HICovXG5cdFx0c2hvd01lbnUgKCkge1xuXHRcdFx0dGhpcy5vcGVuZWRNZW51ID0gdHJ1ZTtcblx0XHR9LFxuXHRcdGhpZGVNZW51ICgpIHtcblx0XHRcdHRoaXMub3BlbmVkTWVudSA9IGZhbHNlO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBHZW5lcmF0ZSBhdmF0YXIgdXJsXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHVzZXIgVGhlIHVzZXIgbmFtZVxuXHRcdCAqIEBwYXJhbSB7aW50fSBzaXplIFNpemUgaW50ZWdlciwgZGVmYXVsdCAzMlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Z2VuZXJhdGVBdmF0YXIodXNlciwgc2l6ZT0zMikge1xuXHRcdFx0cmV0dXJuIE9DLmdlbmVyYXRlVXJsKFxuXHRcdFx0XHQnL2F2YXRhci97dXNlcn0ve3NpemV9P3Y9e3ZlcnNpb259Jyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVzZXI6IHVzZXIsXG5cdFx0XHRcdFx0c2l6ZTogc2l6ZSxcblx0XHRcdFx0XHR2ZXJzaW9uOiBvY191c2VyY29uZmlnLmF2YXRhci52ZXJzaW9uXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSxcblxuXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0IHRoZSBsaW1pdCB0ZXh0IGluIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtpbnR9IGNvdW50IGVsZW1lbnRzIGxlZnRcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGxpbWl0R3JvdXBzKGNvdW50KSB7XG5cdFx0XHRyZXR1cm4gJysnK2NvdW50O1xuXHRcdH0sXG5cblx0XHRkZWxldGVVc2VyKCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RlbGV0ZVVzZXInLCB7dXNlcmlkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0ZW5hYmxlRGlzYWJsZVVzZXIoKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlID0gdHJ1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBlbmFibGVkID0gIXRoaXMudXNlci5lbmFibGVkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdlbmFibGVEaXNhYmxlVXNlcicsIHt1c2VyaWQsIGVuYWJsZWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IGZhbHNlXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLmFsbCA9IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTZXQgdXNlciBkaXNwbGF5TmFtZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwbGF5TmFtZSBUaGUgZGlzcGxheSBuYW1lXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0dXBkYXRlRGlzcGxheU5hbWUoKSB7XG5cdFx0XHRsZXQgZGlzcGxheU5hbWUgPSB0aGlzLiRyZWZzLmRpc3BsYXlOYW1lLnZhbHVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRpc3BsYXlOYW1lID0gdHJ1ZTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzZXRVc2VyRGF0YScsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLnVzZXIuaWQsIFxuXHRcdFx0XHRrZXk6ICdkaXNwbGF5bmFtZScsXG5cdFx0XHRcdHZhbHVlOiBkaXNwbGF5TmFtZVxuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5kaXNwbGF5TmFtZSA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLmRpc3BsYXlOYW1lLnZhbHVlID0gZGlzcGxheU5hbWU7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgcGFzc3dvcmRcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQgVGhlIGVtYWlsIGFkcmVzc1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZVBhc3N3b3JkKCkge1xuXHRcdFx0bGV0IHBhc3N3b3JkID0gdGhpcy4kcmVmcy5wYXNzd29yZC52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5wYXNzd29yZCA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLFxuXHRcdFx0XHRrZXk6ICdwYXNzd29yZCcsXG5cdFx0XHRcdHZhbHVlOiBwYXNzd29yZFxuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5wYXNzd29yZCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLnBhc3N3b3JkLnZhbHVlID0gJyc7IC8vIGVtcHR5ICYgc2hvdyBwbGFjZWhvbGRlciBcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTZXQgdXNlciBtYWlsQWRkcmVzc1xuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBtYWlsQWRkcmVzcyBUaGUgZW1haWwgYWRyZXNzXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0dXBkYXRlRW1haWwoKSB7XG5cdFx0XHRsZXQgbWFpbEFkZHJlc3MgPSB0aGlzLiRyZWZzLm1haWxBZGRyZXNzLnZhbHVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLm1haWxBZGRyZXNzID0gdHJ1ZTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzZXRVc2VyRGF0YScsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLnVzZXIuaWQsXG5cdFx0XHRcdGtleTogJ2VtYWlsJyxcblx0XHRcdFx0dmFsdWU6IG1haWxBZGRyZXNzXG5cdFx0XHR9KS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nLm1haWxBZGRyZXNzID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuJHJlZnMubWFpbEFkZHJlc3MudmFsdWUgPSBtYWlsQWRkcmVzcztcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBDcmVhdGUgYSBuZXcgZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBzIEdyb3VwIGlkXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0Y3JlYXRlR3JvdXAoZ2lkKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB7Z3JvdXBzOnRydWUsIHN1YmFkbWluczp0cnVlfVxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZEdyb3VwJywgZ2lkKS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0ge2dyb3VwczpmYWxzZSwgc3ViYWRtaW5zOmZhbHNlfTtcblx0XHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRHcm91cHNbdGhpcy5ncm91cHMubGVuZ3RoXTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQWRkIHVzZXIgdG8gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0YWRkVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0cmVtb3ZlVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JlbW92ZVVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGFkZFVzZXJTdWJBZG1pbihncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyU3ViQWRtaW4nLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBSZW1vdmUgdXNlciBmcm9tIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZVVzZXJTdWJBZG1pbihncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdyZW1vdmVVc2VyU3ViQWRtaW4nLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBEaXNwYXRjaCBxdW90YSBzZXQgcmVxdWVzdFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJyBvciBPYmplY3Qge2lkOiAnNSBHQicsIGxhYmVsOiAnNUdCJ31cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHNldFVzZXJRdW90YShxdW90YSA9ICdub25lJykge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnF1b3RhID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0cXVvdGEgPSBxdW90YS5pZCA/IHF1b3RhLmlkIDogcXVvdGE7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAncXVvdGEnLFxuXHRcdFx0XHR2YWx1ZTogcXVvdGFcblx0XHRcdH0pLnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnF1b3RhID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIHF1b3RhO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBWYWxpZGF0ZSBxdW90YSBzdHJpbmcgdG8gbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBodW1hbiBmaWxlIHNpemVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJ1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfGJvb2xlYW59XG5cdFx0ICovXG5cdFx0dmFsaWRhdGVRdW90YShxdW90YSkge1xuXHRcdFx0Ly8gb25seSB1c2VkIGZvciBuZXcgcHJlc2V0cyBzZW50IHRocm91Z2ggQFRhZ1xuXHRcdFx0bGV0IHZhbGlkUXVvdGEgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpO1xuXHRcdFx0aWYgKHZhbGlkUXVvdGEgPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0VXNlclF1b3RhKCdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbGlkUXVvdGEgIT09IG51bGwpIHtcblx0XHRcdFx0Ly8gdW5pZnkgZm9ybWF0IG91dHB1dFxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRVc2VyUXVvdGEoT0MuVXRpbC5odW1hbkZpbGVTaXplKE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSkpKTtcblx0XHRcdH1cblx0XHRcdC8vIGlmIG5vIHZhbGlkIGRvbyBub3QgY2hhbmdlXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERpc3BhdGNoIGxhbmd1YWdlIHNldCByZXF1ZXN0XG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGxhbmcgbGFuZ3VhZ2Ugb2JqZWN0IHtjb2RlOidlbicsIG5hbWU6J0VuZ2xpc2gnfVxuXHRcdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0c2V0VXNlckxhbmd1YWdlKGxhbmcpIHtcblx0XHRcdHRoaXMubG9hZGluZy5sYW5ndWFnZXMgPSB0cnVlO1xuXHRcdFx0Ly8gZW5zdXJlIHdlIG9ubHkgc2VuZCB0aGUgcHJlc2V0IGlkXG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAnbGFuZ3VhZ2UnLFxuXHRcdFx0XHR2YWx1ZTogbGFuZy5jb2RlXG5cdFx0XHR9KS50aGVuKCgpID0+IHRoaXMubG9hZGluZy5sYW5ndWFnZXMgPSBmYWxzZSk7XG5cdFx0XHRyZXR1cm4gbGFuZztcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///15\n"); /***/ }), /* 16 */ @@ -360,7 +360,7 @@ eval("!function(e,t){ true?module.exports=t():\"function\"==typeof define&&defin /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"user-list-grid\",\n attrs: { id: \"app-content\" },\n on: {\n \"&scroll\": function($event) {\n return _vm.onScroll($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n attrs: { id: \"grid-header\" }\n },\n [\n _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Username\")))\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"displayName\", attrs: { id: \"headerDisplayName\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Full name\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Password\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Email\")))]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Groups\")))\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Group admin for\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Quota\")))\n ]),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\", attrs: { id: \"headerLanguages\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Languages\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\n \"div\",\n { staticClass: \"headerStorageLocation storageLocation\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Storage location\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"User backend\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Last login\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfig.showNewUserForm,\n expression: \"showConfig.showNewUserForm\"\n }\n ],\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n attrs: { id: \"new-user\", disabled: _vm.loading },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.createUser($event)\n }\n }\n },\n [\n _c(\"div\", { class: _vm.loading ? \"icon-loading-small\" : \"icon-add\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.id,\n expression: \"newUser.id\"\n }\n ],\n attrs: {\n id: \"newusername\",\n type: \"text\",\n required: \"\",\n placeholder: _vm.t(\"settings\", \"User name\"),\n name: \"username\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\"\n },\n domProps: { value: _vm.newUser.id },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"id\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.displayName,\n expression: \"newUser.displayName\"\n }\n ],\n attrs: {\n id: \"newdisplayname\",\n type: \"text\",\n placeholder: _vm.t(\"settings\", \"Display name\"),\n name: \"displayname\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.displayName },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"password\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.password,\n expression: \"newUser.password\"\n }\n ],\n attrs: {\n id: \"newuserpassword\",\n type: \"password\",\n required: _vm.newUser.mailAddress === \"\",\n placeholder: _vm.t(\"settings\", \"Password\"),\n name: \"password\",\n autocomplete: \"new-password\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n minlength: _vm.minPasswordLength\n },\n domProps: { value: _vm.newUser.password },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"password\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.mailAddress,\n expression: \"newUser.mailAddress\"\n }\n ],\n attrs: {\n id: \"newemail\",\n type: \"email\",\n required: _vm.newUser.password === \"\",\n placeholder: _vm.t(\"settings\", \"Mail address\"),\n name: \"email\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.mailAddress },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"groups\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.groups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.groups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"groups\", $$v)\n },\n expression: \"newUser.groups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.subAdminsGroups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n },\n expression: \"newUser.subAdminsGroups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"quota\" },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota },\n model: {\n value: _vm.newUser.quota,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"quota\", $$v)\n },\n expression: \"newUser.quota\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\"div\", { staticClass: \"languages\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"lastLogin\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _c(\"input\", {\n staticClass: \"button primary icon-checkmark-white has-tooltip\",\n attrs: {\n type: \"submit\",\n id: \"newsubmit\",\n value: \"\",\n title: _vm.t(\"settings\", \"Add a new user\")\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"button icon-close has-tooltip\",\n attrs: {\n type: \"reset\",\n id: \"newreset\",\n value: \"\",\n title: _vm.t(\"settings\", \"Cancel and reset the form\")\n },\n on: { click: _vm.resetForm }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.filteredUsers, function(user, key) {\n return _c(\"user-row\", {\n key: key,\n attrs: {\n user: user,\n settings: _vm.settings,\n showConfig: _vm.showConfig,\n groups: _vm.groups,\n subAdminsGroups: _vm.subAdminsGroups,\n quotaOptions: _vm.quotaOptions\n }\n })\n }),\n _vm._v(\" \"),\n _c(\n \"infinite-loading\",\n { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n [\n _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _c(\"div\", { staticClass: \"users-list-end\" }, [\n _vm._v(\"— \" + _vm._s(_vm.t(\"settings\", \"no more results\")) + \" —\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n ])\n ])\n ]\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-40745299\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWU/M2I4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUEwRDtBQUM1RSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBLHFCQUFxQiw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUNBQXFDLDBCQUEwQixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtDQUFrQyx1QkFBdUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQ0FBcUMsc0JBQXNCLEVBQUU7QUFDMUU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQixvQkFBb0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVEQUF1RDtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUErQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJDQUEyQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFB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MkJBQTJCO0FBQ3BEO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixtQkFBbUI7QUFDbkIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUyw4QkFBOEIsZ0NBQWdDLEVBQUU7QUFDekU7QUFDQSxxQkFBcUIsU0FBUyxrQkFBa0IsbUJBQW1CO0FBQ25FLHVCQUF1QixpREFBaUQ7QUFDeEU7QUFDQTtBQUNBLHFCQUFxQixTQUFTLGtCQUFrQixtQkFBbUI7QUFDbkUsdUJBQXVCLGdDQUFnQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLHFCQUFxQixzQkFBc0I7QUFDekUsdUJBQXVCLFNBQVMscUJBQXFCLEVBQUU7QUFDdkQseUJBQXlCLG9DQUFvQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidXNlci1saXN0LWdyaWRcIixcbiAgICAgIGF0dHJzOiB7IGlkOiBcImFwcC1jb250ZW50XCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiJnNjcm9sbFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3ZtLm9uU2Nyb2xsKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJyb3dcIixcbiAgICAgICAgICBjbGFzczogeyBzdGlja3k6IF92bS5zY3JvbGxlZCAmJiAhX3ZtLnNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtIH0sXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwiZ3JpZC1oZWFkZXJcIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImF2YXRhclwiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBdmF0YXJcIiB9IH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlck5hbWVcIiB9IH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXJuYW1lXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZGlzcGxheU5hbWVcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyRGlzcGxheU5hbWVcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiRnVsbCBuYW1lXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyUGFzc3dvcmRcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiUGFzc3dvcmRcIikpKV1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtYWlsQWRkcmVzc1wiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBZGRyZXNzXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkVtYWlsXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZ3JvdXBzXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlckdyb3Vwc1wiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXBzXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zdWJBZG1pbnNHcm91cHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic3ViYWRtaW5zXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclN1YkFkbWluc1wiIH0gfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXAgYWRtaW4gZm9yXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclF1b3RhXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJRdW90YVwiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93TGFuZ3VhZ2VzXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJsYW5ndWFnZXNcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyTGFuZ3VhZ2VzXCIgfSB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJMYW5ndWFnZXNcIikpKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlN0b3JhZ2UgbG9jYXRpb25cIikpKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImhlYWRlclVzZXJCYWNrZW5kIHVzZXJCYWNrZW5kXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXIgYmFja2VuZFwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhc3RMb2dpblxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTGFzdCBsb2dpblwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQWN0aW9uc1wiIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJyb3dcIixcbiAgICAgICAgICBjbGFzczogeyBzdGlja3k6IF92bS5zY3JvbGxlZCAmJiBfdm0uc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm0gfSxcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJuZXctdXNlclwiLCBkaXNhYmxlZDogX3ZtLmxvYWRpbmcgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS5jcmVhdGVVc2VyKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGNsYXNzOiBfdm0ubG9hZGluZyA/IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCIgOiBcImljb24tYWRkXCIgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hbWVcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLmlkLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLmlkXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3dXNlcm5hbWVcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogXCJcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXIgbmFtZVwiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzZXJuYW1lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBcIlthLXpBLVowLTkgX1xcXFwuQFxcXFwtJ10rXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLmlkIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiaWRcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5kaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld2Rpc3BsYXluYW1lXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJEaXNwbGF5IG5hbWVcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJkaXNwbGF5bmFtZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLmRpc3BsYXlOYW1lIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiZGlzcGxheU5hbWVcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInBhc3N3b3JkXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3VzZXJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogX3ZtLm5ld1VzZXIubWFpbEFkZHJlc3MgPT09IFwiXCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJQYXNzd29yZFwiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IF92bS5taW5QYXNzd29yZExlbmd0aFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLm5ld1VzZXIucGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJwYXNzd29yZFwiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLm1haWxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLm1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3ZW1haWxcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IF92bS5uZXdVc2VyLnBhc3N3b3JkID09PSBcIlwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTWFpbCBhZGRyZXNzXCIpLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5tYWlsQWRkcmVzcyB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcIm1haWxBZGRyZXNzXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJncm91cHNcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcIm11bHRpc2VsZWN0XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXVsdGlzZWxlY3QtdnVlXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkFkZCB1c2VyIGluIGdyb3VwXCIpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJjbG9zZS1vbi1zZWxlY3RcIjogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiZ3JvdXBzXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLmdyb3Vwc1wiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgc2xvdDogXCJub1Jlc3VsdFwiIH0sIHNsb3Q6IFwibm9SZXN1bHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc3ViQWRtaW5zR3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInN1YmFkbWluc1wiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uc3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJTZXQgdXNlciBhcyBhZG1pbiBmb3JcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjbG9zZS1vbi1zZWxlY3RcIjogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJzdWJBZG1pbnNHcm91cHNcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5zdWJBZG1pbnNHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHNsb3Q6IFwibm9SZXN1bHRcIiB9LCBzbG90OiBcIm5vUmVzdWx0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJObyByZXN1bHRcIikpKV1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicXVvdGFcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnF1b3RhT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2VsZWN0IHVzZXIgcXVvdGFcIiksXG4gICAgICAgICAgICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjogeyB0YWc6IF92bS52YWxpZGF0ZVF1b3RhIH0sXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5xdW90YSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwicXVvdGFcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5xdW90YVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhbmd1YWdlc1xuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImxhbmd1YWdlc1wiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwic3RvcmFnZUxvY2F0aW9uXCIgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQmFja2VuZFwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhc3RMb2dpblxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImxhc3RMb2dpblwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQWN0aW9uc1wiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJidXR0b24gcHJpbWFyeSBpY29uLWNoZWNrbWFyay13aGl0ZSBoYXMtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwic3VibWl0XCIsXG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3c3VibWl0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdGl0bGU6IF92bS50KFwic2V0dGluZ3NcIiwgXCJBZGQgYSBuZXcgdXNlclwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnV0dG9uIGljb24tY2xvc2UgaGFzLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInJlc2V0XCIsXG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3cmVzZXRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkNhbmNlbCBhbmQgcmVzZXQgdGhlIGZvcm1cIilcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5yZXNldEZvcm0gfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fbChfdm0uZmlsdGVyZWRVc2VycywgZnVuY3Rpb24odXNlciwga2V5KSB7XG4gICAgICAgIHJldHVybiBfYyhcInVzZXItcm93XCIsIHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgdXNlcjogdXNlcixcbiAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICBzaG93Q29uZmlnOiBfdm0uc2hvd0NvbmZpZyxcbiAgICAgICAgICAgIGdyb3VwczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgIHN1YkFkbWluc0dyb3VwczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgIHF1b3RhT3B0aW9uczogX3ZtLnF1b3RhT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImluZmluaXRlLWxvYWRpbmdcIixcbiAgICAgICAgeyByZWY6IFwiaW5maW5pdGVMb2FkaW5nXCIsIG9uOiB7IGluZmluaXRlOiBfdm0uaW5maW5pdGVIYW5kbGVyIH0gfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJzcGlubmVyXCIgfSwgc2xvdDogXCJzcGlubmVyXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2Vycy1pY29uLWxvYWRpbmcgaWNvbi1sb2FkaW5nXCIgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJuby1tb3JlXCIgfSwgc2xvdDogXCJuby1tb3JlXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2Vycy1saXN0LWVuZFwiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KFwi4oCUIFwiICsgX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJubyBtb3JlIHJlc3VsdHNcIikpICsgXCIg4oCUXCIpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBzbG90OiBcIm5vLXJlc3VsdHNcIiB9LCBzbG90OiBcIm5vLXJlc3VsdHNcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcImVtcHR5Y29udGVudFwiIH0gfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImljb24tY29udGFjdHMtZGFya1wiIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcImgyXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJObyB1c2VycyBpbiBoZXJlXCIpKSldKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LTQwNzQ1Mjk5XCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtNDA3NDUyOTlcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"user-list-grid\",\n attrs: { id: \"app-content\" },\n on: {\n \"&scroll\": function($event) {\n return _vm.onScroll($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n attrs: { id: \"grid-header\" }\n },\n [\n _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Username\")))\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"displayName\", attrs: { id: \"headerDisplayName\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Full name\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Password\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Email\")))]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Groups\")))\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Group admin for\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Quota\")))\n ]),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\", attrs: { id: \"headerLanguages\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Languages\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\n \"div\",\n { staticClass: \"headerStorageLocation storageLocation\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Storage location\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"User backend\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Last login\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfig.showNewUserForm,\n expression: \"showConfig.showNewUserForm\"\n }\n ],\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n attrs: { id: \"new-user\", disabled: _vm.loading },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.createUser($event)\n }\n }\n },\n [\n _c(\"div\", { class: _vm.loading ? \"icon-loading-small\" : \"icon-add\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.id,\n expression: \"newUser.id\"\n }\n ],\n attrs: {\n id: \"newusername\",\n type: \"text\",\n required: \"\",\n placeholder: _vm.t(\"settings\", \"User name\"),\n name: \"username\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\"\n },\n domProps: { value: _vm.newUser.id },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"id\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.displayName,\n expression: \"newUser.displayName\"\n }\n ],\n attrs: {\n id: \"newdisplayname\",\n type: \"text\",\n placeholder: _vm.t(\"settings\", \"Display name\"),\n name: \"displayname\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.displayName },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"password\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.password,\n expression: \"newUser.password\"\n }\n ],\n attrs: {\n id: \"newuserpassword\",\n type: \"password\",\n required: _vm.newUser.mailAddress === \"\",\n placeholder: _vm.t(\"settings\", \"Password\"),\n name: \"password\",\n autocomplete: \"new-password\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n minlength: _vm.minPasswordLength\n },\n domProps: { value: _vm.newUser.password },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"password\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.mailAddress,\n expression: \"newUser.mailAddress\"\n }\n ],\n attrs: {\n id: \"newemail\",\n type: \"email\",\n required: _vm.newUser.password === \"\",\n placeholder: _vm.t(\"settings\", \"Mail address\"),\n name: \"email\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.mailAddress },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"groups\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.groups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.groups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"groups\", $$v)\n },\n expression: \"newUser.groups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.subAdminsGroups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n },\n expression: \"newUser.subAdminsGroups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"quota\" },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota },\n model: {\n value: _vm.newUser.quota,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"quota\", $$v)\n },\n expression: \"newUser.quota\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\" },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.languages,\n placeholder: _vm.t(\"settings\", \"Default language\"),\n label: \"name\",\n \"track-by\": \"code\",\n allowEmpty: false,\n \"group-values\": \"languages\",\n \"group-label\": \"label\"\n },\n model: {\n value: _vm.newUser.language,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"language\", $$v)\n },\n expression: \"newUser.language\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"lastLogin\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _c(\"input\", {\n staticClass: \"button primary icon-checkmark-white has-tooltip\",\n attrs: {\n type: \"submit\",\n id: \"newsubmit\",\n value: \"\",\n title: _vm.t(\"settings\", \"Add a new user\")\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"button icon-close has-tooltip\",\n attrs: {\n type: \"reset\",\n id: \"newreset\",\n value: \"\",\n title: _vm.t(\"settings\", \"Cancel and reset the form\")\n },\n on: { click: _vm.resetForm }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.filteredUsers, function(user, key) {\n return _c(\"user-row\", {\n key: key,\n attrs: {\n user: user,\n settings: _vm.settings,\n showConfig: _vm.showConfig,\n groups: _vm.groups,\n subAdminsGroups: _vm.subAdminsGroups,\n quotaOptions: _vm.quotaOptions,\n languages: _vm.languages\n }\n })\n }),\n _vm._v(\" \"),\n _c(\n \"infinite-loading\",\n { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n [\n _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _c(\"div\", { staticClass: \"users-list-end\" }, [\n _vm._v(\"— \" + _vm._s(_vm.t(\"settings\", \"no more results\")) + \" —\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n ])\n ])\n ]\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-40745299\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWU/M2I4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUEwRDtBQUM1RSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBLHFCQUFxQiw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUNBQXFDLDBCQUEwQixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtDQUFrQyx1QkFBdUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQ0FBcUMsc0JBQXNCLEVBQUU7QUFDMUU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQixvQkFBb0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVEQUF1RDtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUErQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJDQUEyQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFB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O0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGlDQUFpQztBQUMxRDtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsNkJBQTZCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQkFBMkI7QUFDcEQ7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLG1CQUFtQjtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVMsOEJBQThCLGdDQUFnQyxFQUFFO0FBQ3pFO0FBQ0EscUJBQXFCLFNBQVMsa0JBQWtCLG1CQUFtQjtBQUNuRSx1QkFBdUIsaURBQWlEO0FBQ3hFO0FBQ0E7QUFDQSxxQkFBcUIsU0FBUyxrQkFBa0IsbUJBQW1CO0FBQ25FLHVCQUF1QixnQ0FBZ0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsU0FBUyxxQkFBcUIsc0JBQXNCO0FBQ3pFLHVCQUF1QixTQUFTLHFCQUFxQixFQUFFO0FBQ3ZELHlCQUF5QixvQ0FBb0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInVzZXItbGlzdC1ncmlkXCIsXG4gICAgICBhdHRyczogeyBpZDogXCJhcHAtY29udGVudFwiIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcIiZzY3JvbGxcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIF92bS5vblNjcm9sbCgkZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwicm93XCIsXG4gICAgICAgICAgY2xhc3M6IHsgc3RpY2t5OiBfdm0uc2Nyb2xsZWQgJiYgIV92bS5zaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybSB9LFxuICAgICAgICAgIGF0dHJzOiB7IGlkOiBcImdyaWQtaGVhZGVyXCIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJhdmF0YXJcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyQXZhdGFyXCIgfSB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwibmFtZVwiLCBhdHRyczogeyBpZDogXCJoZWFkZXJOYW1lXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJVc2VybmFtZVwiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlckRpc3BsYXlOYW1lXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkZ1bGwgbmFtZVwiKSkpXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInBhc3N3b3JkXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclBhc3N3b3JkXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlBhc3N3b3JkXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyQWRkcmVzc1wiIH0gfSxcbiAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJFbWFpbFwiKSkpXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImdyb3Vwc1wiLCBhdHRyczogeyBpZDogXCJoZWFkZXJHcm91cHNcIiB9IH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkdyb3Vwc1wiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc3ViQWRtaW5zR3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInN1YmFkbWluc1wiLCBhdHRyczogeyBpZDogXCJoZWFkZXJTdWJBZG1pbnNcIiB9IH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkdyb3VwIGFkbWluIGZvclwiKSkpXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJxdW90YVwiLCBhdHRyczogeyBpZDogXCJoZWFkZXJRdW90YVwiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiUXVvdGFcIikpKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhbmd1YWdlc1xuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibGFuZ3VhZ2VzXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlckxhbmd1YWdlc1wiIH0gfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTGFuZ3VhZ2VzXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImhlYWRlclN0b3JhZ2VMb2NhdGlvbiBzdG9yYWdlTG9jYXRpb25cIiB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJTdG9yYWdlIGxvY2F0aW9uXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJVc2VyIGJhY2tlbmRcIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJoZWFkZXJMYXN0TG9naW4gbGFzdExvZ2luXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkxhc3QgbG9naW5cIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9KVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImZvcm1cIixcbiAgICAgICAge1xuICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm0sXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwicm93XCIsXG4gICAgICAgICAgY2xhc3M6IHsgc3RpY2t5OiBfdm0uc2Nyb2xsZWQgJiYgX3ZtLnNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtIH0sXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwibmV3LXVzZXJcIiwgZGlzYWJsZWQ6IF92bS5sb2FkaW5nIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0uY3JlYXRlVXNlcigkZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBjbGFzczogX3ZtLmxvYWRpbmcgPyBcImljb24tbG9hZGluZy1zbWFsbFwiIDogXCJpY29uLWFkZFwiIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5pZCxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5pZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3VzZXJuYW1lXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJVc2VyIG5hbWVcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJ1c2VybmFtZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgcGF0dGVybjogXCJbYS16QS1aMC05IF9cXFxcLkBcXFxcLSddK1wiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5pZCB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImlkXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJkaXNwbGF5TmFtZVwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIuZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJuZXdkaXNwbGF5bmFtZVwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiRGlzcGxheSBuYW1lXCIpLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGlzcGxheW5hbWVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImRpc3BsYXlOYW1lXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJwYXNzd29yZFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIucGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJuZXd1c2VycGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IF92bS5uZXdVc2VyLm1haWxBZGRyZXNzID09PSBcIlwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiUGFzc3dvcmRcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJuZXctcGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgbWlubGVuZ3RoOiBfdm0ubWluUGFzc3dvcmRMZW5ndGhcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLnBhc3N3b3JkIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwicGFzc3dvcmRcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm1haWxBZGRyZXNzXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5tYWlsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5tYWlsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld2VtYWlsXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBfdm0ubmV3VXNlci5wYXNzd29yZCA9PT0gXCJcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk1haWwgYWRkcmVzc1wiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLm5ld1VzZXIubWFpbEFkZHJlc3MgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJtYWlsQWRkcmVzc1wiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZ3JvdXBzXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJtdWx0aXNlbGVjdFwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJBZGQgdXNlciBpbiBncm91cFwiKSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiY2xvc2Utb24tc2VsZWN0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLmdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImdyb3Vwc1wiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5ncm91cHNcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHNsb3Q6IFwibm9SZXN1bHRcIiB9LCBzbG90OiBcIm5vUmVzdWx0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk5vIHJlc3VsdFwiKSkpXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnN1YkFkbWluc0dyb3Vwcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJzdWJhZG1pbnNcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcIm11bHRpc2VsZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2V0IHVzZXIgYXMgYWRtaW4gZm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2xvc2Utb24tc2VsZWN0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwic3ViQWRtaW5zR3JvdXBzXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBzbG90OiBcIm5vUmVzdWx0XCIgfSwgc2xvdDogXCJub1Jlc3VsdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInF1b3RhXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXVsdGlzZWxlY3QtdnVlXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5xdW90YU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNlbGVjdCB1c2VyIHF1b3RhXCIpLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibGFiZWxcIixcbiAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgYWxsb3dFbXB0eTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0YWdnYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHsgdGFnOiBfdm0udmFsaWRhdGVRdW90YSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIucXVvdGEsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcInF1b3RhXCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIucXVvdGFcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYW5ndWFnZXNcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImxhbmd1YWdlc1wiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5sYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJEZWZhdWx0IGxhbmd1YWdlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGFsbG93RW1wdHk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIFwiZ3JvdXAtdmFsdWVzXCI6IFwibGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJncm91cC1sYWJlbFwiOiBcImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwibGFuZ3VhZ2VcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLmxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInN0b3JhZ2VMb2NhdGlvblwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXG4gICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckJhY2tlbmRcIiB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJsYXN0TG9naW5cIiB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnV0dG9uIHByaW1hcnkgaWNvbi1jaGVja21hcmstd2hpdGUgaGFzLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN1Ym1pdFwiLFxuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3N1Ym1pdFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfdm0udChcInNldHRpbmdzXCIsIFwiQWRkIGEgbmV3IHVzZXJcIilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbiBpY29uLWNsb3NlIGhhcy10b29sdGlwXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJyZXNldFwiLFxuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3Jlc2V0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdGl0bGU6IF92bS50KFwic2V0dGluZ3NcIiwgXCJDYW5jZWwgYW5kIHJlc2V0IHRoZSBmb3JtXCIpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmVzZXRGb3JtIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX2woX3ZtLmZpbHRlcmVkVXNlcnMsIGZ1bmN0aW9uKHVzZXIsIGtleSkge1xuICAgICAgICByZXR1cm4gX2MoXCJ1c2VyLXJvd1wiLCB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHVzZXI6IHVzZXIsXG4gICAgICAgICAgICBzZXR0aW5nczogX3ZtLnNldHRpbmdzLFxuICAgICAgICAgICAgc2hvd0NvbmZpZzogX3ZtLnNob3dDb25maWcsXG4gICAgICAgICAgICBncm91cHM6IF92bS5ncm91cHMsXG4gICAgICAgICAgICBzdWJBZG1pbnNHcm91cHM6IF92bS5zdWJBZG1pbnNHcm91cHMsXG4gICAgICAgICAgICBxdW90YU9wdGlvbnM6IF92bS5xdW90YU9wdGlvbnMsXG4gICAgICAgICAgICBsYW5ndWFnZXM6IF92bS5sYW5ndWFnZXNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJpbmZpbml0ZS1sb2FkaW5nXCIsXG4gICAgICAgIHsgcmVmOiBcImluZmluaXRlTG9hZGluZ1wiLCBvbjogeyBpbmZpbml0ZTogX3ZtLmluZmluaXRlSGFuZGxlciB9IH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IHNsb3Q6IFwic3Bpbm5lclwiIH0sIHNsb3Q6IFwic3Bpbm5lclwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlcnMtaWNvbi1sb2FkaW5nIGljb24tbG9hZGluZ1wiIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IHNsb3Q6IFwibm8tbW9yZVwiIH0sIHNsb3Q6IFwibm8tbW9yZVwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlcnMtbGlzdC1lbmRcIiB9LCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIuKAlCBcIiArIF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwibm8gbW9yZSByZXN1bHRzXCIpKSArIFwiIOKAlFwiKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJuby1yZXN1bHRzXCIgfSwgc2xvdDogXCJuby1yZXN1bHRzXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJlbXB0eWNvbnRlbnRcIiB9IH0sIFtcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpY29uLWNvbnRhY3RzLWRhcmtcIiB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJoMlwiLCBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gdXNlcnMgaW4gaGVyZVwiKSkpXSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi00MDc0NTI5OVwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTQwNzQ1Mjk5XCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlXG4vLyBtb2R1bGUgaWQgPSA0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///43\n"); /***/ }), /* 44 */ @@ -394,7 +394,7 @@ eval("/* WEBPACK VAR INJECTION */(function(process) {/* unused harmony export St /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__api__ = __webpack_require__(17);\n\n\nvar orderGroups = function orderGroups(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n * const SORT_GROUPNAME = 2;\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\n\tif (orderBy === 1) {\n\t\treturn groups.sort(function (a, b) {\n\t\t\treturn a.usercount < b.usercount;\n\t\t});\n\t} else {\n\t\treturn groups.sort(function (a, b) {\n\t\t\treturn a.name.localeCompare(b.name);\n\t\t});\n\t}\n};\n\nvar state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0\n};\n\nvar mutations = {\n\tappendUsers: function appendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tvar users = state.users.concat(Object.keys(usersObj).map(function (userid) {\n\t\t\treturn usersObj[userid];\n\t\t}));\n\t\tstate.usersOffset += state.usersLimit;\n\t\tstate.users = users;\n\t},\n\tsetPasswordPolicyMinLength: function setPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0;\n\t},\n\tinitGroups: function initGroups(state, _ref) {\n\t\tvar groups = _ref.groups,\n\t\t orderBy = _ref.orderBy,\n\t\t userCount = _ref.userCount;\n\n\t\tstate.groups = groups;\n\t\tstate.orderBy = orderBy;\n\t\tstate.userCount = userCount;\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\taddGroup: function addGroup(state, groupid) {\n\t\ttry {\n\t\t\tstate.groups.push({\n\t\t\t\tid: groupid,\n\t\t\t\tname: groupid,\n\t\t\t\tusercount: 0 // user will be added after the creation\n\t\t\t});\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t\t} catch (e) {\n\t\t\tconsole.log('Can\\'t create group', e);\n\t\t}\n\t},\n\taddUserGroup: function addUserGroup(state, _ref2) {\n\t\tvar userid = _ref2.userid,\n\t\t gid = _ref2.gid;\n\n\t\t// this should not be needed as it would means the user contains a group\n\t\t// the server database doesn't have.\n\t\tvar group = state.groups.find(function (groupSearch) {\n\t\t\treturn groupSearch.id == gid;\n\t\t});\n\t\tif (group) {\n\t\t\tgroup.usercount++; // increase count\n\t\t}\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).groups;\n\t\tgroups.push(gid);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\tremoveUserGroup: function removeUserGroup(state, _ref3) {\n\t\tvar userid = _ref3.userid,\n\t\t gid = _ref3.gid;\n\n\t\t// this should not be needed as it would means the user contains a group\n\t\t// the server database doesn't have.\n\t\tvar group = state.groups.find(function (groupSearch) {\n\t\t\treturn groupSearch.id == gid;\n\t\t});\n\t\tif (group) {\n\t\t\tgroup.usercount--; // lower count\n\t\t}\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).groups;\n\t\tgroups.splice(groups.indexOf(gid), 1);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\taddUserSubAdmin: function addUserSubAdmin(state, _ref4) {\n\t\tvar userid = _ref4.userid,\n\t\t gid = _ref4.gid;\n\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).subadmin;\n\t\tgroups.push(gid);\n\t},\n\tremoveUserSubAdmin: function removeUserSubAdmin(state, _ref5) {\n\t\tvar userid = _ref5.userid,\n\t\t gid = _ref5.gid;\n\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).subadmin;\n\t\tgroups.splice(groups.indexOf(gid), 1);\n\t},\n\tdeleteUser: function deleteUser(state, userid) {\n\t\tvar userIndex = state.users.findIndex(function (user) {\n\t\t\treturn user.id == userid;\n\t\t});\n\t\tstate.users.splice(userIndex, 1);\n\t},\n\taddUserData: function addUserData(state, response) {\n\t\tstate.users.push(response.data.ocs.data);\n\t},\n\tenableDisableUser: function enableDisableUser(state, _ref6) {\n\t\tvar userid = _ref6.userid,\n\t\t enabled = _ref6.enabled;\n\n\t\tstate.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).enabled = enabled;\n\t\t// increment or not\n\t\tstate.groups.find(function (group) {\n\t\t\treturn group.id == '_disabled';\n\t\t}).usercount += enabled ? -1 : 1;\n\t\tstate.userCount += enabled ? 1 : -1;\n\t\tconsole.log(enabled);\n\t},\n\tsetUserData: function setUserData(state, _ref7) {\n\t\tvar userid = _ref7.userid,\n\t\t key = _ref7.key,\n\t\t value = _ref7.value;\n\n\t\tif (key === 'quota') {\n\t\t\tvar humanValue = OC.Util.computerFileSize(value);\n\t\t\tstate.users.find(function (user) {\n\t\t\t\treturn user.id == userid;\n\t\t\t})[key][key] = humanValue ? humanValue : value;\n\t\t} else {\n\t\t\tstate.users.find(function (user) {\n\t\t\t\treturn user.id == userid;\n\t\t\t})[key] = value;\n\t\t}\n\t},\n\n\n\t/**\n * Reset users list\n */\n\tresetUsers: function resetUsers(state) {\n\t\tstate.users = [];\n\t\tstate.usersOffset = 0;\n\t}\n};\n\nvar getters = {\n\tgetUsers: function getUsers(state) {\n\t\treturn state.users;\n\t},\n\tgetGroups: function getGroups(state) {\n\t\treturn state.groups;\n\t},\n\tgetPasswordPolicyMinLength: function getPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength;\n\t},\n\tgetUsersOffset: function getUsersOffset(state) {\n\t\treturn state.usersOffset;\n\t},\n\tgetUsersLimit: function getUsersLimit(state) {\n\t\treturn state.usersLimit;\n\t},\n\tgetUserCount: function getUserCount(state) {\n\t\treturn state.userCount;\n\t}\n};\n\nvar actions = {\n\n\t/**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @param {string} options.search Search amongst users\n * @param {string} options.group Get users from group\n * @returns {Promise}\n */\n\tgetUsers: function getUsers(context, _ref8) {\n\t\tvar offset = _ref8.offset,\n\t\t limit = _ref8.limit,\n\t\t search = _ref8.search,\n\t\t group = _ref8.group;\n\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\tgroup = typeof group === 'string' ? group : '';\n\t\tif (group !== '') {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/groups/' + group + '/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}).catch(function (error) {\n\t\t\t\treturn context.commit('API_FAILURE', error);\n\t\t\t});\n\t\t}\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n\tgetUsersFromList: function getUsersFromList(context, _ref9) {\n\t\tvar offset = _ref9.offset,\n\t\t limit = _ref9.limit,\n\t\t search = _ref9.search;\n\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Get all users with full details from a groupid\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n\tgetUsersFromGroup: function getUsersFromGroup(context, _ref10) {\n\t\tvar groupid = _ref10.groupid,\n\t\t offset = _ref10.offset,\n\t\t limit = _ref10.limit;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + groupid + '/details?offset=' + offset + '&limit=' + limit, 2)).then(function (response) {\n\t\t\treturn context.commit('getUsersFromList', response.data.ocs.data.users);\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\tgetPasswordPolicyMinLength: function getPasswordPolicyMinLength(context) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('apps/provisioning_api/api/v1/config/apps/password_policy/minLength', 2)).then(function (response) {\n\t\t\treturn context.commit('setPasswordPolicyMinLength', response.data.ocs.data.data);\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Add group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n\taddGroup: function addGroup(context, gid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addGroup', gid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n\tremoveGroup: function removeGroup(context, gid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeGroup', gid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add user to group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\taddUserGroup: function addUserGroup(context, _ref11) {\n\t\tvar userid = _ref11.userid,\n\t\t gid = _ref11.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addUserGroup', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove user from group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\tremoveUserGroup: function removeUserGroup(context, _ref12) {\n\t\tvar userid = _ref12.userid,\n\t\t gid = _ref12.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeUserGroup', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add user to group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\taddUserSubAdmin: function addUserSubAdmin(context, _ref13) {\n\t\tvar userid = _ref13.userid,\n\t\t gid = _ref13.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addUserSubAdmin', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove user from group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\tremoveUserSubAdmin: function removeUserSubAdmin(context, _ref14) {\n\t\tvar userid = _ref14.userid,\n\t\t gid = _ref14.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeUserSubAdmin', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Delete a user\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n\tdeleteUser: function deleteUser(context, _ref15) {\n\t\tvar userid = _ref15.userid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n\t\t\t\treturn context.commit('deleteUser', userid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add a user\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.password User password \n * @param {string} options.email User email\n * @param {string} options.groups User groups\n * @param {string} options.subadmin User subadmin groups\n * @param {string} options.quota User email\n * @returns {Promise}\n */\n\taddUser: function addUser(_ref16, _ref17) {\n\t\tvar context = _ref16.context,\n\t\t dispatch = _ref16.dispatch;\n\t\tvar userid = _ref17.userid,\n\t\t password = _ref17.password,\n\t\t email = _ref17.email,\n\t\t groups = _ref17.groups,\n\t\t subadmin = _ref17.subadmin,\n\t\t quota = _ref17.quota;\n\n\t\tconsole.log(subadmin, quota);\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users', 2), { userid: userid, password: password, email: email, groups: groups, subadmin: subadmin, quota: quota }).then(function (response) {\n\t\t\t\t//let quotaDis = dispatch('setUserData', { userid, key: 'quota', value:quota });\n\t\t\t\t//let subadminDis = dispatch('addUserSubAdmin', userid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Get user data and commit addition\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n\taddUserData: function addUserData(context, userid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n\t\t\t\treturn context.commit('addUserData', response);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/** Enable or disable user \n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {boolean} options.enabled User enablement status\n * @returns {Promise}\n */\n\tenableDisableUser: function enableDisableUser(context, _ref18) {\n\t\tvar userid = _ref18.userid,\n\t\t _ref18$enabled = _ref18.enabled,\n\t\t enabled = _ref18$enabled === undefined ? true : _ref18$enabled;\n\n\t\tvar userStatus = enabled ? 'enable' : 'disable';\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid + '/' + userStatus, 2)).then(function (response) {\n\t\t\t\treturn context.commit('enableDisableUser', { userid: userid, enabled: enabled });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Edit user data\n * \n * @param {Object} context \n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.key User field to edit\n * @param {string} options.value Value of the change\n * @returns {Promise}\n */\n\tsetUserData: function setUserData(context, _ref19) {\n\t\tvar userid = _ref19.userid,\n\t\t key = _ref19.key,\n\t\t value = _ref19.value;\n\n\t\tvar allowedEmpty = ['email', 'displayname'];\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string' && (allowedEmpty.indexOf(key) === -1 && value.length > 0 || allowedEmpty.indexOf(key) !== -1)) {\n\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid, 2), { key: key, value: value }).then(function (response) {\n\t\t\t\t\t\treturn context.commit('setUserData', { userid: userid, key: key, value: value });\n\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'));\n\t}\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({ state: state, mutations: mutations, getters: getters, actions: actions });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RvcmUvdXNlcnMuanM/MjhjMiJdLCJuYW1lcyI6WyJvcmRlckdyb3VwcyIsImdyb3VwcyIsIm9yZGVyQnkiLCJzb3J0IiwiYSIsImIiLCJ1c2VyY291bnQiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsInN0YXRlIiwidXNlcnMiLCJtaW5QYXNzd29yZExlbmd0aCIsInVzZXJzT2Zmc2V0IiwidXNlcnNMaW1pdCIsInVzZXJDb3VudCIsIm11dGF0aW9ucyIsImFwcGVuZFVzZXJzIiwidXNlcnNPYmoiLCJjb25jYXQiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwidXNlcmlkIiwic2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJsZW5ndGgiLCJpbml0R3JvdXBzIiwiYWRkR3JvdXAiLCJncm91cGlkIiwicHVzaCIsImlkIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJhZGRVc2VyR3JvdXAiLCJnaWQiLCJncm91cCIsImZpbmQiLCJncm91cFNlYXJjaCIsInVzZXIiLCJyZW1vdmVVc2VyR3JvdXAiLCJzcGxpY2UiLCJpbmRleE9mIiwiYWRkVXNlclN1YkFkbWluIiwic3ViYWRtaW4iLCJyZW1vdmVVc2VyU3ViQWRtaW4iLCJkZWxldGVVc2VyIiwidXNlckluZGV4IiwiZmluZEluZGV4IiwiYWRkVXNlckRhdGEiLCJyZXNwb25zZSIsImRhdGEiLCJvY3MiLCJlbmFibGVEaXNhYmxlVXNlciIsImVuYWJsZWQiLCJzZXRVc2VyRGF0YSIsImtleSIsInZhbHVlIiwiaHVtYW5WYWx1ZSIsIk9DIiwiVXRpbCIsImNvbXB1dGVyRmlsZVNpemUiLCJyZXNldFVzZXJzIiwiZ2V0dGVycyIsImdldFVzZXJzIiwiZ2V0R3JvdXBzIiwiZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJnZXRVc2Vyc09mZnNldCIsImdldFVzZXJzTGltaXQiLCJnZXRVc2VyQ291bnQiLCJhY3Rpb25zIiwiY29udGV4dCIsIm9mZnNldCIsImxpbWl0Iiwic2VhcmNoIiwiYXBpIiwiZ2V0IiwibGlua1RvT0NTIiwidGhlbiIsImNvbW1pdCIsImNhdGNoIiwiZXJyb3IiLCJnZXRVc2Vyc0Zyb21MaXN0IiwiZ2V0VXNlcnNGcm9tR3JvdXAiLCJyZXF1aXJlQWRtaW4iLCJwb3N0IiwicmVtb3ZlR3JvdXAiLCJkZWxldGUiLCJhZGRVc2VyIiwiZGlzcGF0Y2giLCJwYXNzd29yZCIsImVtYWlsIiwicXVvdGEiLCJ1c2VyU3RhdHVzIiwicHV0IiwiYWxsb3dlZEVtcHR5IiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUEsSUFBTUEsY0FBYyxTQUFkQSxXQUFjLENBQVNDLE1BQVQsRUFBaUJDLE9BQWpCLEVBQTBCO0FBQzdDOzs7O0FBSUEsS0FBSUEsWUFBWSxDQUFoQixFQUFtQjtBQUNsQixTQUFPRCxPQUFPRSxJQUFQLENBQVksVUFBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsVUFBVUQsRUFBRUUsU0FBRixHQUFjRCxFQUFFQyxTQUExQjtBQUFBLEdBQVosQ0FBUDtBQUNBLEVBRkQsTUFFTztBQUNOLFNBQU9MLE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxVQUFVRCxFQUFFRyxJQUFGLENBQU9DLGFBQVAsQ0FBcUJILEVBQUVFLElBQXZCLENBQVY7QUFBQSxHQUFaLENBQVA7QUFDQTtBQUNELENBVkQ7O0FBWUEsSUFBTUUsUUFBUTtBQUNiQyxRQUFPLEVBRE07QUFFYlQsU0FBUSxFQUZLO0FBR2JDLFVBQVMsQ0FISTtBQUliUyxvQkFBbUIsQ0FKTjtBQUtiQyxjQUFhLENBTEE7QUFNYkMsYUFBWSxFQU5DO0FBT2JDLFlBQVc7QUFQRSxDQUFkOztBQVVBLElBQU1DLFlBQVk7QUFDakJDLFlBRGlCLHVCQUNMUCxLQURLLEVBQ0VRLFFBREYsRUFDWTtBQUM1QjtBQUNBLE1BQUlQLFFBQVFELE1BQU1DLEtBQU4sQ0FBWVEsTUFBWixDQUFtQkMsT0FBT0MsSUFBUCxDQUFZSCxRQUFaLEVBQXNCSSxHQUF0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NEJ0RCxNQUE1QixFQUFzQyxDQUF0QyxDQUFSLEVBQWtELEVBQUVpQyxLQUFLQSxHQUFQLEVBQVlDLE9BQU9BLEtBQW5CLEVBQWxELEVBQ0xxQixJQURLLENBQ0EsVUFBQzVCLFFBQUQ7QUFBQSxhQUFjcUIsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVWlDLFFBQVYsRUFBZUMsWUFBZixFQUE5QixDQUFkO0FBQUEsTUFEQSxFQUVMdUIsS0FGSyxDQUVDLFVBQUNDLEtBQUQsRUFBVztBQUFDLFlBQU1BLEtBQU47QUFBYSxNQUYxQixDQUFQO0FBR0EsS0FKTSxFQUlKRCxLQUpJLENBSUUsVUFBQ0MsS0FBRDtBQUFBLFlBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCLEVBQUV4RCxjQUFGLEVBQVUwRCxZQUFWLEVBQTlCLENBQVg7QUFBQSxLQUpGLENBQVA7QUFLQTtBQUNEO0FBQ0QsU0FBT2UsUUFBUUMsTUFBUixDQUFlLElBQUlDLEtBQUosQ0FBVSxzQkFBVixDQUFmLENBQVA7QUFDQTtBQXpSYyxDQUFoQjs7QUE0UkEseURBQWUsRUFBRXhGLFlBQUYsRUFBU00sb0JBQVQsRUFBb0IrQyxnQkFBcEIsRUFBNkJPLGdCQUE3QixFQUFmIiwiZmlsZSI6IjQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwaSBmcm9tICcuL2FwaSc7XG5cbmNvbnN0IG9yZGVyR3JvdXBzID0gZnVuY3Rpb24oZ3JvdXBzLCBvcmRlckJ5KSB7XG5cdC8qIGNvbnN0IFNPUlRfVVNFUkNPVU5UID0gMTtcblx0ICogY29uc3QgU09SVF9HUk9VUE5BTUUgPSAyO1xuXHQgKiBodHRwczovL2dpdGh1Yi5jb20vbmV4dGNsb3VkL3NlcnZlci9ibG9iLzIwOGUzOGU4NGUxYTA3YTQ5Njk5YWE5MGRjNWI3MjcyZDI0NDg5ZjAvbGliL3ByaXZhdGUvR3JvdXAvTWV0YURhdGEucGhwI0wzNFxuXHQgKi9cblx0aWYgKG9yZGVyQnkgPT09IDEpIHtcblx0XHRyZXR1cm4gZ3JvdXBzLnNvcnQoKGEsIGIpID0+IGEudXNlcmNvdW50IDwgYi51c2VyY291bnQpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBncm91cHMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG5cdH1cbn1cblxuY29uc3Qgc3RhdGUgPSB7XG5cdHVzZXJzOiBbXSxcblx0Z3JvdXBzOiBbXSxcblx0b3JkZXJCeTogMSxcblx0bWluUGFzc3dvcmRMZW5ndGg6IDAsXG5cdHVzZXJzT2Zmc2V0OiAwLFxuXHR1c2Vyc0xpbWl0OiAyNSxcblx0dXNlckNvdW50OiAwXG59O1xuXG5jb25zdCBtdXRhdGlvbnMgPSB7XG5cdGFwcGVuZFVzZXJzKHN0YXRlLCB1c2Vyc09iaikge1xuXHRcdC8vIGNvbnZlcnQgb2JqIHRvIGFycmF5XG5cdFx0bGV0IHVzZXJzID0gc3RhdGUudXNlcnMuY29uY2F0KE9iamVjdC5rZXlzKHVzZXJzT2JqKS5tYXAodXNlcmlkID0+IHVzZXJzT2JqW3VzZXJpZF0pKTtcblx0XHRzdGF0ZS51c2Vyc09mZnNldCArPSBzdGF0ZS51c2Vyc0xpbWl0O1xuXHRcdHN0YXRlLnVzZXJzID0gdXNlcnM7XG5cdH0sXG5cdHNldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoKHN0YXRlLCBsZW5ndGgpIHtcblx0XHRzdGF0ZS5taW5QYXNzd29yZExlbmd0aCA9IGxlbmd0aCE9PScnID8gbGVuZ3RoIDogMDtcblx0fSxcblx0aW5pdEdyb3VwcyhzdGF0ZSwge2dyb3Vwcywgb3JkZXJCeSwgdXNlckNvdW50fSkge1xuXHRcdHN0YXRlLmdyb3VwcyA9IGdyb3Vwcztcblx0XHRzdGF0ZS5vcmRlckJ5ID0gb3JkZXJCeTtcblx0XHRzdGF0ZS51c2VyQ291bnQgPSB1c2VyQ291bnQ7XG5cdFx0c3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcblx0fSxcblx0YWRkR3JvdXAoc3RhdGUsIGdyb3VwaWQpIHtcblx0XHR0cnkge1xuXHRcdFx0c3RhdGUuZ3JvdXBzLnB1c2goe1xuXHRcdFx0XHRpZDogZ3JvdXBpZCxcblx0XHRcdFx0bmFtZTogZ3JvdXBpZCxcblx0XHRcdFx0dXNlcmNvdW50OiAwIC8vIHVzZXIgd2lsbCBiZSBhZGRlZCBhZnRlciB0aGUgY3JlYXRpb25cblx0XHRcdH0pO1xuXHRcdFx0c3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnQ2FuXFwndCBjcmVhdGUgZ3JvdXAnLCBlKTtcblx0XHR9XG5cdH0sXG5cdGFkZFVzZXJHcm91cChzdGF0ZSwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0Ly8gdGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCBhcyBpdCB3b3VsZCBtZWFucyB0aGUgdXNlciBjb250YWlucyBhIGdyb3VwXG5cdFx0Ly8gdGhlIHNlcnZlciBkYXRhYmFzZSBkb2Vzbid0IGhhdmUuXG5cdFx0bGV0IGdyb3VwID0gc3RhdGUuZ3JvdXBzLmZpbmQoZ3JvdXBTZWFyY2ggPT4gZ3JvdXBTZWFyY2guaWQgPT0gZ2lkKTtcblx0XHRpZiAoZ3JvdXApIHtcblx0XHRcdGdyb3VwLnVzZXJjb3VudCsrOyAvLyBpbmNyZWFzZSBjb3VudFxuXHRcdH1cblx0XHRsZXQgZ3JvdXBzID0gc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKS5ncm91cHM7XG5cdFx0Z3JvdXBzLnB1c2goZ2lkKTtcblx0XHRzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuXHR9LFxuXHRyZW1vdmVVc2VyR3JvdXAoc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuXHRcdC8vIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgYXMgaXQgd291bGQgbWVhbnMgdGhlIHVzZXIgY29udGFpbnMgYSBncm91cFxuXHRcdC8vIHRoZSBzZXJ2ZXIgZGF0YWJhc2UgZG9lc24ndCBoYXZlLlxuXHRcdGxldCBncm91cCA9IHN0YXRlLmdyb3Vwcy5maW5kKGdyb3VwU2VhcmNoID0+IGdyb3VwU2VhcmNoLmlkID09IGdpZCk7XG5cdFx0aWYgKGdyb3VwKSB7XG5cdFx0XHRncm91cC51c2VyY291bnQtLTsgLy8gbG93ZXIgY291bnRcblx0XHR9XG5cdFx0bGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuZ3JvdXBzO1xuXHRcdGdyb3Vwcy5zcGxpY2UoZ3JvdXBzLmluZGV4T2YoZ2lkKSwxKTtcblx0XHRzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuXHR9LFxuXHRhZGRVc2VyU3ViQWRtaW4oc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuXHRcdGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLnN1YmFkbWluO1xuXHRcdGdyb3Vwcy5wdXNoKGdpZCk7XG5cdH0sXG5cdHJlbW92ZVVzZXJTdWJBZG1pbihzdGF0ZSwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0bGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuc3ViYWRtaW47XG5cdFx0Z3JvdXBzLnNwbGljZShncm91cHMuaW5kZXhPZihnaWQpLDEpO1xuXHR9LFxuXHRkZWxldGVVc2VyKHN0YXRlLCB1c2VyaWQpIHtcblx0XHRsZXQgdXNlckluZGV4ID0gc3RhdGUudXNlcnMuZmluZEluZGV4KHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpO1xuXHRcdHN0YXRlLnVzZXJzLnNwbGljZSh1c2VySW5kZXgsIDEpO1xuXHR9LFxuXHRhZGRVc2VyRGF0YShzdGF0ZSwgcmVzcG9uc2UpIHtcblx0XHRzdGF0ZS51c2Vycy5wdXNoKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEpO1xuXHR9LFxuXHRlbmFibGVEaXNhYmxlVXNlcihzdGF0ZSwgeyB1c2VyaWQsIGVuYWJsZWQgfSkge1xuXHRcdHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuZW5hYmxlZCA9IGVuYWJsZWQ7XG5cdFx0Ly8gaW5jcmVtZW50IG9yIG5vdFxuXHRcdHN0YXRlLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmlkID09ICdfZGlzYWJsZWQnKS51c2VyY291bnQgKz0gZW5hYmxlZCA/IC0xIDogMTtcblx0XHRzdGF0ZS51c2VyQ291bnQgKz0gZW5hYmxlZCA/IDEgOiAtMTtcblx0XHRjb25zb2xlLmxvZyhlbmFibGVkKTtcblx0fSxcblx0c2V0VXNlckRhdGEoc3RhdGUsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pIHtcblx0XHRpZiAoa2V5ID09PSAncXVvdGEnKSB7XG5cdFx0XHRsZXQgaHVtYW5WYWx1ZSA9IE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZSh2YWx1ZSk7XG5cdFx0XHRzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpW2tleV1ba2V5XSA9IGh1bWFuVmFsdWU/aHVtYW5WYWx1ZTp2YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKVtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXNldCB1c2VycyBsaXN0XG5cdCAqL1xuXHRyZXNldFVzZXJzKHN0YXRlKSB7XG5cdFx0c3RhdGUudXNlcnMgPSBbXTtcblx0XHRzdGF0ZS51c2Vyc09mZnNldCA9IDA7XG5cdH1cbn07XG5cbmNvbnN0IGdldHRlcnMgPSB7XG5cdGdldFVzZXJzKHN0YXRlKSB7XG5cdFx0cmV0dXJuIHN0YXRlLnVzZXJzO1xuXHR9LFxuXHRnZXRHcm91cHMoc3RhdGUpIHtcblx0XHRyZXR1cm4gc3RhdGUuZ3JvdXBzO1xuXHR9LFxuXHRnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aChzdGF0ZSkge1xuXHRcdHJldHVybiBzdGF0ZS5taW5QYXNzd29yZExlbmd0aDtcblx0fSxcblx0Z2V0VXNlcnNPZmZzZXQoc3RhdGUpIHtcblx0XHRyZXR1cm4gc3RhdGUudXNlcnNPZmZzZXQ7XG5cdH0sXG5cdGdldFVzZXJzTGltaXQoc3RhdGUpIHtcblx0XHRyZXR1cm4gc3RhdGUudXNlcnNMaW1pdDtcblx0fSxcblx0Z2V0VXNlckNvdW50KHN0YXRlKSB7XG5cdFx0cmV0dXJuIHN0YXRlLnVzZXJDb3VudDtcblx0fVxufTtcblxuY29uc3QgYWN0aW9ucyA9IHtcblxuXHQvKipcblx0ICogR2V0IGFsbCB1c2VycyB3aXRoIGZ1bGwgZGV0YWlsc1xuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMub2Zmc2V0IExpc3Qgb2Zmc2V0IHRvIHJlcXVlc3Rcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMubGltaXQgTGlzdCBudW1iZXIgdG8gcmV0dXJuIGZyb20gb2Zmc2V0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnNlYXJjaCBTZWFyY2ggYW1vbmdzdCB1c2Vyc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5ncm91cCBHZXQgdXNlcnMgZnJvbSBncm91cFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGdldFVzZXJzKGNvbnRleHQsIHsgb2Zmc2V0LCBsaW1pdCwgc2VhcmNoLCBncm91cCB9KSB7XG5cdFx0c2VhcmNoID0gdHlwZW9mIHNlYXJjaCA9PT0gJ3N0cmluZycgPyBzZWFyY2ggOiAnJztcblx0XHRncm91cCA9IHR5cGVvZiBncm91cCA9PT0gJ3N0cmluZycgPyBncm91cCA6ICcnO1xuXHRcdGlmIChncm91cCAhPT0gJycpIHtcblx0XHRcdHJldHVybiBhcGkuZ2V0KE9DLmxpbmtUb09DUyhgY2xvdWQvZ3JvdXBzLyR7Z3JvdXB9L3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG5cdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG5cdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IGFsbCB1c2VycyB3aXRoIGZ1bGwgZGV0YWlsc1xuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMub2Zmc2V0IExpc3Qgb2Zmc2V0IHRvIHJlcXVlc3Rcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMubGltaXQgTGlzdCBudW1iZXIgdG8gcmV0dXJuIGZyb20gb2Zmc2V0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0Z2V0VXNlcnNGcm9tTGlzdChjb250ZXh0LCB7IG9mZnNldCwgbGltaXQsIHNlYXJjaCB9KSB7XG5cdFx0c2VhcmNoID0gdHlwZW9mIHNlYXJjaCA9PT0gJ3N0cmluZycgPyBzZWFyY2ggOiAnJztcblx0XHRyZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG5cdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IGFsbCB1c2VycyB3aXRoIGZ1bGwgZGV0YWlscyBmcm9tIGEgZ3JvdXBpZFxuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMub2Zmc2V0IExpc3Qgb2Zmc2V0IHRvIHJlcXVlc3Rcblx0ICogQHBhcmFtIHtpbnR9IG9wdGlvbnMubGltaXQgTGlzdCBudW1iZXIgdG8gcmV0dXJuIGZyb20gb2Zmc2V0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0Z2V0VXNlcnNGcm9tR3JvdXAoY29udGV4dCwgeyBncm91cGlkLCBvZmZzZXQsIGxpbWl0IH0pIHtcblx0XHRyZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7Z3JvdXBpZH0vZGV0YWlscz9vZmZzZXQ9JHtvZmZzZXR9JmxpbWl0PSR7bGltaXR9YCwgMikpXG5cdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdnZXRVc2Vyc0Zyb21MaXN0JywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2VycykpXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuXHR9LFxuXHRcblxuXHRnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aChjb250ZXh0KSB7XG5cdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKCdhcHBzL3Byb3Zpc2lvbmluZ19hcGkvYXBpL3YxL2NvbmZpZy9hcHBzL3Bhc3N3b3JkX3BvbGljeS9taW5MZW5ndGgnLCAyKSlcblx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3NldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoJywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS5kYXRhKSlcblx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCBncm91cFxuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGdpZCBHcm91cCBpZFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGFkZEdyb3VwKGNvbnRleHQsIGdpZCkge1xuXHRcdHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdHJldHVybiBhcGkucG9zdChPQy5saW5rVG9PQ1MoYGNsb3VkL2dyb3Vwc2AsIDIpLCB7Z3JvdXBpZDogZ2lkfSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkR3JvdXAnLCBnaWQpKVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7dGhyb3cgZXJyb3I7fSk7XG5cdFx0fSkuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgZ3JvdXBcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBnaWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRyZW1vdmVHcm91cChjb250ZXh0LCBnaWQpIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC9ncm91cHNgLCAyKSwge2dyb3VwaWQ6IGdpZH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3JlbW92ZUdyb3VwJywgZ2lkKSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIHVzZXIgdG8gZ3JvdXBcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGFkZFVzZXJHcm91cChjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vZ3JvdXBzYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZFVzZXJHcm91cCcsIHsgdXNlcmlkLCBnaWQgfSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdHJlbW92ZVVzZXJHcm91cChjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLmRlbGV0ZShPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfS9ncm91cHNgLCAyKSwgeyBncm91cGlkOiBnaWQgfSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgncmVtb3ZlVXNlckdyb3VwJywgeyB1c2VyaWQsIGdpZCB9KSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIHVzZXIgdG8gZ3JvdXAgYWRtaW5cblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGFkZFVzZXJTdWJBZG1pbihjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vc3ViYWRtaW5zYCwgMiksICB7IGdyb3VwaWQ6IGdpZCB9KVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdhZGRVc2VyU3ViQWRtaW4nLCB7IHVzZXJpZCwgZ2lkIH0pKVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7dGhyb3cgZXJyb3I7fSk7XG5cdFx0fSkuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdXNlciBmcm9tIGdyb3VwIGFkbWluXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRyZW1vdmVVc2VyU3ViQWRtaW4oY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vc3ViYWRtaW5zYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3JlbW92ZVVzZXJTdWJBZG1pbicsIHsgdXNlcmlkLCBnaWQgfSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIERlbGV0ZSBhIHVzZXJcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyaWQgVXNlciBpZCBcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRkZWxldGVVc2VyKGNvbnRleHQsIHsgdXNlcmlkIH0pIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLmRlbGV0ZShPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfWAsIDIpKVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdkZWxldGVVc2VyJywgdXNlcmlkKSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIGEgdXNlclxuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFzc3dvcmQgVXNlciBwYXNzd29yZCBcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZW1haWwgVXNlciBlbWFpbFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5ncm91cHMgVXNlciBncm91cHNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuc3ViYWRtaW4gVXNlciBzdWJhZG1pbiBncm91cHNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucXVvdGEgVXNlciBlbWFpbFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGFkZFVzZXIoe2NvbnRleHQsIGRpc3BhdGNofSwgeyB1c2VyaWQsIHBhc3N3b3JkLCBlbWFpbCwgZ3JvdXBzLCBzdWJhZG1pbiwgcXVvdGEgfSkge1xuXHRcdGNvbnNvbGUubG9nKHN1YmFkbWluLCBxdW90YSk7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnNgLCAyKSwgeyB1c2VyaWQsIHBhc3N3b3JkLCBlbWFpbCwgZ3JvdXBzLCBzdWJhZG1pbiwgcXVvdGEgfSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiAge1xuXHRcdFx0XHRcdC8vbGV0IHF1b3RhRGlzID0gZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywgeyB1c2VyaWQsIGtleTogJ3F1b3RhJywgdmFsdWU6cXVvdGEgfSk7XG5cdFx0XHRcdFx0Ly9sZXQgc3ViYWRtaW5EaXMgPSBkaXNwYXRjaCgnYWRkVXNlclN1YkFkbWluJywgdXNlcmlkKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHVzZXIgZGF0YSBhbmQgY29tbWl0IGFkZGl0aW9uXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXNlcmlkIFVzZXIgaWQgXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0YWRkVXNlckRhdGEoY29udGV4dCwgdXNlcmlkKSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkVXNlckRhdGEnLCByZXNwb25zZSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqIEVuYWJsZSBvciBkaXNhYmxlIHVzZXIgXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZW5hYmxlZCBVc2VyIGVuYWJsZW1lbnQgc3RhdHVzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0ZW5hYmxlRGlzYWJsZVVzZXIoY29udGV4dCwgeyB1c2VyaWQsIGVuYWJsZWQgPSB0cnVlIH0pIHtcblx0XHRsZXQgdXNlclN0YXR1cyA9IGVuYWJsZWQgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJztcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnB1dChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfS8ke3VzZXJTdGF0dXN9YCwgMikpXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2VuYWJsZURpc2FibGVVc2VyJywgeyB1c2VyaWQsIGVuYWJsZWQgfSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEVkaXQgdXNlciBkYXRhXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCBcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IFVzZXIgZmllbGQgdG8gZWRpdFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy52YWx1ZSBWYWx1ZSBvZiB0aGUgY2hhbmdlXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0c2V0VXNlckRhdGEoY29udGV4dCwgeyB1c2VyaWQsIGtleSwgdmFsdWUgfSkge1xuXHRcdGxldCBhbGxvd2VkRW1wdHkgPSBbJ2VtYWlsJywgJ2Rpc3BsYXluYW1lJ107XG5cdFx0aWYgKFsnZW1haWwnLCAnbGFuZ3VhZ2UnLCAncXVvdGEnLCAnZGlzcGxheW5hbWUnLCAncGFzc3dvcmQnXS5pbmRleE9mKGtleSkgIT09IC0xKSB7XG5cdFx0XHQvLyBXZSBhbGxvdyBlbXB0eSBlbWFpbCBvciBkaXNwbGF5bmFtZVxuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcblx0XHRcdFx0KFxuXHRcdFx0XHRcdChhbGxvd2VkRW1wdHkuaW5kZXhPZihrZXkpID09PSAtMSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fFxuXHRcdFx0XHRcdGFsbG93ZWRFbXB0eS5pbmRleE9mKGtleSkgIT09IC0xXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwaS5wdXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSwgeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlIH0pXG5cdFx0XHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdzZXRVc2VyRGF0YScsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pKVxuXHRcdFx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdFx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCBkYXRhJykpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7IHN0YXRlLCBtdXRhdGlvbnMsIGdldHRlcnMsIGFjdGlvbnMgfTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvc3RvcmUvdXNlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__api__ = __webpack_require__(17);\n\n\nvar orderGroups = function orderGroups(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n * const SORT_GROUPNAME = 2;\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\n\tif (orderBy === 1) {\n\t\treturn groups.sort(function (a, b) {\n\t\t\treturn a.usercount < b.usercount;\n\t\t});\n\t} else {\n\t\treturn groups.sort(function (a, b) {\n\t\t\treturn a.name.localeCompare(b.name);\n\t\t});\n\t}\n};\n\nvar state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0\n};\n\nvar mutations = {\n\tappendUsers: function appendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tvar users = state.users.concat(Object.keys(usersObj).map(function (userid) {\n\t\t\treturn usersObj[userid];\n\t\t}));\n\t\tstate.usersOffset += state.usersLimit;\n\t\tstate.users = users;\n\t},\n\tsetPasswordPolicyMinLength: function setPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0;\n\t},\n\tinitGroups: function initGroups(state, _ref) {\n\t\tvar groups = _ref.groups,\n\t\t orderBy = _ref.orderBy,\n\t\t userCount = _ref.userCount;\n\n\t\tstate.groups = groups;\n\t\tstate.orderBy = orderBy;\n\t\tstate.userCount = userCount;\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\taddGroup: function addGroup(state, groupid) {\n\t\ttry {\n\t\t\tstate.groups.push({\n\t\t\t\tid: groupid,\n\t\t\t\tname: groupid,\n\t\t\t\tusercount: 0 // user will be added after the creation\n\t\t\t});\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t\t} catch (e) {\n\t\t\tconsole.log('Can\\'t create group', e);\n\t\t}\n\t},\n\taddUserGroup: function addUserGroup(state, _ref2) {\n\t\tvar userid = _ref2.userid,\n\t\t gid = _ref2.gid;\n\n\t\t// this should not be needed as it would means the user contains a group\n\t\t// the server database doesn't have.\n\t\tvar group = state.groups.find(function (groupSearch) {\n\t\t\treturn groupSearch.id == gid;\n\t\t});\n\t\tif (group) {\n\t\t\tgroup.usercount++; // increase count\n\t\t}\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).groups;\n\t\tgroups.push(gid);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\tremoveUserGroup: function removeUserGroup(state, _ref3) {\n\t\tvar userid = _ref3.userid,\n\t\t gid = _ref3.gid;\n\n\t\t// this should not be needed as it would means the user contains a group\n\t\t// the server database doesn't have.\n\t\tvar group = state.groups.find(function (groupSearch) {\n\t\t\treturn groupSearch.id == gid;\n\t\t});\n\t\tif (group) {\n\t\t\tgroup.usercount--; // lower count\n\t\t}\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).groups;\n\t\tgroups.splice(groups.indexOf(gid), 1);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\taddUserSubAdmin: function addUserSubAdmin(state, _ref4) {\n\t\tvar userid = _ref4.userid,\n\t\t gid = _ref4.gid;\n\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).subadmin;\n\t\tgroups.push(gid);\n\t},\n\tremoveUserSubAdmin: function removeUserSubAdmin(state, _ref5) {\n\t\tvar userid = _ref5.userid,\n\t\t gid = _ref5.gid;\n\n\t\tvar groups = state.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).subadmin;\n\t\tgroups.splice(groups.indexOf(gid), 1);\n\t},\n\tdeleteUser: function deleteUser(state, userid) {\n\t\tvar userIndex = state.users.findIndex(function (user) {\n\t\t\treturn user.id == userid;\n\t\t});\n\t\tstate.users.splice(userIndex, 1);\n\t},\n\taddUserData: function addUserData(state, response) {\n\t\tstate.users.push(response.data.ocs.data);\n\t},\n\tenableDisableUser: function enableDisableUser(state, _ref6) {\n\t\tvar userid = _ref6.userid,\n\t\t enabled = _ref6.enabled;\n\n\t\tstate.users.find(function (user) {\n\t\t\treturn user.id == userid;\n\t\t}).enabled = enabled;\n\t\t// increment or not\n\t\tstate.groups.find(function (group) {\n\t\t\treturn group.id == '_disabled';\n\t\t}).usercount += enabled ? -1 : 1;\n\t\tstate.userCount += enabled ? 1 : -1;\n\t\tconsole.log(enabled);\n\t},\n\tsetUserData: function setUserData(state, _ref7) {\n\t\tvar userid = _ref7.userid,\n\t\t key = _ref7.key,\n\t\t value = _ref7.value;\n\n\t\tif (key === 'quota') {\n\t\t\tvar humanValue = OC.Util.computerFileSize(value);\n\t\t\tstate.users.find(function (user) {\n\t\t\t\treturn user.id == userid;\n\t\t\t})[key][key] = humanValue ? humanValue : value;\n\t\t} else {\n\t\t\tstate.users.find(function (user) {\n\t\t\t\treturn user.id == userid;\n\t\t\t})[key] = value;\n\t\t}\n\t},\n\n\n\t/**\n * Reset users list\n */\n\tresetUsers: function resetUsers(state) {\n\t\tstate.users = [];\n\t\tstate.usersOffset = 0;\n\t}\n};\n\nvar getters = {\n\tgetUsers: function getUsers(state) {\n\t\treturn state.users;\n\t},\n\tgetGroups: function getGroups(state) {\n\t\treturn state.groups;\n\t},\n\tgetPasswordPolicyMinLength: function getPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength;\n\t},\n\tgetUsersOffset: function getUsersOffset(state) {\n\t\treturn state.usersOffset;\n\t},\n\tgetUsersLimit: function getUsersLimit(state) {\n\t\treturn state.usersLimit;\n\t},\n\tgetUserCount: function getUserCount(state) {\n\t\treturn state.userCount;\n\t}\n};\n\nvar actions = {\n\n\t/**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @param {string} options.search Search amongst users\n * @param {string} options.group Get users from group\n * @returns {Promise}\n */\n\tgetUsers: function getUsers(context, _ref8) {\n\t\tvar offset = _ref8.offset,\n\t\t limit = _ref8.limit,\n\t\t search = _ref8.search,\n\t\t group = _ref8.group;\n\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\tgroup = typeof group === 'string' ? group : '';\n\t\tif (group !== '') {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/groups/' + group + '/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}).catch(function (error) {\n\t\t\t\treturn context.commit('API_FAILURE', error);\n\t\t\t});\n\t\t}\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n\tgetUsersFromList: function getUsersFromList(context, _ref9) {\n\t\tvar offset = _ref9.offset,\n\t\t limit = _ref9.limit,\n\t\t search = _ref9.search;\n\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Get all users with full details from a groupid\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n\tgetUsersFromGroup: function getUsersFromGroup(context, _ref10) {\n\t\tvar groupid = _ref10.groupid,\n\t\t offset = _ref10.offset,\n\t\t limit = _ref10.limit;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + groupid + '/details?offset=' + offset + '&limit=' + limit, 2)).then(function (response) {\n\t\t\treturn context.commit('getUsersFromList', response.data.ocs.data.users);\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\tgetPasswordPolicyMinLength: function getPasswordPolicyMinLength(context) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('apps/provisioning_api/api/v1/config/apps/password_policy/minLength', 2)).then(function (response) {\n\t\t\treturn context.commit('setPasswordPolicyMinLength', response.data.ocs.data.data);\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', error);\n\t\t});\n\t},\n\n\n\t/**\n * Add group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n\taddGroup: function addGroup(context, gid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addGroup', gid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n\tremoveGroup: function removeGroup(context, gid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeGroup', gid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add user to group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\taddUserGroup: function addUserGroup(context, _ref11) {\n\t\tvar userid = _ref11.userid,\n\t\t gid = _ref11.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addUserGroup', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove user from group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\tremoveUserGroup: function removeUserGroup(context, _ref12) {\n\t\tvar userid = _ref12.userid,\n\t\t gid = _ref12.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeUserGroup', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add user to group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\taddUserSubAdmin: function addUserSubAdmin(context, _ref13) {\n\t\tvar userid = _ref13.userid,\n\t\t gid = _ref13.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('addUserSubAdmin', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Remove user from group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n\tremoveUserSubAdmin: function removeUserSubAdmin(context, _ref14) {\n\t\tvar userid = _ref14.userid,\n\t\t gid = _ref14.gid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n\t\t\t\treturn context.commit('removeUserSubAdmin', { userid: userid, gid: gid });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Delete a user\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n\tdeleteUser: function deleteUser(context, _ref15) {\n\t\tvar userid = _ref15.userid;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n\t\t\t\treturn context.commit('deleteUser', userid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Add a user\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.password User password \n * @param {string} options.email User email\n * @param {string} options.groups User groups\n * @param {string} options.subadmin User subadmin groups\n * @param {string} options.quota User email\n * @returns {Promise}\n */\n\taddUser: function addUser(_ref16, _ref17) {\n\t\tvar context = _ref16.context,\n\t\t dispatch = _ref16.dispatch;\n\t\tvar userid = _ref17.userid,\n\t\t password = _ref17.password,\n\t\t email = _ref17.email,\n\t\t groups = _ref17.groups,\n\t\t subadmin = _ref17.subadmin,\n\t\t quota = _ref17.quota,\n\t\t language = _ref17.language;\n\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users', 2), { userid: userid, password: password, email: email, groups: groups, subadmin: subadmin, quota: quota, language: language }).then(function (response) {\n\t\t\t\treturn dispatch('addUserData', userid);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Get user data and commit addition\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n\taddUserData: function addUserData(context, userid) {\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n\t\t\t\treturn context.commit('addUserData', response);\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/** Enable or disable user \n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {boolean} options.enabled User enablement status\n * @returns {Promise}\n */\n\tenableDisableUser: function enableDisableUser(context, _ref18) {\n\t\tvar userid = _ref18.userid,\n\t\t _ref18$enabled = _ref18.enabled,\n\t\t enabled = _ref18$enabled === undefined ? true : _ref18$enabled;\n\n\t\tvar userStatus = enabled ? 'enable' : 'disable';\n\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid + '/' + userStatus, 2)).then(function (response) {\n\t\t\t\treturn context.commit('enableDisableUser', { userid: userid, enabled: enabled });\n\t\t\t}).catch(function (error) {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}).catch(function (error) {\n\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t});\n\t},\n\n\n\t/**\n * Edit user data\n * \n * @param {Object} context \n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.key User field to edit\n * @param {string} options.value Value of the change\n * @returns {Promise}\n */\n\tsetUserData: function setUserData(context, _ref19) {\n\t\tvar userid = _ref19.userid,\n\t\t key = _ref19.key,\n\t\t value = _ref19.value;\n\n\t\tvar allowedEmpty = ['email', 'displayname'];\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string' && (allowedEmpty.indexOf(key) === -1 && value.length > 0 || allowedEmpty.indexOf(key) !== -1)) {\n\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n\t\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid, 2), { key: key, value: value }).then(function (response) {\n\t\t\t\t\t\treturn context.commit('setUserData', { userid: userid, key: key, value: value });\n\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t}).catch(function (error) {\n\t\t\t\t\treturn context.commit('API_FAILURE', { userid: userid, error: error });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'));\n\t}\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({ state: state, mutations: mutations, getters: getters, actions: actions });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RvcmUvdXNlcnMuanM/MjhjMiJdLCJuYW1lcyI6WyJvcmRlckdyb3VwcyIsImdyb3VwcyIsIm9yZGVyQnkiLCJzb3J0IiwiYSIsImIiLCJ1c2VyY291bnQiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsInN0YXRlIiwidXNlcnMiLCJtaW5QYXNzd29yZExlbmd0aCIsInVzZXJzT2Zmc2V0IiwidXNlcnNMaW1pdCIsInVzZXJDb3VudCIsIm11dGF0aW9ucyIsImFwcGVuZFVzZXJzIiwidXNlcnNPYmoiLCJjb25jYXQiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwidXNlcmlkIiwic2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJsZW5ndGgiLCJpbml0R3JvdXBzIiwiYWRkR3JvdXAiLCJncm91cGlkIiwicHVzaCIsImlkIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJhZGRVc2VyR3JvdXAiLCJnaWQiLCJncm91cCIsImZpbmQiLCJncm91cFNlYXJjaCIsInVzZXIiLCJyZW1vdmVVc2VyR3JvdXAiLCJzcGxpY2UiLCJpbmRleE9mIiwiYWRkVXNlclN1YkFkbWluIiwic3ViYWRtaW4iLCJyZW1vdmVVc2VyU3ViQWRtaW4iLCJkZWxldGVVc2VyIiwidXNlckluZGV4IiwiZmluZEluZGV4IiwiYWRkVXNlckRhdGEiLCJyZXNwb25zZSIsImRhdGEiLCJvY3MiLCJlbmFibGVEaXNhYmxlVXNlciIsImVuYWJsZWQiLCJzZXRVc2VyRGF0YSIsImtleSIsInZhbHVlIiwiaHVtYW5WYWx1ZSIsIk9DIiwiVXRpbCIsImNvbXB1dGVyRmlsZVNpemUiLCJyZXNldFVzZXJzIiwiZ2V0dGVycyIsImdldFVzZXJzIiwiZ2V0R3JvdXBzIiwiZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJnZXRVc2Vyc09mZnNldCIsImdldFVzZXJzTGltaXQiLCJnZXRVc2VyQ291bnQiLCJhY3Rpb25zIiwiY29udGV4dCIsIm9mZnNldCIsImxpbWl0Iiwic2VhcmNoIiwiYXBpIiwiZ2V0IiwibGlua1RvT0NTIiwidGhlbiIsImNvbW1pdCIsImNhdGNoIiwiZXJyb3IiLCJnZXRVc2Vyc0Zyb21MaXN0IiwiZ2V0VXNlcnNGcm9tR3JvdXAiLCJyZXF1aXJlQWRtaW4iLCJwb3N0IiwicmVtb3ZlR3JvdXAiLCJkZWxldGUiLCJhZGRVc2VyIiwiZGlzcGF0Y2giLCJwYXNzd29yZCIsImVtYWlsIiwicXVvdGEiLCJsYW5ndWFnZSIsInVzZXJTdGF0dXMiLCJwdXQiLCJhbGxvd2VkRW1wdHkiLCJQcm9taXNlIiwicmVqZWN0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTs7QUFFQSxJQUFNQSxjQUFjLFNBQWRBLFdBQWMsQ0FBU0MsTUFBVCxFQUFpQkMsT0FBakIsRUFBMEI7QUFDN0M7Ozs7QUFJQSxLQUFJQSxZQUFZLENBQWhCLEVBQW1CO0FBQ2xCLFNBQU9ELE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxVQUFVRCxFQUFFRSxTQUFGLEdBQWNELEVBQUVDLFNBQTFCO0FBQUEsR0FBWixDQUFQO0FBQ0EsRUFGRCxNQUVPO0FBQ04sU0FBT0wsT0FBT0UsSUFBUCxDQUFZLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLFVBQVVELEVBQUVHLElBQUYsQ0FBT0MsYUFBUCxDQUFxQkgsRUFBRUUsSUFBdkIsQ0FBVjtBQUFBLEdBQVosQ0FBUDtBQUNBO0FBQ0QsQ0FWRDs7QUFZQSxJQUFNRSxRQUFRO0FBQ2JDLFFBQU8sRUFETTtBQUViVCxTQUFRLEVBRks7QUFHYkMsVUFBUyxDQUhJO0FBSWJTLG9CQUFtQixDQUpOO0FBS2JDLGNBQWEsQ0FMQTtBQU1iQyxhQUFZLEVBTkM7QUFPYkMsWUFBVztBQVBFLENBQWQ7O0FBVUEsSUFBTUMsWUFBWTtBQUNqQkMsWUFEaUIsdUJBQ0xQLEtBREssRUFDRVEsUUFERixFQUNZO0FBQzVCO0FBQ0EsTUFBSVAsUUFBUUQsTUFBTUMsS0FBTixDQUFZUSxNQUFaLENBQW1CQyxPQUFPQyxJQUFQLENBQVlILFFBQVosRUFBc0JJLEdBQXRCLENBQTBCO0FBQUEsVUFBVUosU0FBU0ssTUFBVCxDQUFWO0FBQUEsR0FBMUIsQ0FBbkIsQ0FBWjtBQUNBYixRQUFNRyxXQUFOLElBQXFCSCxNQUFNSSxVQUEzQjtBQUNBSixRQUFNQyxLQUFOLEdBQWNBLEtBQWQ7QUFDQSxFQU5nQjtBQU9qQmEsMkJBUGlCLHNDQU9VZCxLQVBWLEVBT2lCZSxNQVBqQixFQU95QjtBQUN6Q2YsUUFBTUUsaUJBQU4sR0FBMEJhLFdBQVMsRUFBVCxHQUFjQSxNQUFkLEdBQXVCLENBQWpEO0FBQ0EsRUFUZ0I7QUFVakJDLFdBVmlCLHNCQVVOaEIsS0FWTSxRQVUrQjtBQUFBLE1BQTdCUixNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxNQUFyQkMsT0FBcUIsUUFBckJBLE9BQXFCO0FBQUEsTUFBWlksU0FBWSxRQUFaQSxTQUFZOztBQUMvQ0wsUUFBTVIsTUFBTixHQUFlQSxNQUFmO0FBQ0FRLFFBQU1QLE9BQU4sR0FBZ0JBLE9BQWhCO0FBQ0FPLFFBQU1LLFNBQU4sR0FBa0JBLFNBQWxCO0FBQ0FMLFFBQU1SLE1BQU4sR0FBZUQsWUFBWVMsTUFBTVIsTUFBbEIsRUFBMEJRLE1BQU1QLE9BQWhDLENBQWY7QUFDQSxFQWZnQjtBQWdCakJ3QixTQWhCaUIsb0JBZ0JSakIsS0FoQlEsRUFnQkRrQixPQWhCQyxFQWdCUTtBQUN4QixNQUFJO0FBQ0hsQixTQUFNUixNQUFOLENBQWEyQixJQUFiLENBQWtCO0FBQ2pCQyxRQUFJRixPQURhO0FBRWpCcEIsVUFBTW9CLE9BRlc7QUFHakJyQixlQUFXLENBSE0sQ0FHSjtBQUhJLElBQWxCO0FBS0FHLFNBQU1SLE1BQU4sR0FBZUQsWUFBWVMsTUFBTVIsTUFBbEIsRUFBMEJRLE1BQU1QLE9BQWhDLENBQWY7QUFDQSxHQVBELENBT0UsT0FBTzRCLENBQVAsRUFBVTtBQUNYQyxXQUFRQyxHQUFSLENBQVkscUJBQVosRUFBbUNGLENBQW5DO0FBQ0E7QUFDRCxFQTNCZ0I7QUE0QmpCRyxhQTVCaUIsd0JBNEJKeEIsS0E1QkksU0E0Qm9CO0FBQUEsTUFBZmEsTUFBZSxTQUFmQSxNQUFlO0FBQUEsTUFBUFksR0FBTyxTQUFQQSxHQUFPOztBQUNwQztBQUNBO0FBQ0EsTUFBSUMsUUFBUTFCLE1BQU1SLE1BQU4sQ0FBYW1DLElBQWIsQ0FBa0I7QUFBQSxVQUFlQyxZQUFZUixFQUFaLElBQWtCSyxHQUFqQztBQUFBLEdBQWxCLENBQVo7QUFDQSxNQUFJQyxLQUFKLEVBQVc7QUFDVkEsU0FBTTdCLFNBQU4sR0FEVSxDQUNTO0FBQ25CO0FBQ0QsTUFBSUwsU0FBU1EsTUFBTUMsS0FBTixDQUFZMEIsSUFBWixDQUFpQjtBQUFBLFVBQVFFLEtBQUtULEVBQUwsSUFBV1AsTUFBbkI7QUFBQSxHQUFqQixFQUE0Q3JCLE1BQXpEO0FBQ0FBLFNBQU8yQixJQUFQLENBQVlNLEdBQVo7QUFDQXpCLFFBQU1SLE1BQU4sR0FBZUQsWUFBWVMsTUFBTVIsTUFBbEIsRUFBMEJRLE1BQU1QLE9BQWhDLENBQWY7QUFDQSxFQXRDZ0I7QUF1Q2pCcUMsZ0JBdkNpQiwyQkF1Q0Q5QixLQXZDQyxTQXVDdUI7QUFBQSxNQUFmYSxNQUFlLFNBQWZBLE1BQWU7QUFBQSxNQUFQWSxHQUFPLFNBQVBBLEdBQU87O0FBQ3ZDO0FBQ0E7QUFDQSxNQUFJQyxRQUFRMUIsTUFBTVIsTUFBTixDQUFhbUMsSUFBYixDQUFrQjtBQUFBLFVBQWVDLFlBQVlSLEVBQVosSUFBa0JLLEdBQWpDO0FBQUEsR0FBbEIsQ0FBWjtBQUNBLE1BQUlDLEtBQUosRUFBVztBQUNWQSxTQUFNN0IsU0FBTixHQURVLENBQ1M7QUFDbkI7QUFDRCxNQUFJTCxTQUFTUSxNQUFNQyxLQUFOLENBQVkwQixJQUFaLENBQWlCO0FBQUEsVUFBUUUsS0FBS1QsRUFBTCxJQUFXUCxNQUFuQjtBQUFBLEdBQWpCLEVBQTRDckIsTUFBekQ7QUFDQUEsU0FBT3VDLE1BQVAsQ0FBY3ZDLE9BQU93QyxPQUFQLENBQWVQLEdBQWYsQ0FBZCxFQUFrQyxDQUFsQztBQUNBekIsUUFBTVIsTUFBTixHQUFlRCxZQUFZUyxNQUFNUixNQUFsQixFQUEwQlEsTUFBTVAsT0FBaEMsQ0FBZjtBQUNBLEVBakRnQjtBQWtEakJ3QyxnQkFsRGlCLDJCQWtERGpDLEtBbERDLFNBa0R1QjtBQUFBLE1BQWZhLE1BQWUsU0FBZkEsTUFBZTtBQUFBLE1BQVBZLEdBQU8sU0FBUEEsR0FBTzs7QUFDdkMsTUFBSWpDLFNBQVNRLE1BQU1DLEtBQU4sQ0FBWTBCLElBQVosQ0FBaUI7QUFBQSxVQUFRRSxLQUFLVCxFQUFMLElBQVdQLE1BQW5CO0FBQUEsR0FBakIsRUFBNENxQixRQUF6RDtBQUNBMUMsU0FBTzJCLElBQVAsQ0FBWU0sR0FBWjtBQUNBLEVBckRnQjtBQXNEakJVLG1CQXREaUIsOEJBc0RFbkMsS0F0REYsU0FzRDBCO0FBQUEsTUFBZmEsTUFBZSxTQUFmQSxNQUFlO0FBQUEsTUFBUFksR0FBTyxTQUFQQSxHQUFPOztBQUMxQyxNQUFJakMsU0FBU1EsTUFBTUMsS0FBTixDQUFZMEIsSUFBWixDQUFpQjtBQUFBLFVBQVFFLEtBQUtULEVBQUwsSUFBV1AsTUFBbkI7QUFBQSxHQUFqQixFQUE0Q3FCLFFBQXpEO0FBQ0ExQyxTQUFPdUMsTUFBUCxDQUFjdkMsT0FBT3dDLE9BQVAsQ0FBZVAsR0FBZixDQUFkLEVBQWtDLENBQWxDO0FBQ0EsRUF6RGdCO0FBMERqQlcsV0ExRGlCLHNCQTBETnBDLEtBMURNLEVBMERDYSxNQTFERCxFQTBEUztBQUN6QixNQUFJd0IsWUFBWXJDLE1BQU1DLEtBQU4sQ0FBWXFDLFNBQVosQ0FBc0I7QUFBQSxVQUFRVCxLQUFLVCxFQUFMLElBQVdQLE1BQW5CO0FBQUEsR0FBdEIsQ0FBaEI7QUFDQWIsUUFBTUMsS0FBTixDQUFZOEIsTUFBWixDQUFtQk0sU0FBbkIsRUFBOEIsQ0FBOUI7QUFDQSxFQTdEZ0I7QUE4RGpCRSxZQTlEaUIsdUJBOERMdkMsS0E5REssRUE4REV3QyxRQTlERixFQThEWTtBQUM1QnhDLFFBQU1DLEtBQU4sQ0FBWWtCLElBQVosQ0FBaUJxQixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQW5DO0FBQ0EsRUFoRWdCO0FBaUVqQkUsa0JBakVpQiw2QkFpRUMzQyxLQWpFRCxTQWlFNkI7QUFBQSxNQUFuQmEsTUFBbUIsU0FBbkJBLE1BQW1CO0FBQUEsTUFBWCtCLE9BQVcsU0FBWEEsT0FBVzs7QUFDN0M1QyxRQUFNQyxLQUFOLENBQVkwQixJQUFaLENBQWlCO0FBQUEsVUFBUUUsS0FBS1QsRUFBTCxJQUFXUCxNQUFuQjtBQUFBLEdBQWpCLEVBQTRDK0IsT0FBNUMsR0FBc0RBLE9BQXREO0FBQ0E7QUFDQTVDLFFBQU1SLE1BQU4sQ0FBYW1DLElBQWIsQ0FBa0I7QUFBQSxVQUFTRCxNQUFNTixFQUFOLElBQVksV0FBckI7QUFBQSxHQUFsQixFQUFvRHZCLFNBQXBELElBQWlFK0MsVUFBVSxDQUFDLENBQVgsR0FBZSxDQUFoRjtBQUNBNUMsUUFBTUssU0FBTixJQUFtQnVDLFVBQVUsQ0FBVixHQUFjLENBQUMsQ0FBbEM7QUFDQXRCLFVBQVFDLEdBQVIsQ0FBWXFCLE9BQVo7QUFDQSxFQXZFZ0I7QUF3RWpCQyxZQXhFaUIsdUJBd0VMN0MsS0F4RUssU0F3RTBCO0FBQUEsTUFBdEJhLE1BQXNCLFNBQXRCQSxNQUFzQjtBQUFBLE1BQWRpQyxHQUFjLFNBQWRBLEdBQWM7QUFBQSxNQUFUQyxLQUFTLFNBQVRBLEtBQVM7O0FBQzFDLE1BQUlELFFBQVEsT0FBWixFQUFxQjtBQUNwQixPQUFJRSxhQUFhQyxHQUFHQyxJQUFILENBQVFDLGdCQUFSLENBQXlCSixLQUF6QixDQUFqQjtBQUNBL0MsU0FBTUMsS0FBTixDQUFZMEIsSUFBWixDQUFpQjtBQUFBLFdBQVFFLEtBQUtULEVBQUwsSUFBV1AsTUFBbkI7QUFBQSxJQUFqQixFQUE0Q2lDLEdBQTVDLEVBQWlEQSxHQUFqRCxJQUF3REUsYUFBV0EsVUFBWCxHQUFzQkQsS0FBOUU7QUFDQSxHQUhELE1BR087QUFDTi9DLFNBQU1DLEtBQU4sQ0FBWTBCLElBQVosQ0FBaUI7QUFBQSxXQUFRRSxLQUFLVCxFQUFMLElBQVdQLE1BQW5CO0FBQUEsSUFBakIsRUFBNENpQyxHQUE1QyxJQUFtREMsS0FBbkQ7QUFDQTtBQUNELEVBL0VnQjs7O0FBaUZqQjs7O0FBR0FLLFdBcEZpQixzQkFvRk5wRCxLQXBGTSxFQW9GQztBQUNqQkEsUUFBTUMsS0FBTixHQUFjLEVBQWQ7QUFDQUQsUUFBTUcsV0FBTixHQUFvQixDQUFwQjtBQUNBO0FBdkZnQixDQUFsQjs7QUEwRkEsSUFBTWtELFVBQVU7QUFDZkMsU0FEZSxvQkFDTnRELEtBRE0sRUFDQztBQUNmLFNBQU9BLE1BQU1DLEtBQWI7QUFDQSxFQUhjO0FBSWZzRCxVQUplLHFCQUlMdkQsS0FKSyxFQUlFO0FBQ2hCLFNBQU9BLE1BQU1SLE1BQWI7QUFDQSxFQU5jO0FBT2ZnRSwyQkFQZSxzQ0FPWXhELEtBUFosRUFPbUI7QUFDakMsU0FBT0EsTUFBTUUsaUJBQWI7QUFDQSxFQVRjO0FBVWZ1RCxlQVZlLDBCQVVBekQsS0FWQSxFQVVPO0FBQ3JCLFNBQU9BLE1BQU1HLFdBQWI7QUFDQSxFQVpjO0FBYWZ1RCxjQWJlLHlCQWFEMUQsS0FiQyxFQWFNO0FBQ3BCLFNBQU9BLE1BQU1JLFVBQWI7QUFDQSxFQWZjO0FBZ0JmdUQsYUFoQmUsd0JBZ0JGM0QsS0FoQkUsRUFnQks7QUFDbkIsU0FBT0EsTUFBTUssU0FBYjtBQUNBO0FBbEJjLENBQWhCOztBQXFCQSxJQUFNdUQsVUFBVTs7QUFFZjs7Ozs7Ozs7Ozs7QUFXQU4sU0FiZSxvQkFhTk8sT0FiTSxTQWFxQztBQUFBLE1BQWhDQyxNQUFnQyxTQUFoQ0EsTUFBZ0M7QUFBQSxNQUF4QkMsS0FBd0IsU0FBeEJBLEtBQXdCO0FBQUEsTUFBakJDLE1BQWlCLFNBQWpCQSxNQUFpQjtBQUFBLE1BQVR0QyxLQUFTLFNBQVRBLEtBQVM7O0FBQ25Ec0MsV0FBUyxPQUFPQSxNQUFQLEtBQWtCLFFBQWxCLEdBQTZCQSxNQUE3QixHQUFzQyxFQUEvQztBQUNBdEMsVUFBUSxPQUFPQSxLQUFQLEtBQWlCLFFBQWpCLEdBQTRCQSxLQUE1QixHQUFvQyxFQUE1QztBQUNBLE1BQUlBLFVBQVUsRUFBZCxFQUFrQjtBQUNqQixVQUFPLHFEQUFBdUMsQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsbUJBQTZCekMsS0FBN0IsOEJBQTJEb0MsTUFBM0QsZUFBMkVDLEtBQTNFLGdCQUEyRkMsTUFBM0YsRUFBcUcsQ0FBckcsQ0FBUixFQUNOSSxJQURNLENBQ0QsVUFBQzVCLFFBQUQsRUFBYztBQUNuQixRQUFJOUIsT0FBT0MsSUFBUCxDQUFZNkIsU0FBU0MsSUFBVCxDQUFjQyxHQUFkLENBQWtCRCxJQUFsQixDQUF1QnhDLEtBQW5DLEVBQTBDYyxNQUExQyxHQUFtRCxDQUF2RCxFQUEwRDtBQUN6RDhDLGFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCN0IsU0FBU0MsSUFBVCxDQUFjQyxHQUFkLENBQWtCRCxJQUFsQixDQUF1QnhDLEtBQXJEO0FBQ0EsWUFBTyxJQUFQO0FBQ0E7QUFDRCxXQUFPLEtBQVA7QUFDQSxJQVBNLEVBUU5xRSxLQVJNLENBUUEsVUFBQ0MsS0FBRDtBQUFBLFdBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCRSxLQUE5QixDQUFYO0FBQUEsSUFSQSxDQUFQO0FBU0E7O0FBRUQsU0FBTyxxREFBQU4sQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsaUNBQTJDTCxNQUEzQyxlQUEyREMsS0FBM0QsZ0JBQTJFQyxNQUEzRSxFQUFxRixDQUFyRixDQUFSLEVBQ0xJLElBREssQ0FDQSxVQUFDNUIsUUFBRCxFQUFjO0FBQ25CLE9BQUk5QixPQUFPQyxJQUFQLENBQVk2QixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQWxCLENBQXVCeEMsS0FBbkMsRUFBMENjLE1BQTFDLEdBQW1ELENBQXZELEVBQTBEO0FBQ3pEOEMsWUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEI3QixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQWxCLENBQXVCeEMsS0FBckQ7QUFDQSxXQUFPLElBQVA7QUFDQTtBQUNELFVBQU8sS0FBUDtBQUNBLEdBUEssRUFRTHFFLEtBUkssQ0FRQyxVQUFDQyxLQUFEO0FBQUEsVUFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEJFLEtBQTlCLENBQVg7QUFBQSxHQVJELENBQVA7QUFTQSxFQXJDYzs7O0FBdUNmOzs7Ozs7Ozs7QUFTQUMsaUJBaERlLDRCQWdERVgsT0FoREYsU0FnRHNDO0FBQUEsTUFBekJDLE1BQXlCLFNBQXpCQSxNQUF5QjtBQUFBLE1BQWpCQyxLQUFpQixTQUFqQkEsS0FBaUI7QUFBQSxNQUFWQyxNQUFVLFNBQVZBLE1BQVU7O0FBQ3BEQSxXQUFTLE9BQU9BLE1BQVAsS0FBa0IsUUFBbEIsR0FBNkJBLE1BQTdCLEdBQXNDLEVBQS9DO0FBQ0EsU0FBTyxxREFBQUMsQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsaUNBQTJDTCxNQUEzQyxlQUEyREMsS0FBM0QsZ0JBQTJFQyxNQUEzRSxFQUFxRixDQUFyRixDQUFSLEVBQ0xJLElBREssQ0FDQSxVQUFDNUIsUUFBRCxFQUFjO0FBQ25CLE9BQUk5QixPQUFPQyxJQUFQLENBQVk2QixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQWxCLENBQXVCeEMsS0FBbkMsRUFBMENjLE1BQTFDLEdBQW1ELENBQXZELEVBQTBEO0FBQ3pEOEMsWUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEI3QixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQWxCLENBQXVCeEMsS0FBckQ7QUFDQSxXQUFPLElBQVA7QUFDQTtBQUNELFVBQU8sS0FBUDtBQUNBLEdBUEssRUFRTHFFLEtBUkssQ0FRQyxVQUFDQyxLQUFEO0FBQUEsVUFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEJFLEtBQTlCLENBQVg7QUFBQSxHQVJELENBQVA7QUFTQSxFQTNEYzs7O0FBNkRmOzs7Ozs7Ozs7QUFTQUUsa0JBdEVlLDZCQXNFR1osT0F0RUgsVUFzRXdDO0FBQUEsTUFBMUIzQyxPQUEwQixVQUExQkEsT0FBMEI7QUFBQSxNQUFqQjRDLE1BQWlCLFVBQWpCQSxNQUFpQjtBQUFBLE1BQVRDLEtBQVMsVUFBVEEsS0FBUzs7QUFDdEQsU0FBTyxxREFBQUUsQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsa0JBQTRCakQsT0FBNUIsd0JBQXNENEMsTUFBdEQsZUFBc0VDLEtBQXRFLEVBQStFLENBQS9FLENBQVIsRUFDTEssSUFESyxDQUNBLFVBQUM1QixRQUFEO0FBQUEsVUFBY3FCLFFBQVFRLE1BQVIsQ0FBZSxrQkFBZixFQUFtQzdCLFNBQVNDLElBQVQsQ0FBY0MsR0FBZCxDQUFrQkQsSUFBbEIsQ0FBdUJ4QyxLQUExRCxDQUFkO0FBQUEsR0FEQSxFQUVMcUUsS0FGSyxDQUVDLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QkUsS0FBOUIsQ0FBWDtBQUFBLEdBRkQsQ0FBUDtBQUdBLEVBMUVjO0FBNkVmZiwyQkE3RWUsc0NBNkVZSyxPQTdFWixFQTZFcUI7QUFDbkMsU0FBTyxxREFBQUksQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsQ0FBYSxvRUFBYixFQUFtRixDQUFuRixDQUFSLEVBQ0xDLElBREssQ0FDQSxVQUFDNUIsUUFBRDtBQUFBLFVBQWNxQixRQUFRUSxNQUFSLENBQWUsNEJBQWYsRUFBNkM3QixTQUFTQyxJQUFULENBQWNDLEdBQWQsQ0FBa0JELElBQWxCLENBQXVCQSxJQUFwRSxDQUFkO0FBQUEsR0FEQSxFQUVMNkIsS0FGSyxDQUVDLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QkUsS0FBOUIsQ0FBWDtBQUFBLEdBRkQsQ0FBUDtBQUdBLEVBakZjOzs7QUFtRmY7Ozs7Ozs7QUFPQXRELFNBMUZlLG9CQTBGTjRDLE9BMUZNLEVBMEZHcEMsR0ExRkgsRUEwRlE7QUFDdEIsU0FBTyxxREFBQXdDLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsVUFBTyxxREFBQXlCLENBQUlVLElBQUosQ0FBUzFCLEdBQUdrQixTQUFILGlCQUE2QixDQUE3QixDQUFULEVBQTBDLEVBQUNqRCxTQUFTTyxHQUFWLEVBQTFDLEVBQ0wyQyxJQURLLENBQ0EsVUFBQzVCLFFBQUQ7QUFBQSxXQUFjcUIsUUFBUVEsTUFBUixDQUFlLFVBQWYsRUFBMkI1QyxHQUEzQixDQUFkO0FBQUEsSUFEQSxFQUVMNkMsS0FGSyxDQUVDLFVBQUNDLEtBQUQsRUFBVztBQUFDLFVBQU1BLEtBQU47QUFBYSxJQUYxQixDQUFQO0FBR0EsR0FKTSxFQUlKRCxLQUpJLENBSUUsVUFBQ0MsS0FBRDtBQUFBLFVBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCLEVBQUV4RCxjQUFGLEVBQVUwRCxZQUFWLEVBQTlCLENBQVg7QUFBQSxHQUpGLENBQVA7QUFLQSxFQWhHYzs7O0FBa0dmOzs7Ozs7O0FBT0FLLFlBekdlLHVCQXlHSGYsT0F6R0csRUF5R01wQyxHQXpHTixFQXlHVztBQUN6QixTQUFPLHFEQUFBd0MsQ0FBSVMsWUFBSixHQUFtQk4sSUFBbkIsQ0FBd0IsVUFBQzVCLFFBQUQsRUFBYztBQUM1QyxVQUFPLHFEQUFBeUIsQ0FBSVUsSUFBSixDQUFTMUIsR0FBR2tCLFNBQUgsaUJBQTZCLENBQTdCLENBQVQsRUFBMEMsRUFBQ2pELFNBQVNPLEdBQVYsRUFBMUMsRUFDTDJDLElBREssQ0FDQSxVQUFDNUIsUUFBRDtBQUFBLFdBQWNxQixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QjVDLEdBQTlCLENBQWQ7QUFBQSxJQURBLEVBRUw2QyxLQUZLLENBRUMsVUFBQ0MsS0FBRCxFQUFXO0FBQUMsVUFBTUEsS0FBTjtBQUFhLElBRjFCLENBQVA7QUFHQSxHQUpNLEVBSUpELEtBSkksQ0FJRSxVQUFDQyxLQUFEO0FBQUEsVUFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVTBELFlBQVYsRUFBOUIsQ0FBWDtBQUFBLEdBSkYsQ0FBUDtBQUtBLEVBL0djOzs7QUFpSGY7Ozs7Ozs7OztBQVNBL0MsYUExSGUsd0JBMEhGcUMsT0ExSEUsVUEwSHdCO0FBQUEsTUFBZmhELE1BQWUsVUFBZkEsTUFBZTtBQUFBLE1BQVBZLEdBQU8sVUFBUEEsR0FBTzs7QUFDdEMsU0FBTyxxREFBQXdDLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsVUFBTyxxREFBQXlCLENBQUlVLElBQUosQ0FBUzFCLEdBQUdrQixTQUFILGtCQUE0QnRELE1BQTVCLGNBQTZDLENBQTdDLENBQVQsRUFBMEQsRUFBRUssU0FBU08sR0FBWCxFQUExRCxFQUNMMkMsSUFESyxDQUNBLFVBQUM1QixRQUFEO0FBQUEsV0FBY3FCLFFBQVFRLE1BQVIsQ0FBZSxjQUFmLEVBQStCLEVBQUV4RCxjQUFGLEVBQVVZLFFBQVYsRUFBL0IsQ0FBZDtBQUFBLElBREEsRUFFTDZDLEtBRkssQ0FFQyxVQUFDQyxLQUFELEVBQVc7QUFBQyxVQUFNQSxLQUFOO0FBQWEsSUFGMUIsQ0FBUDtBQUdBLEdBSk0sRUFJSkQsS0FKSSxDQUlFLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVMEQsWUFBVixFQUE5QixDQUFYO0FBQUEsR0FKRixDQUFQO0FBS0EsRUFoSWM7OztBQWtJZjs7Ozs7Ozs7O0FBU0F6QyxnQkEzSWUsMkJBMklDK0IsT0EzSUQsVUEySTJCO0FBQUEsTUFBZmhELE1BQWUsVUFBZkEsTUFBZTtBQUFBLE1BQVBZLEdBQU8sVUFBUEEsR0FBTzs7QUFDekMsU0FBTyxxREFBQXdDLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsVUFBTyxxREFBQXlCLENBQUlZLE1BQUosQ0FBVzVCLEdBQUdrQixTQUFILGtCQUE0QnRELE1BQTVCLGNBQTZDLENBQTdDLENBQVgsRUFBNEQsRUFBRUssU0FBU08sR0FBWCxFQUE1RCxFQUNMMkMsSUFESyxDQUNBLFVBQUM1QixRQUFEO0FBQUEsV0FBY3FCLFFBQVFRLE1BQVIsQ0FBZSxpQkFBZixFQUFrQyxFQUFFeEQsY0FBRixFQUFVWSxRQUFWLEVBQWxDLENBQWQ7QUFBQSxJQURBLEVBRUw2QyxLQUZLLENBRUMsVUFBQ0MsS0FBRCxFQUFXO0FBQUMsVUFBTUEsS0FBTjtBQUFhLElBRjFCLENBQVA7QUFHQSxHQUpNLEVBSUpELEtBSkksQ0FJRSxVQUFDQyxLQUFEO0FBQUEsVUFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVTBELFlBQVYsRUFBOUIsQ0FBWDtBQUFBLEdBSkYsQ0FBUDtBQUtBLEVBakpjOzs7QUFtSmY7Ozs7Ozs7OztBQVNBdEMsZ0JBNUplLDJCQTRKQzRCLE9BNUpELFVBNEoyQjtBQUFBLE1BQWZoRCxNQUFlLFVBQWZBLE1BQWU7QUFBQSxNQUFQWSxHQUFPLFVBQVBBLEdBQU87O0FBQ3pDLFNBQU8scURBQUF3QyxDQUFJUyxZQUFKLEdBQW1CTixJQUFuQixDQUF3QixVQUFDNUIsUUFBRCxFQUFjO0FBQzVDLFVBQU8scURBQUF5QixDQUFJVSxJQUFKLENBQVMxQixHQUFHa0IsU0FBSCxrQkFBNEJ0RCxNQUE1QixpQkFBZ0QsQ0FBaEQsQ0FBVCxFQUE4RCxFQUFFSyxTQUFTTyxHQUFYLEVBQTlELEVBQ0wyQyxJQURLLENBQ0EsVUFBQzVCLFFBQUQ7QUFBQSxXQUFjcUIsUUFBUVEsTUFBUixDQUFlLGlCQUFmLEVBQWtDLEVBQUV4RCxjQUFGLEVBQVVZLFFBQVYsRUFBbEMsQ0FBZDtBQUFBLElBREEsRUFFTDZDLEtBRkssQ0FFQyxVQUFDQyxLQUFELEVBQVc7QUFBQyxVQUFNQSxLQUFOO0FBQWEsSUFGMUIsQ0FBUDtBQUdBLEdBSk0sRUFJSkQsS0FKSSxDQUlFLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVMEQsWUFBVixFQUE5QixDQUFYO0FBQUEsR0FKRixDQUFQO0FBS0EsRUFsS2M7OztBQW9LZjs7Ozs7Ozs7O0FBU0FwQyxtQkE3S2UsOEJBNktJMEIsT0E3S0osVUE2SzhCO0FBQUEsTUFBZmhELE1BQWUsVUFBZkEsTUFBZTtBQUFBLE1BQVBZLEdBQU8sVUFBUEEsR0FBTzs7QUFDNUMsU0FBTyxxREFBQXdDLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsVUFBTyxxREFBQXlCLENBQUlZLE1BQUosQ0FBVzVCLEdBQUdrQixTQUFILGtCQUE0QnRELE1BQTVCLGlCQUFnRCxDQUFoRCxDQUFYLEVBQStELEVBQUVLLFNBQVNPLEdBQVgsRUFBL0QsRUFDTDJDLElBREssQ0FDQSxVQUFDNUIsUUFBRDtBQUFBLFdBQWNxQixRQUFRUSxNQUFSLENBQWUsb0JBQWYsRUFBcUMsRUFBRXhELGNBQUYsRUFBVVksUUFBVixFQUFyQyxDQUFkO0FBQUEsSUFEQSxFQUVMNkMsS0FGSyxDQUVDLFVBQUNDLEtBQUQsRUFBVztBQUFDLFVBQU1BLEtBQU47QUFBYSxJQUYxQixDQUFQO0FBR0EsR0FKTSxFQUlKRCxLQUpJLENBSUUsVUFBQ0MsS0FBRDtBQUFBLFVBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCLEVBQUV4RCxjQUFGLEVBQVUwRCxZQUFWLEVBQTlCLENBQVg7QUFBQSxHQUpGLENBQVA7QUFLQSxFQW5MYzs7O0FBcUxmOzs7Ozs7O0FBT0FuQyxXQTVMZSxzQkE0TEp5QixPQTVMSSxVQTRMaUI7QUFBQSxNQUFWaEQsTUFBVSxVQUFWQSxNQUFVOztBQUMvQixTQUFPLHFEQUFBb0QsQ0FBSVMsWUFBSixHQUFtQk4sSUFBbkIsQ0FBd0IsVUFBQzVCLFFBQUQsRUFBYztBQUM1QyxVQUFPLHFEQUFBeUIsQ0FBSVksTUFBSixDQUFXNUIsR0FBR2tCLFNBQUgsa0JBQTRCdEQsTUFBNUIsRUFBc0MsQ0FBdEMsQ0FBWCxFQUNMdUQsSUFESyxDQUNBLFVBQUM1QixRQUFEO0FBQUEsV0FBY3FCLFFBQVFRLE1BQVIsQ0FBZSxZQUFmLEVBQTZCeEQsTUFBN0IsQ0FBZDtBQUFBLElBREEsRUFFTHlELEtBRkssQ0FFQyxVQUFDQyxLQUFELEVBQVc7QUFBQyxVQUFNQSxLQUFOO0FBQWEsSUFGMUIsQ0FBUDtBQUdBLEdBSk0sRUFJSkQsS0FKSSxDQUlFLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVMEQsWUFBVixFQUE5QixDQUFYO0FBQUEsR0FKRixDQUFQO0FBS0EsRUFsTWM7OztBQW9NZjs7Ozs7Ozs7Ozs7OztBQWFBTyxRQWpOZSxtQ0FpTjhFO0FBQUEsTUFBcEZqQixPQUFvRixVQUFwRkEsT0FBb0Y7QUFBQSxNQUEzRWtCLFFBQTJFLFVBQTNFQSxRQUEyRTtBQUFBLE1BQTlEbEUsTUFBOEQsVUFBOURBLE1BQThEO0FBQUEsTUFBdERtRSxRQUFzRCxVQUF0REEsUUFBc0Q7QUFBQSxNQUE1Q0MsS0FBNEMsVUFBNUNBLEtBQTRDO0FBQUEsTUFBckN6RixNQUFxQyxVQUFyQ0EsTUFBcUM7QUFBQSxNQUE3QjBDLFFBQTZCLFVBQTdCQSxRQUE2QjtBQUFBLE1BQW5CZ0QsS0FBbUIsVUFBbkJBLEtBQW1CO0FBQUEsTUFBWkMsUUFBWSxVQUFaQSxRQUFZOztBQUM1RixTQUFPLHFEQUFBbEIsQ0FBSVMsWUFBSixHQUFtQk4sSUFBbkIsQ0FBd0IsVUFBQzVCLFFBQUQsRUFBYztBQUM1QyxVQUFPLHFEQUFBeUIsQ0FBSVUsSUFBSixDQUFTMUIsR0FBR2tCLFNBQUgsZ0JBQTRCLENBQTVCLENBQVQsRUFBeUMsRUFBRXRELGNBQUYsRUFBVW1FLGtCQUFWLEVBQW9CQyxZQUFwQixFQUEyQnpGLGNBQTNCLEVBQW1DMEMsa0JBQW5DLEVBQTZDZ0QsWUFBN0MsRUFBb0RDLGtCQUFwRCxFQUF6QyxFQUNMZixJQURLLENBQ0EsVUFBQzVCLFFBQUQ7QUFBQSxXQUFjdUMsU0FBUyxhQUFULEVBQXdCbEUsTUFBeEIsQ0FBZDtBQUFBLElBREEsRUFFTHlELEtBRkssQ0FFQyxVQUFDQyxLQUFELEVBQVc7QUFBQyxVQUFNQSxLQUFOO0FBQWEsSUFGMUIsQ0FBUDtBQUdBLEdBSk0sRUFJSkQsS0FKSSxDQUlFLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVMEQsWUFBVixFQUE5QixDQUFYO0FBQUEsR0FKRixDQUFQO0FBS0EsRUF2TmM7OztBQXlOZjs7Ozs7OztBQU9BaEMsWUFoT2UsdUJBZ09Ic0IsT0FoT0csRUFnT01oRCxNQWhPTixFQWdPYztBQUM1QixTQUFPLHFEQUFBb0QsQ0FBSVMsWUFBSixHQUFtQk4sSUFBbkIsQ0FBd0IsVUFBQzVCLFFBQUQsRUFBYztBQUM1QyxVQUFPLHFEQUFBeUIsQ0FBSUMsR0FBSixDQUFRakIsR0FBR2tCLFNBQUgsa0JBQTRCdEQsTUFBNUIsRUFBc0MsQ0FBdEMsQ0FBUixFQUNMdUQsSUFESyxDQUNBLFVBQUM1QixRQUFEO0FBQUEsV0FBY3FCLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCN0IsUUFBOUIsQ0FBZDtBQUFBLElBREEsRUFFTDhCLEtBRkssQ0FFQyxVQUFDQyxLQUFELEVBQVc7QUFBQyxVQUFNQSxLQUFOO0FBQWEsSUFGMUIsQ0FBUDtBQUdBLEdBSk0sRUFJSkQsS0FKSSxDQUlFLFVBQUNDLEtBQUQ7QUFBQSxVQUFXVixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVMEQsWUFBVixFQUE5QixDQUFYO0FBQUEsR0FKRixDQUFQO0FBS0EsRUF0T2M7OztBQXdPZjs7Ozs7Ozs7QUFRQTVCLGtCQWhQZSw2QkFnUEdrQixPQWhQSCxVQWdQd0M7QUFBQSxNQUExQmhELE1BQTBCLFVBQTFCQSxNQUEwQjtBQUFBLDhCQUFsQitCLE9BQWtCO0FBQUEsTUFBbEJBLE9BQWtCLGtDQUFSLElBQVE7O0FBQ3RELE1BQUl3QyxhQUFheEMsVUFBVSxRQUFWLEdBQXFCLFNBQXRDO0FBQ0EsU0FBTyxxREFBQXFCLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsVUFBTyxxREFBQXlCLENBQUlvQixHQUFKLENBQVFwQyxHQUFHa0IsU0FBSCxrQkFBNEJ0RCxNQUE1QixTQUFzQ3VFLFVBQXRDLEVBQW9ELENBQXBELENBQVIsRUFDTGhCLElBREssQ0FDQSxVQUFDNUIsUUFBRDtBQUFBLFdBQWNxQixRQUFRUSxNQUFSLENBQWUsbUJBQWYsRUFBb0MsRUFBRXhELGNBQUYsRUFBVStCLGdCQUFWLEVBQXBDLENBQWQ7QUFBQSxJQURBLEVBRUwwQixLQUZLLENBRUMsVUFBQ0MsS0FBRCxFQUFXO0FBQUMsVUFBTUEsS0FBTjtBQUFhLElBRjFCLENBQVA7QUFHQSxHQUpNLEVBSUpELEtBSkksQ0FJRSxVQUFDQyxLQUFEO0FBQUEsVUFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVTBELFlBQVYsRUFBOUIsQ0FBWDtBQUFBLEdBSkYsQ0FBUDtBQUtBLEVBdlBjOzs7QUF5UGY7Ozs7Ozs7Ozs7QUFVQTFCLFlBblFlLHVCQW1RSGdCLE9BblFHLFVBbVE4QjtBQUFBLE1BQXRCaEQsTUFBc0IsVUFBdEJBLE1BQXNCO0FBQUEsTUFBZGlDLEdBQWMsVUFBZEEsR0FBYztBQUFBLE1BQVRDLEtBQVMsVUFBVEEsS0FBUzs7QUFDNUMsTUFBSXVDLGVBQWUsQ0FBQyxPQUFELEVBQVUsYUFBVixDQUFuQjtBQUNBLE1BQUksQ0FBQyxPQUFELEVBQVUsVUFBVixFQUFzQixPQUF0QixFQUErQixhQUEvQixFQUE4QyxVQUE5QyxFQUEwRHRELE9BQTFELENBQWtFYyxHQUFsRSxNQUEyRSxDQUFDLENBQWhGLEVBQW1GO0FBQ2xGO0FBQ0EsT0FBSSxPQUFPQyxLQUFQLEtBQWlCLFFBQWpCLEtBRUR1QyxhQUFhdEQsT0FBYixDQUFxQmMsR0FBckIsTUFBOEIsQ0FBQyxDQUEvQixJQUFvQ0MsTUFBTWhDLE1BQU4sR0FBZSxDQUFwRCxJQUNBdUUsYUFBYXRELE9BQWIsQ0FBcUJjLEdBQXJCLE1BQThCLENBQUMsQ0FIN0IsQ0FBSixFQUtFO0FBQ0QsV0FBTyxxREFBQW1CLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDNUMsWUFBTyxxREFBQXlCLENBQUlvQixHQUFKLENBQVFwQyxHQUFHa0IsU0FBSCxrQkFBNEJ0RCxNQUE1QixFQUFzQyxDQUF0QyxDQUFSLEVBQWtELEVBQUVpQyxLQUFLQSxHQUFQLEVBQVlDLE9BQU9BLEtBQW5CLEVBQWxELEVBQ0xxQixJQURLLENBQ0EsVUFBQzVCLFFBQUQ7QUFBQSxhQUFjcUIsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVWlDLFFBQVYsRUFBZUMsWUFBZixFQUE5QixDQUFkO0FBQUEsTUFEQSxFQUVMdUIsS0FGSyxDQUVDLFVBQUNDLEtBQUQsRUFBVztBQUFDLFlBQU1BLEtBQU47QUFBYSxNQUYxQixDQUFQO0FBR0EsS0FKTSxFQUlKRCxLQUpJLENBSUUsVUFBQ0MsS0FBRDtBQUFBLFlBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCLEVBQUV4RCxjQUFGLEVBQVUwRCxZQUFWLEVBQTlCLENBQVg7QUFBQSxLQUpGLENBQVA7QUFLQTtBQUNEO0FBQ0QsU0FBT2dCLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsc0JBQVYsQ0FBZixDQUFQO0FBQ0E7QUFyUmMsQ0FBaEI7O0FBd1JBLHlEQUFlLEVBQUV6RixZQUFGLEVBQVNNLG9CQUFULEVBQW9CK0MsZ0JBQXBCLEVBQTZCTyxnQkFBN0IsRUFBZiIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcGkgZnJvbSAnLi9hcGknO1xuXG5jb25zdCBvcmRlckdyb3VwcyA9IGZ1bmN0aW9uKGdyb3Vwcywgb3JkZXJCeSkge1xuXHQvKiBjb25zdCBTT1JUX1VTRVJDT1VOVCA9IDE7XG5cdCAqIGNvbnN0IFNPUlRfR1JPVVBOQU1FID0gMjtcblx0ICogaHR0cHM6Ly9naXRodWIuY29tL25leHRjbG91ZC9zZXJ2ZXIvYmxvYi8yMDhlMzhlODRlMWEwN2E0OTY5OWFhOTBkYzViNzI3MmQyNDQ4OWYwL2xpYi9wcml2YXRlL0dyb3VwL01ldGFEYXRhLnBocCNMMzRcblx0ICovXG5cdGlmIChvcmRlckJ5ID09PSAxKSB7XG5cdFx0cmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiBhLnVzZXJjb3VudCA8IGIudXNlcmNvdW50KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZ3JvdXBzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuXHR9XG59XG5cbmNvbnN0IHN0YXRlID0ge1xuXHR1c2VyczogW10sXG5cdGdyb3VwczogW10sXG5cdG9yZGVyQnk6IDEsXG5cdG1pblBhc3N3b3JkTGVuZ3RoOiAwLFxuXHR1c2Vyc09mZnNldDogMCxcblx0dXNlcnNMaW1pdDogMjUsXG5cdHVzZXJDb3VudDogMFxufTtcblxuY29uc3QgbXV0YXRpb25zID0ge1xuXHRhcHBlbmRVc2VycyhzdGF0ZSwgdXNlcnNPYmopIHtcblx0XHQvLyBjb252ZXJ0IG9iaiB0byBhcnJheVxuXHRcdGxldCB1c2VycyA9IHN0YXRlLnVzZXJzLmNvbmNhdChPYmplY3Qua2V5cyh1c2Vyc09iaikubWFwKHVzZXJpZCA9PiB1c2Vyc09ialt1c2VyaWRdKSk7XG5cdFx0c3RhdGUudXNlcnNPZmZzZXQgKz0gc3RhdGUudXNlcnNMaW1pdDtcblx0XHRzdGF0ZS51c2VycyA9IHVzZXJzO1xuXHR9LFxuXHRzZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aChzdGF0ZSwgbGVuZ3RoKSB7XG5cdFx0c3RhdGUubWluUGFzc3dvcmRMZW5ndGggPSBsZW5ndGghPT0nJyA/IGxlbmd0aCA6IDA7XG5cdH0sXG5cdGluaXRHcm91cHMoc3RhdGUsIHtncm91cHMsIG9yZGVyQnksIHVzZXJDb3VudH0pIHtcblx0XHRzdGF0ZS5ncm91cHMgPSBncm91cHM7XG5cdFx0c3RhdGUub3JkZXJCeSA9IG9yZGVyQnk7XG5cdFx0c3RhdGUudXNlckNvdW50ID0gdXNlckNvdW50O1xuXHRcdHN0YXRlLmdyb3VwcyA9IG9yZGVyR3JvdXBzKHN0YXRlLmdyb3Vwcywgc3RhdGUub3JkZXJCeSk7XG5cdH0sXG5cdGFkZEdyb3VwKHN0YXRlLCBncm91cGlkKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHN0YXRlLmdyb3Vwcy5wdXNoKHtcblx0XHRcdFx0aWQ6IGdyb3VwaWQsXG5cdFx0XHRcdG5hbWU6IGdyb3VwaWQsXG5cdFx0XHRcdHVzZXJjb3VudDogMCAvLyB1c2VyIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhlIGNyZWF0aW9uXG5cdFx0XHR9KTtcblx0XHRcdHN0YXRlLmdyb3VwcyA9IG9yZGVyR3JvdXBzKHN0YXRlLmdyb3Vwcywgc3RhdGUub3JkZXJCeSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ0NhblxcJ3QgY3JlYXRlIGdyb3VwJywgZSk7XG5cdFx0fVxuXHR9LFxuXHRhZGRVc2VyR3JvdXAoc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuXHRcdC8vIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgYXMgaXQgd291bGQgbWVhbnMgdGhlIHVzZXIgY29udGFpbnMgYSBncm91cFxuXHRcdC8vIHRoZSBzZXJ2ZXIgZGF0YWJhc2UgZG9lc24ndCBoYXZlLlxuXHRcdGxldCBncm91cCA9IHN0YXRlLmdyb3Vwcy5maW5kKGdyb3VwU2VhcmNoID0+IGdyb3VwU2VhcmNoLmlkID09IGdpZCk7XG5cdFx0aWYgKGdyb3VwKSB7XG5cdFx0XHRncm91cC51c2VyY291bnQrKzsgLy8gaW5jcmVhc2UgY291bnRcblx0XHR9XG5cdFx0bGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuZ3JvdXBzO1xuXHRcdGdyb3Vwcy5wdXNoKGdpZCk7XG5cdFx0c3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcblx0fSxcblx0cmVtb3ZlVXNlckdyb3VwKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcblx0XHQvLyB0aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIGFzIGl0IHdvdWxkIG1lYW5zIHRoZSB1c2VyIGNvbnRhaW5zIGEgZ3JvdXBcblx0XHQvLyB0aGUgc2VydmVyIGRhdGFiYXNlIGRvZXNuJ3QgaGF2ZS5cblx0XHRsZXQgZ3JvdXAgPSBzdGF0ZS5ncm91cHMuZmluZChncm91cFNlYXJjaCA9PiBncm91cFNlYXJjaC5pZCA9PSBnaWQpO1xuXHRcdGlmIChncm91cCkge1xuXHRcdFx0Z3JvdXAudXNlcmNvdW50LS07IC8vIGxvd2VyIGNvdW50XG5cdFx0fVxuXHRcdGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLmdyb3Vwcztcblx0XHRncm91cHMuc3BsaWNlKGdyb3Vwcy5pbmRleE9mKGdpZCksMSk7XG5cdFx0c3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcblx0fSxcblx0YWRkVXNlclN1YkFkbWluKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcblx0XHRsZXQgZ3JvdXBzID0gc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKS5zdWJhZG1pbjtcblx0XHRncm91cHMucHVzaChnaWQpO1xuXHR9LFxuXHRyZW1vdmVVc2VyU3ViQWRtaW4oc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuXHRcdGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLnN1YmFkbWluO1xuXHRcdGdyb3Vwcy5zcGxpY2UoZ3JvdXBzLmluZGV4T2YoZ2lkKSwxKTtcblx0fSxcblx0ZGVsZXRlVXNlcihzdGF0ZSwgdXNlcmlkKSB7XG5cdFx0bGV0IHVzZXJJbmRleCA9IHN0YXRlLnVzZXJzLmZpbmRJbmRleCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKTtcblx0XHRzdGF0ZS51c2Vycy5zcGxpY2UodXNlckluZGV4LCAxKTtcblx0fSxcblx0YWRkVXNlckRhdGEoc3RhdGUsIHJlc3BvbnNlKSB7XG5cdFx0c3RhdGUudXNlcnMucHVzaChyZXNwb25zZS5kYXRhLm9jcy5kYXRhKTtcblx0fSxcblx0ZW5hYmxlRGlzYWJsZVVzZXIoc3RhdGUsIHsgdXNlcmlkLCBlbmFibGVkIH0pIHtcblx0XHRzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRcdC8vIGluY3JlbWVudCBvciBub3Rcblx0XHRzdGF0ZS5ncm91cHMuZmluZChncm91cCA9PiBncm91cC5pZCA9PSAnX2Rpc2FibGVkJykudXNlcmNvdW50ICs9IGVuYWJsZWQgPyAtMSA6IDE7XG5cdFx0c3RhdGUudXNlckNvdW50ICs9IGVuYWJsZWQgPyAxIDogLTE7XG5cdFx0Y29uc29sZS5sb2coZW5hYmxlZCk7XG5cdH0sXG5cdHNldFVzZXJEYXRhKHN0YXRlLCB7IHVzZXJpZCwga2V5LCB2YWx1ZSB9KSB7XG5cdFx0aWYgKGtleSA9PT0gJ3F1b3RhJykge1xuXHRcdFx0bGV0IGh1bWFuVmFsdWUgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUodmFsdWUpO1xuXHRcdFx0c3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKVtrZXldW2tleV0gPSBodW1hblZhbHVlP2h1bWFuVmFsdWU6dmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZClba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmVzZXQgdXNlcnMgbGlzdFxuXHQgKi9cblx0cmVzZXRVc2VycyhzdGF0ZSkge1xuXHRcdHN0YXRlLnVzZXJzID0gW107XG5cdFx0c3RhdGUudXNlcnNPZmZzZXQgPSAwO1xuXHR9XG59O1xuXG5jb25zdCBnZXR0ZXJzID0ge1xuXHRnZXRVc2VycyhzdGF0ZSkge1xuXHRcdHJldHVybiBzdGF0ZS51c2Vycztcblx0fSxcblx0Z2V0R3JvdXBzKHN0YXRlKSB7XG5cdFx0cmV0dXJuIHN0YXRlLmdyb3Vwcztcblx0fSxcblx0Z2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgoc3RhdGUpIHtcblx0XHRyZXR1cm4gc3RhdGUubWluUGFzc3dvcmRMZW5ndGg7XG5cdH0sXG5cdGdldFVzZXJzT2Zmc2V0KHN0YXRlKSB7XG5cdFx0cmV0dXJuIHN0YXRlLnVzZXJzT2Zmc2V0O1xuXHR9LFxuXHRnZXRVc2Vyc0xpbWl0KHN0YXRlKSB7XG5cdFx0cmV0dXJuIHN0YXRlLnVzZXJzTGltaXQ7XG5cdH0sXG5cdGdldFVzZXJDb3VudChzdGF0ZSkge1xuXHRcdHJldHVybiBzdGF0ZS51c2VyQ291bnQ7XG5cdH1cbn07XG5cbmNvbnN0IGFjdGlvbnMgPSB7XG5cblx0LyoqXG5cdCAqIEdldCBhbGwgdXNlcnMgd2l0aCBmdWxsIGRldGFpbHNcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLm9mZnNldCBMaXN0IG9mZnNldCB0byByZXF1ZXN0XG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLmxpbWl0IExpc3QgbnVtYmVyIHRvIHJldHVybiBmcm9tIG9mZnNldFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zZWFyY2ggU2VhcmNoIGFtb25nc3QgdXNlcnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ3JvdXAgR2V0IHVzZXJzIGZyb20gZ3JvdXBcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRnZXRVc2Vycyhjb250ZXh0LCB7IG9mZnNldCwgbGltaXQsIHNlYXJjaCwgZ3JvdXAgfSkge1xuXHRcdHNlYXJjaCA9IHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnID8gc2VhcmNoIDogJyc7XG5cdFx0Z3JvdXAgPSB0eXBlb2YgZ3JvdXAgPT09ICdzdHJpbmcnID8gZ3JvdXAgOiAnJztcblx0XHRpZiAoZ3JvdXAgIT09ICcnKSB7XG5cdFx0XHRyZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL2dyb3Vwcy8ke2dyb3VwfS91c2Vycy9kZXRhaWxzP29mZnNldD0ke29mZnNldH0mbGltaXQ9JHtsaW1pdH0mc2VhcmNoPSR7c2VhcmNofWAsIDIpKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29udGV4dC5jb21taXQoJ2FwcGVuZFVzZXJzJywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2Vycyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy9kZXRhaWxzP29mZnNldD0ke29mZnNldH0mbGltaXQ9JHtsaW1pdH0mc2VhcmNoPSR7c2VhcmNofWAsIDIpKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29udGV4dC5jb21taXQoJ2FwcGVuZFVzZXJzJywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2Vycyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBhbGwgdXNlcnMgd2l0aCBmdWxsIGRldGFpbHNcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLm9mZnNldCBMaXN0IG9mZnNldCB0byByZXF1ZXN0XG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLmxpbWl0IExpc3QgbnVtYmVyIHRvIHJldHVybiBmcm9tIG9mZnNldFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGdldFVzZXJzRnJvbUxpc3QoY29udGV4dCwgeyBvZmZzZXQsIGxpbWl0LCBzZWFyY2ggfSkge1xuXHRcdHNlYXJjaCA9IHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnID8gc2VhcmNoIDogJyc7XG5cdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy9kZXRhaWxzP29mZnNldD0ke29mZnNldH0mbGltaXQ9JHtsaW1pdH0mc2VhcmNoPSR7c2VhcmNofWAsIDIpKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29udGV4dC5jb21taXQoJ2FwcGVuZFVzZXJzJywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2Vycyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBhbGwgdXNlcnMgd2l0aCBmdWxsIGRldGFpbHMgZnJvbSBhIGdyb3VwaWRcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLm9mZnNldCBMaXN0IG9mZnNldCB0byByZXF1ZXN0XG5cdCAqIEBwYXJhbSB7aW50fSBvcHRpb25zLmxpbWl0IExpc3QgbnVtYmVyIHRvIHJldHVybiBmcm9tIG9mZnNldFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGdldFVzZXJzRnJvbUdyb3VwKGNvbnRleHQsIHsgZ3JvdXBpZCwgb2Zmc2V0LCBsaW1pdCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke2dyb3VwaWR9L2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fWAsIDIpKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnZ2V0VXNlcnNGcm9tTGlzdCcsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpKVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcblx0fSxcblx0XG5cblx0Z2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgoY29udGV4dCkge1xuXHRcdHJldHVybiBhcGkuZ2V0KE9DLmxpbmtUb09DUygnYXBwcy9wcm92aXNpb25pbmdfYXBpL2FwaS92MS9jb25maWcvYXBwcy9wYXNzd29yZF9wb2xpY3kvbWluTGVuZ3RoJywgMikpXG5cdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdzZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aCcsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEuZGF0YSkpXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBBZGQgZ3JvdXBcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBnaWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRhZGRHcm91cChjb250ZXh0LCBnaWQpIHtcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC9ncm91cHNgLCAyKSwge2dyb3VwaWQ6IGdpZH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZEdyb3VwJywgZ2lkKSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogUmVtb3ZlIGdyb3VwXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZ2lkIEdyb3VwIGlkXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0cmVtb3ZlR3JvdXAoY29udGV4dCwgZ2lkKSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvZ3JvdXBzYCwgMiksIHtncm91cGlkOiBnaWR9KVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdyZW1vdmVHcm91cCcsIGdpZCkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRhZGRVc2VyR3JvdXAoY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L2dyb3Vwc2AsIDIpLCB7IGdyb3VwaWQ6IGdpZCB9KVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdhZGRVc2VyR3JvdXAnLCB7IHVzZXJpZCwgZ2lkIH0pKVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7dGhyb3cgZXJyb3I7fSk7XG5cdFx0fSkuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdXNlciBmcm9tIGdyb3VwXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRyZW1vdmVVc2VyR3JvdXAoY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vZ3JvdXBzYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3JlbW92ZVVzZXJHcm91cCcsIHsgdXNlcmlkLCBnaWQgfSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCB1c2VyIHRvIGdyb3VwIGFkbWluXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRhZGRVc2VyU3ViQWRtaW4oY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L3N1YmFkbWluc2AsIDIpLCAgeyBncm91cGlkOiBnaWQgfSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkVXNlclN1YkFkbWluJywgeyB1c2VyaWQsIGdpZCB9KSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cCBhZG1pblxuXHQgKiBcblx0ICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ2lkIEdyb3VwIGlkXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0cmVtb3ZlVXNlclN1YkFkbWluKGNvbnRleHQsIHsgdXNlcmlkLCBnaWQgfSkge1xuXHRcdHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdHJldHVybiBhcGkuZGVsZXRlKE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L3N1YmFkbWluc2AsIDIpLCB7IGdyb3VwaWQ6IGdpZCB9KVxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdyZW1vdmVVc2VyU3ViQWRtaW4nLCB7IHVzZXJpZCwgZ2lkIH0pKVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7dGhyb3cgZXJyb3I7fSk7XG5cdFx0fSkuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZWxldGUgYSB1c2VyXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXNlcmlkIFVzZXIgaWQgXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0ZGVsZXRlVXNlcihjb250ZXh0LCB7IHVzZXJpZCB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnZGVsZXRlVXNlcicsIHVzZXJpZCkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZCBhIHVzZXJcblx0ICogXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhc3N3b3JkIFVzZXIgcGFzc3dvcmQgXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmVtYWlsIFVzZXIgZW1haWxcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ3JvdXBzIFVzZXIgZ3JvdXBzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnN1YmFkbWluIFVzZXIgc3ViYWRtaW4gZ3JvdXBzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnF1b3RhIFVzZXIgZW1haWxcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRhZGRVc2VyKHtjb250ZXh0LCBkaXNwYXRjaH0sIHsgdXNlcmlkLCBwYXNzd29yZCwgZW1haWwsIGdyb3Vwcywgc3ViYWRtaW4sIHF1b3RhLCBsYW5ndWFnZSB9KSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnNgLCAyKSwgeyB1c2VyaWQsIHBhc3N3b3JkLCBlbWFpbCwgZ3JvdXBzLCBzdWJhZG1pbiwgcXVvdGEsIGxhbmd1YWdlIH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gZGlzcGF0Y2goJ2FkZFVzZXJEYXRhJywgdXNlcmlkKSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdH0pLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHVzZXIgZGF0YSBhbmQgY29tbWl0IGFkZGl0aW9uXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXNlcmlkIFVzZXIgaWQgXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0YWRkVXNlckRhdGEoY29udGV4dCwgdXNlcmlkKSB7XG5cdFx0cmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkVXNlckRhdGEnLCByZXNwb25zZSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqIEVuYWJsZSBvciBkaXNhYmxlIHVzZXIgXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZW5hYmxlZCBVc2VyIGVuYWJsZW1lbnQgc3RhdHVzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0ZW5hYmxlRGlzYWJsZVVzZXIoY29udGV4dCwgeyB1c2VyaWQsIGVuYWJsZWQgPSB0cnVlIH0pIHtcblx0XHRsZXQgdXNlclN0YXR1cyA9IGVuYWJsZWQgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJztcblx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpLnB1dChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfS8ke3VzZXJTdGF0dXN9YCwgMikpXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2VuYWJsZURpc2FibGVVc2VyJywgeyB1c2VyaWQsIGVuYWJsZWQgfSkpXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHt0aHJvdyBlcnJvcjt9KTtcblx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEVkaXQgdXNlciBkYXRhXG5cdCAqIFxuXHQgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCBcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IFVzZXIgZmllbGQgdG8gZWRpdFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy52YWx1ZSBWYWx1ZSBvZiB0aGUgY2hhbmdlXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKi9cblx0c2V0VXNlckRhdGEoY29udGV4dCwgeyB1c2VyaWQsIGtleSwgdmFsdWUgfSkge1xuXHRcdGxldCBhbGxvd2VkRW1wdHkgPSBbJ2VtYWlsJywgJ2Rpc3BsYXluYW1lJ107XG5cdFx0aWYgKFsnZW1haWwnLCAnbGFuZ3VhZ2UnLCAncXVvdGEnLCAnZGlzcGxheW5hbWUnLCAncGFzc3dvcmQnXS5pbmRleE9mKGtleSkgIT09IC0xKSB7XG5cdFx0XHQvLyBXZSBhbGxvdyBlbXB0eSBlbWFpbCBvciBkaXNwbGF5bmFtZVxuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcblx0XHRcdFx0KFxuXHRcdFx0XHRcdChhbGxvd2VkRW1wdHkuaW5kZXhPZihrZXkpID09PSAtMSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fFxuXHRcdFx0XHRcdGFsbG93ZWRFbXB0eS5pbmRleE9mKGtleSkgIT09IC0xXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwaS5wdXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSwgeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlIH0pXG5cdFx0XHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdzZXRVc2VyRGF0YScsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pKVxuXHRcdFx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge3Rocm93IGVycm9yO30pO1xuXHRcdFx0XHR9KS5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCBkYXRhJykpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7IHN0YXRlLCBtdXRhdGlvbnMsIGdldHRlcnMsIGFjdGlvbnMgfTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvc3RvcmUvdXNlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n"); /***/ }), /* 49 */ diff --git a/settings/src/components/userList.vue b/settings/src/components/userList.vue index ed5be1f6adf..62040b1c33f 100644 --- a/settings/src/components/userList.vue +++ b/settings/src/components/userList.vue @@ -73,7 +73,13 @@ @tag="validateQuota" > </multiselect> </div> - <div class="languages" v-if="showConfig.showLanguages"></div> + <div class="languages" v-if="showConfig.showLanguages"> + <multiselect :options="languages" v-model="newUser.language" + :placeholder="t('settings', 'Default language')" + label="name" track-by="code" class="multiselect-vue" + :allowEmpty="false" group-values="languages" group-label="label"> + </multiselect> + </div> <div class="storageLocation" v-if="showConfig.showStoragePath"></div> <div class="userBackend" v-if="showConfig.showUserBackend"></div> <div class="lastLogin" v-if="showConfig.showLastLogin"></div> @@ -86,7 +92,7 @@ </form> <user-row v-for="(user, key) in filteredUsers" :user="user" :key="key" :settings="settings" :showConfig="showConfig" - :groups="groups" :subAdminsGroups="subAdminsGroups" :quotaOptions="quotaOptions" /> + :groups="groups" :subAdminsGroups="subAdminsGroups" :quotaOptions="quotaOptions" :languages="languages" /> <infinite-loading @infinite="infiniteHandler" ref="infiniteLoading"> <div slot="spinner"><div class="users-icon-loading icon-loading"></div></div> <div slot="no-more"><div class="users-list-end">— {{t('settings', 'no more results')}} —</div></div> @@ -104,6 +110,7 @@ import userRow from './userList/userRow'; import Multiselect from 'vue-multiselect'; import InfiniteLoading from 'vue-infinite-loading'; +import Vue from 'vue'; export default { name: 'userList', @@ -128,14 +135,21 @@ export default { mailAddress:'', groups: [], subAdminsGroups: [], - quota: defaultQuota + quota: defaultQuota, + language: {code: 'en', name: t('settings', 'Default language')} } }; }, mounted() { if (!this.settings.canChangePassword) { - OC.Notification.showTemporary(t('settings','Password change is disabled because the master key is disabled')); + OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled')); } + /** + * Init default language from server data. The use of this.settings + * requires a computed variable,vwhich break the v-model binding of the form, + * this is a much easier solution than getter and setter + */ + Vue.set(this.newUser.language, 'code', this.settings.defaultLanguage); }, computed: { settings() { @@ -190,6 +204,20 @@ export default { } } return ''; + }, + + /* LANGUAGES */ + languages() { + return Array( + { + label: t('settings', 'Common languages'), + languages: this.settings.languages.commonlanguages + }, + { + label: t('settings', 'All languages'), + languages: this.settings.languages.languages + } + ); } }, watch: { @@ -240,7 +268,8 @@ export default { email: this.newUser.mailAddress, groups: this.newUser.groups.map(group => group.id), subadmin: this.newUser.subAdminsGroups.map(group => group.id), - quota: this.newUser.quota.id + quota: this.newUser.quota.id, + language: this.newUser.language.code, }).then(() => this.resetForm()); } } diff --git a/settings/src/components/userList/userRow.vue b/settings/src/components/userList/userRow.vue index 9aa4fb3b852..e4915bd5b23 100644 --- a/settings/src/components/userList/userRow.vue +++ b/settings/src/components/userList/userRow.vue @@ -89,7 +89,7 @@ import Multiselect from 'vue-multiselect'; export default { name: 'userRow', - props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig'], + props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages'], components: { popoverMenu, Multiselect @@ -175,19 +175,7 @@ export default { return this.$store.getters.getPasswordPolicyMinLength; }, - /* LANGUAGES */ - languages() { - return Array( - { - label: t('settings', 'Common languages'), - languages: this.settings.languages.commonlanguages - }, - { - label: t('settings', 'All languages'), - languages: this.settings.languages.languages - } - ); - }, + /* LANGUAGE */ userLanguage() { let availableLanguages = this.languages[0].languages.concat(this.languages[1].languages); let userLang = availableLanguages.find(lang => lang.code === this.user.language); diff --git a/settings/src/store/users.js b/settings/src/store/users.js index 61bda9c0603..cf418f81ca3 100644 --- a/settings/src/store/users.js +++ b/settings/src/store/users.js @@ -342,14 +342,10 @@ const actions = { * @param {string} options.quota User email * @returns {Promise} */ - addUser({context, dispatch}, { userid, password, email, groups, subadmin, quota }) { - console.log(subadmin, quota); + addUser({context, dispatch}, { userid, password, email, groups, subadmin, quota, language }) { return api.requireAdmin().then((response) => { - return api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, email, groups, subadmin, quota }) - .then((response) => { - //let quotaDis = dispatch('setUserData', { userid, key: 'quota', value:quota }); - //let subadminDis = dispatch('addUserSubAdmin', userid); - }) + return api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, email, groups, subadmin, quota, language }) + .then((response) => dispatch('addUserData', userid)) .catch((error) => {throw error;}); }).catch((error) => context.commit('API_FAILURE', { userid, error })); }, diff --git a/settings/users.php b/settings/users.php index cfd8f761478..ac14c8df34d 100644 --- a/settings/users.php +++ b/settings/users.php @@ -144,6 +144,7 @@ $serverData['sortGroups'] = $sortGroupsBy; $serverData['quotaPreset'] = $quotaPreset; $serverData['userCount'] = $userCount-$disabledUsers; $serverData['languages'] = $languages; +$serverData['defaultLanguage'] = $config->getSystemValue('default_language', 'en'); // Settings $serverData['defaultQuota'] = $defaultQuota; $serverData['canChangePassword'] = $canChangePassword; |