diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-04-09 16:11:41 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-05-16 09:50:21 +0200 |
commit | 82e1f182c826b3a586cef59e9a4e90e1a4b9eb1f (patch) | |
tree | d54d845b82df0d8fbe6ce711e3742dd6dc34f8e2 /settings | |
parent | f33065523d7850d0722282e42f15cae0504a7097 (diff) | |
download | nextcloud-server-82e1f182c826b3a586cef59e9a4e90e1a4b9eb1f.tar.gz nextcloud-server-82e1f182c826b3a586cef59e9a4e90e1a4b9eb1f.zip |
Loading state to vue and not css
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'settings')
-rw-r--r-- | settings/css/settings.scss | 3 | ||||
-rw-r--r-- | settings/js/main.js | 4 | ||||
-rw-r--r-- | settings/src/components/userList/userRow.vue | 6 |
3 files changed, 7 insertions, 6 deletions
diff --git a/settings/css/settings.scss b/settings/css/settings.scss index 0b6c555531c..b0ee6df33ba 100644 --- a/settings/css/settings.scss +++ b/settings/css/settings.scss @@ -1391,9 +1391,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { img { display: block; } - &.icon-loading > img { - display: none; - } } .toggleUserActions { position: relative; diff --git a/settings/js/main.js b/settings/js/main.js index 4ccc61e2650..93a4f1aa32c 100644 --- a/settings/js/main.js +++ b/settings/js/main.js @@ -169,7 +169,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__userList_userRow__ = /***/ (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/* 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/Mjg4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBOzBFQUNBOztBQUVBO0FBRUE7QUFIQTs7QUFNQTtBQUZBOzZCQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7dUJBQ0E7O2tDQUVBO2VBQ0E7O1NBRUE7aUJBQ0E7Y0FDQTtpQkFDQTtZQUNBO2VBQ0E7V0FDQTtZQUNBO2FBQ0E7ZUFHQTtBQVpBO0FBSEE7QUFnQkE7OztBQUVBO3NDQUNBOztVQUVBO3dCQUNBO2lCQUNBO0FBSEE7K0NBS0E7OEVBQ0E7bUJBRUE7QUFKQTtBQU1BOzs7QUFDQTs7QUFDQTs7OzRDQUNBOztVQUNBO0FBQ0E7O0FBQ0E7OzsrQ0FDQTs7VUFDQTtBQUVBOzs7QUFDQTtrQ0FDQTsrQkFDQTtrQkFDQTtvRUFDQTtVQUNBOzREQUNBO0FBQ0E7c0NBQ0E7QUFDQTs2QkFDQTtBQUNBOztBQUNBOztrQ0FFQTtBQUNBOzJEQUNBOzt5QkFDQTs7NERBQ0E7a0ZBQ0E7QUFDQTs2QkFDQTtBQUNBOytCQVRBLENBVUE7QUFFQTs7O0FBQ0E7a0RBQ0E7OEJBQ0E7QUFFQTs7O0FBQ0E7a0NBQ0E7O3lCQUdBO3VDQUVBO0FBSEEsSUFEQTt5QkFNQTt1Q0FHQTtBQUpBO0FBS0E7O0FBQ0E7O2lGQUNBOztxQ0FDQTs7c0hBQ0E7O3FCQUVBO3FCQUVBO0FBSEE7eUNBSUE7V0FDQTtBQUNBO1VBQ0E7QUFFQTtBQWpGQTs7QUFtRkE7Z0NBQ0E7cUJBQ0E7QUFDQTtnQ0FDQTtxQkFDQTtBQUVBOzs7QUFPQTs7Ozs7Ozs7QUFDQTs7YUFDQSxZQUNBO1VBRUE7VUFDQTtrQ0FHQTtBQUxBO0FBUUE7OztBQU1BOzs7Ozs7MkNBQ0E7Z0JBQ0E7QUFFQTs7QUFDQTs7eUJBQ0E7c0JBQ0E7MEJBQ0E7K0NBQ0EsbUNBQ0E7NEJBQ0E7eUJBQ0E7QUFDQTtBQUVBOztBQUNBOzt5QkFDQTtzQkFDQTswQkFDQTs0QkFDQTtzRUFDQSxxQ0FDQTs0QkFDQTt5QkFDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRDQUNBOzhCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTtpQ0FDQTtxQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3NDQUNBOzJCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTs4QkFDQTtzQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRDQUNBOzhCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTtpQ0FDQTtxQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzZDQUNBOzBEQUNBO2lEQUNBOzZCQUNBOzZEQUNBO0FBQ0E7b0RBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7eUJBQ0E7MEJBQ0E7bUJBQ0E7aUVBQ0E7b0NBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3lCQUNBOzBCQUNBO21CQUNBO29FQUNBO29DQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0QkFDQTswQkFDQTttQkFDQTtvRUFDQTt1Q0FDQTs7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7MEJBQ0E7bUJBQ0E7dUVBQ0E7dUNBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7Ozs7d0JBQ0E7QUFDQTtpQ0FDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEE7bUNBSUE7O1VBQ0E7QUFFQTs7O0FBTUE7Ozs7OzsrQ0FDQTtBQUNBOzZDQUNBO3lCQUNBOzZCQUNBO21DQUNBO0FBQ0E7NEVBQ0E7QUFDQTtBQUNBO1VBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7QUFDQTs7c0JBRUE7U0FDQTtnQkFDQTtBQUhBO3VDQUlBOztVQUNBO0FBRUE7QUFuUEE7QUFuSEEiLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJyb3dcIiA6Y2xhc3M9XCJ7J2Rpc2FibGVkJzogbG9hZGluZy5kZWxldGUgfHwgbG9hZGluZy5kaXNhYmxlfVwiPlxuXHRcdDxkaXYgY2xhc3M9XCJhdmF0YXJcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZyc6IGxvYWRpbmcuZGVsZXRlIHx8IGxvYWRpbmcuZGlzYWJsZX1cIj48aW1nIGFsdD1cIlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIDpzcmM9XCJnZW5lcmF0ZUF2YXRhcih1c2VyLmlkLCAzMilcIiA6c3Jjc2V0PVwiZ2VuZXJhdGVBdmF0YXIodXNlci5pZCwgNjQpKycgMngsICcrZ2VuZXJhdGVBdmF0YXIodXNlci5pZCwgMTI4KSsnIDR4J1wiPjwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t1c2VyLmlkfX08L2Rpdj5cblx0XHQ8Zm9ybSBjbGFzcz1cImRpc3BsYXlOYW1lXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLmRpc3BsYXlOYW1lfVwiIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVEaXNwbGF5TmFtZVwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidkaXNwbGF5TmFtZScrdXNlci5pZCtyYW5kXCIgdHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cImxvYWRpbmcuZGlzcGxheU5hbWV8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHQ6dmFsdWU9XCJ1c2VyLmRpc3BsYXluYW1lXCIgcmVmPVwiZGlzcGxheU5hbWVcIlxuXHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiAvPlxuXHRcdFx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImljb24tY29uZmlybVwiIHZhbHVlPVwiXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdFx0PGZvcm0gY2xhc3M9XCJwYXNzd29yZFwiIHYtaWY9XCJzZXR0aW5ncy5jYW5DaGFuZ2VQYXNzd29yZFwiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5wYXNzd29yZH1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwidXBkYXRlUGFzc3dvcmRcIj5cblx0XHRcdDxpbnB1dCA6aWQ9XCIncGFzc3dvcmQnK3VzZXIuaWQrcmFuZFwiIHR5cGU9XCJwYXNzd29yZFwiIHJlcXVpcmVkXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwibG9hZGluZy5wYXNzd29yZHx8bG9hZGluZy5hbGxcIiA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIlxuXHRcdFx0XHRcdHZhbHVlPVwiXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTmV3IHBhc3N3b3JkJylcIiByZWY9XCJwYXNzd29yZFwiXG5cdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIC8+XG5cdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaWNvbi1jb25maXJtXCIgdmFsdWU9XCJcIiAvPlxuXHRcdDwvZm9ybT5cblx0XHQ8ZGl2IHYtZWxzZT48L2Rpdj5cblx0XHQ8Zm9ybSBjbGFzcz1cIm1haWxBZGRyZXNzXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLm1haWxBZGRyZXNzfVwiIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVFbWFpbFwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidtYWlsQWRkcmVzcycrdXNlci5pZCtyYW5kXCIgdHlwZT1cImVtYWlsXCJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJsb2FkaW5nLm1haWxBZGRyZXNzfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0OnZhbHVlPVwidXNlci5lbWFpbFwiIHJlZj1cIm1haWxBZGRyZXNzXCJcblx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cblx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpY29uLWNvbmZpcm1cIiB2YWx1ZT1cIlwiIC8+XG5cdFx0PC9mb3JtPlxuXHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuZ3JvdXBzfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJHcm91cHNcIiA6b3B0aW9ucz1cImdyb3Vwc1wiIDpkaXNhYmxlZD1cImxvYWRpbmcuZ3JvdXBzfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgdGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnQWRkIHVzZXIgaW4gZ3JvdXAnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdCA6bGltaXQ9XCIyXCIgOmxpbWl0VGV4dD1cImxpbWl0R3JvdXBzXCJcblx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOnRhZ2dhYmxlPVwidHJ1ZVwiIDpjbG9zZU9uU2VsZWN0PVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0IEB0YWc9XCJjcmVhdGVHcm91cFwiIEBzZWxlY3Q9XCJhZGRVc2VyR3JvdXBcIiBAcmVtb3ZlPVwicmVtb3ZlVXNlckdyb3VwXCI+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJzdWJhZG1pbnNcIiB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnN1YmFkbWluc31cIj5cblx0XHRcdDxtdWx0aXNlbGVjdCA6dmFsdWU9XCJ1c2VyU3ViQWRtaW5zR3JvdXBzXCIgOm9wdGlvbnM9XCJzdWJBZG1pbnNHcm91cHNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLnN1YmFkbWluc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDpsaW1pdD1cIjJcIiA6bGltaXRUZXh0PVwibGltaXRHcm91cHNcIlxuXHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2VPblNlbGVjdD1cImZhbHNlXCJcblx0XHRcdFx0XHRcdCBAc2VsZWN0PVwiYWRkVXNlclN1YkFkbWluXCIgQHJlbW92ZT1cInJlbW92ZVVzZXJTdWJBZG1pblwiPlxuXHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInF1b3RhXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnF1b3RhfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJRdW90YVwiIDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgOmRpc2FibGVkPVwibG9hZGluZy5xdW90YXx8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IHRhZy1wbGFjZWhvbGRlcj1cImNyZWF0ZVwiIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NlbGVjdCB1c2VyIHF1b3RhJylcIlxuXHRcdFx0XHRcdFx0IGxhYmVsPVwibGFiZWxcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiIEBpbnB1dD1cInNldFVzZXJRdW90YVwiPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDxwcm9ncmVzcyBjbGFzcz1cInF1b3RhLXVzZXItcHJvZ3Jlc3NcIiA6Y2xhc3M9XCJ7J3dhcm4nOnVzZWRRdW90YT44MH1cIiA6dmFsdWU9XCJ1c2VkUXVvdGFcIiBtYXg9XCIxMDBcIj48L3Byb2dyZXNzPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJsYW5ndWFnZXNcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcubGFuZ3VhZ2VzfVwiXG5cdFx0XHQgdi1pZj1cInNob3dDb25maWcuc2hvd0xhbmd1YWdlc1wiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJMYW5ndWFnZVwiIDpvcHRpb25zPVwibGFuZ3VhZ2VzXCIgOmRpc2FibGVkPVwibG9hZGluZy5sYW5ndWFnZXN8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdObyBsYW5ndWFnZSBzZXQnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJjb2RlXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiBncm91cC12YWx1ZXM9XCJsYW5ndWFnZXNcIiBncm91cC1sYWJlbD1cImxhYmVsXCJcblx0XHRcdFx0XHRcdCBAaW5wdXQ9XCJzZXRVc2VyTGFuZ3VhZ2VcIj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInN0b3JhZ2VMb2NhdGlvblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFwiPnt7dXNlci5zdG9yYWdlTG9jYXRpb259fTwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJ1c2VyQmFja2VuZFwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFwiPnt7dXNlci5iYWNrZW5kfX08L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwibGFzdExvZ2luXCIgdi1pZj1cInNob3dDb25maWcuc2hvd0xhc3RMb2dpblwiIDp0aXRsZT1cInVzZXIubGFzdExvZ2luPjAgPyBPQy5VdGlsLmZvcm1hdERhdGUodXNlci5sYXN0TG9naW4pIDogJydcIj5cblx0XHRcdHt7dXNlci5sYXN0TG9naW4+MCA/IE9DLlV0aWwucmVsYXRpdmVNb2RpZmllZERhdGUodXNlci5sYXN0TG9naW4pIDogdCgnc2V0dGluZ3MnLCdOZXZlcicpfX1cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwidXNlckFjdGlvbnNcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGVVc2VyQWN0aW9uc1wiIHYtaWY9XCJPQy5jdXJyZW50VXNlciAhPT0gdXNlci5pZCAmJiB1c2VyLmlkICE9PSAnYWRtaW4nICYmICFsb2FkaW5nLmFsbFwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1tb3JlXCIgdi1jbGljay1vdXRzaWRlPVwiaGlkZU1lbnVcIiBAY2xpY2s9XCJzaG93TWVudVwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicG9wb3Zlcm1lbnVcIiA6Y2xhc3M9XCJ7ICdvcGVuJzogb3BlbmVkTWVudSB9XCI+XG5cdFx0XHRcdFx0PHBvcG92ZXItbWVudSA6bWVudT1cInVzZXJBY3Rpb25zXCIgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgcG9wb3Zlck1lbnUgZnJvbSAnLi4vcG9wb3Zlck1lbnUnO1xuaW1wb3J0IENsaWNrT3V0c2lkZSBmcm9tICd2dWUtY2xpY2stb3V0c2lkZSc7XG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAndnVlLW11bHRpc2VsZWN0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAndXNlclJvdycsXG5cdHByb3BzOiBbJ3VzZXInLCAnc2V0dGluZ3MnLCAnZ3JvdXBzJywgJ3N1YkFkbWluc0dyb3VwcycsICdxdW90YU9wdGlvbnMnLCAnc2hvd0NvbmZpZyddLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0cG9wb3Zlck1lbnUsXG5cdFx0TXVsdGlzZWxlY3Rcblx0fSxcblx0ZGlyZWN0aXZlczoge1xuXHRcdENsaWNrT3V0c2lkZVxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdC8vIHJlcXVpcmVkIGlmIHBvcHVwIG5lZWRzIHRvIHN0YXkgb3BlbmVkIGFmdGVyIG1lbnUgY2xpY2tcblx0XHQvLyBzaW5jZSB3ZSBvbmx5IGhhdmUgZGlzYWJsZS9kZWxldGUgYWN0aW9ucywgbGV0J3MgY2xvc2UgaXQgZGlyZWN0bHlcblx0XHQvLyB0aGlzLnBvcHVwSXRlbSA9IHRoaXMuJGVsO1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyYW5kOiBwYXJzZUludChNYXRoLnJhbmRvbSgpICogMTAwMCksXG5cdFx0XHRvcGVuZWRNZW51OiBmYWxzZSxcblx0XHRcdGxvYWRpbmc6IHtcblx0XHRcdFx0YWxsOiBmYWxzZSxcblx0XHRcdFx0ZGlzcGxheU5hbWU6IGZhbHNlLFxuXHRcdFx0XHRwYXNzd29yZDogZmFsc2UsXG5cdFx0XHRcdG1haWxBZGRyZXNzOiBmYWxzZSxcblx0XHRcdFx0Z3JvdXBzOiBmYWxzZSxcblx0XHRcdFx0c3ViYWRtaW5zOiBmYWxzZSxcblx0XHRcdFx0cXVvdGE6IGZhbHNlLFxuXHRcdFx0XHRkZWxldGU6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlOiBmYWxzZSxcblx0XHRcdFx0bGFuZ3VhZ2VzOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHQvKiBVU0VSIFBPUE9WRVJNRU5VIEFDVElPTlMgKi9cblx0XHR1c2VyQWN0aW9ucygpIHtcblx0XHRcdHJldHVybiBbe1xuXHRcdFx0XHRpY29uOiAnaWNvbi1kZWxldGUnLFxuXHRcdFx0XHR0ZXh0OiB0KCdzZXR0aW5ncycsJ0RlbGV0ZSB1c2VyJyksXG5cdFx0XHRcdGFjdGlvbjogdGhpcy5kZWxldGVVc2VyXG5cdFx0XHR9LHtcblx0XHRcdFx0J2ljb24nOiB0aGlzLnVzZXIuZW5hYmxlZCA/ICdpY29uLWNsb3NlJyA6ICdpY29uLWFkZCcsXG5cdFx0XHRcdCd0ZXh0JzogdGhpcy51c2VyLmVuYWJsZWQgPyB0KCdzZXR0aW5ncycsJ0Rpc2FibGUgdXNlcicpIDogdCgnc2V0dGluZ3MnLCdFbmFibGUgdXNlcicpLFxuXHRcdFx0XHQnYWN0aW9uJzogdGhpcy5lbmFibGVEaXNhYmxlVXNlclxuXHRcdFx0fV1cblx0XHR9LFxuXG5cdFx0LyogR1JPVVBTIE1BTkFHRU1FTlQgKi9cblx0XHR1c2VyR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJHcm91cHMgPSB0aGlzLmdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLmdyb3Vwcy5pbmNsdWRlcyhncm91cC5pZCkpO1xuXHRcdFx0cmV0dXJuIHVzZXJHcm91cHM7XG5cdFx0fSxcblx0XHR1c2VyU3ViQWRtaW5zR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJTdWJBZG1pbnNHcm91cHMgPSB0aGlzLnN1YkFkbWluc0dyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLnN1YmFkbWluLmluY2x1ZGVzKGdyb3VwLmlkKSk7XG5cdFx0XHRyZXR1cm4gdXNlclN1YkFkbWluc0dyb3Vwcztcblx0XHR9LFxuXG5cdFx0LyogUVVPVEEgTUFOQUdFTUVOVCAqL1xuXHRcdHVzZWRRdW90YSgpIHtcblx0XHRcdGxldCBxdW90YSA9IHRoaXMudXNlci5xdW90YS5xdW90YTtcblx0XHRcdGlmIChxdW90YSA+IDApIHtcblx0XHRcdFx0cXVvdGEgPSBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQodGhpcy51c2VyLnF1b3RhLnVzZWQgLyBxdW90YSAqIDEwMCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIHVzZWRJbkdCID0gdGhpcy51c2VyLnF1b3RhLnVzZWQgLyAoMTAgKiBNYXRoLnBvdygyLCAzMCkpO1xuXHRcdFx0XHQvL2FzeW1wdG90aWMgY3VydmUgYXBwcm9hY2hpbmcgNTAlIGF0IDEwR0IgdG8gdmlzdWFsaXplIHVzZWQgc3RhY2Ugd2l0aCBpbmZpbml0ZSBxdW90YVxuXHRcdFx0XHRxdW90YSA9IDk1ICogKDEgLSAoMSAvICh1c2VkSW5HQiArIDEpKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaXNOYU4ocXVvdGEpID8gMCA6IHF1b3RhO1xuXHRcdH0sXG5cdFx0Ly8gTWFwcGluZyBzYXZlZCB2YWx1ZXMgdG8gb2JqZWN0c1xuXHRcdHVzZXJRdW90YSgpIHtcblx0XHRcdGlmICh0aGlzLnVzZXIucXVvdGEucXVvdGEgPiAwKSB7XG5cdFx0XHRcdC8vIGlmIHZhbHVlIGlzIHZhbGlkLCBsZXQncyBtYXAgdGhlIHF1b3RhT3B0aW9ucyBvciByZXR1cm4gY3VzdG9tIHF1b3RhXG5cdFx0XHRcdGxldCBodW1hblF1b3RhID0gT0MuVXRpbC5odW1hbkZpbGVTaXplKHRoaXMudXNlci5xdW90YS5xdW90YSk7XG5cdFx0XHRcdGxldCB1c2VyUXVvdGEgPSB0aGlzLnF1b3RhT3B0aW9ucy5maW5kKHF1b3RhID0+IHF1b3RhLmlkID09PSBodW1hblF1b3RhKTtcblx0XHRcdFx0cmV0dXJuIHVzZXJRdW90YSA/IHVzZXJRdW90YSA6IHtpZDpodW1hblF1b3RhLCBsYWJlbDpodW1hblF1b3RhfTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy51c2VyLnF1b3RhLnF1b3RhID09PSAwIHx8IHRoaXMudXNlci5xdW90YS5xdW90YSA9PT0gJ2RlZmF1bHQnKSB7XG5cdFx0XHRcdC8vIGRlZmF1bHQgcXVvdGEgaXMgcmVwbGFjZWQgYnkgdGhlIHByb3BlciB2YWx1ZSBvbiBsb2FkXG5cdFx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1swXTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1sxXTsgLy8gdW5saW1pdGVkXG5cdFx0fSxcblxuXHRcdC8qIFBBU1NXT1JEIFBPTElDWT8gKi9cblx0XHRtaW5QYXNzd29yZExlbmd0aCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoO1xuXHRcdH0sXG5cblx0XHQvKiBMQU5HVUFHRVMgKi9cblx0XHRsYW5ndWFnZXMoKSB7XG5cdFx0XHRyZXR1cm4gQXJyYXkoXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogdCgnc2V0dGluZ3MnLCAnQ29tbW9uIGxhbmd1YWdlcycpLFxuXHRcdFx0XHRcdGxhbmd1YWdlczogdGhpcy5zZXR0aW5ncy5sYW5ndWFnZXMuY29tbW9ubGFuZ3VhZ2VzXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogdCgnc2V0dGluZ3MnLCAnQWxsIGxhbmd1YWdlcycpLFxuXHRcdFx0XHRcdGxhbmd1YWdlczogdGhpcy5zZXR0aW5ncy5sYW5ndWFnZXMubGFuZ3VhZ2VzXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSxcblx0XHR1c2VyTGFuZ3VhZ2UoKSB7XG5cdFx0XHRsZXQgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXNbMF0ubGFuZ3VhZ2VzLmNvbmNhdCh0aGlzLmxhbmd1YWdlc1sxXS5sYW5ndWFnZXMpO1xuXHRcdFx0bGV0IHVzZXJMYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzLmZpbmQobGFuZyA9PiBsYW5nLmNvZGUgPT09IHRoaXMudXNlci5sYW5ndWFnZSk7XG5cdFx0XHRpZiAodHlwZW9mIHVzZXJMYW5nICE9PSAnb2JqZWN0JyAmJiB0aGlzLnVzZXIubGFuZ3VhZ2UgIT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Y29kZTogdGhpcy51c2VyLmxhbmd1YWdlLFxuXHRcdFx0XHRcdG5hbWU6IHRoaXMudXNlci5sYW5ndWFnZVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYodGhpcy51c2VyLmxhbmd1YWdlID09PSAnJykge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdXNlckxhbmc7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0LyogTUVOVSBIQU5ETElORyAqL1xuXHRcdHNob3dNZW51ICgpIHtcblx0XHRcdHRoaXMub3BlbmVkTWVudSA9IHRydWU7XG5cdFx0fSxcblx0XHRoaWRlTWVudSAoKSB7XG5cdFx0XHR0aGlzLm9wZW5lZE1lbnUgPSBmYWxzZTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogR2VuZXJhdGUgYXZhdGFyIHVybFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyIFRoZSB1c2VyIG5hbWVcblx0XHQgKiBAcGFyYW0ge2ludH0gc2l6ZSBTaXplIGludGVnZXIsIGRlZmF1bHQgMzJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGdlbmVyYXRlQXZhdGFyKHVzZXIsIHNpemU9MzIpIHtcblx0XHRcdHJldHVybiBPQy5nZW5lcmF0ZVVybChcblx0XHRcdFx0Jy9hdmF0YXIve3VzZXJ9L3tzaXplfT92PXt2ZXJzaW9ufScsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1c2VyOiB1c2VyLFxuXHRcdFx0XHRcdHNpemU6IHNpemUsXG5cdFx0XHRcdFx0dmVyc2lvbjogb2NfdXNlcmNvbmZpZy5hdmF0YXIudmVyc2lvblxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIEZvcm1hdCB0aGUgbGltaXQgdGV4dCBpbiB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7aW50fSBjb3VudCBlbGVtZW50cyBsZWZ0XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRsaW1pdEdyb3Vwcyhjb3VudCkge1xuXHRcdFx0cmV0dXJuICcrJytjb3VudDtcblx0XHR9LFxuXG5cdFx0ZGVsZXRlVXNlcigpIHtcblx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLmFsbCA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdkZWxldGVVc2VyJywge3VzZXJpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlID0gZmFsc2Vcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdGVuYWJsZURpc2FibGVVc2VyKCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZW5hYmxlZCA9ICF0aGlzLnVzZXIuZW5hYmxlZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZW5hYmxlRGlzYWJsZVVzZXInLCB7dXNlcmlkLCBlbmFibGVkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgZGlzcGxheU5hbWVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGxheU5hbWUgVGhlIGRpc3BsYXkgbmFtZVxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZURpc3BsYXlOYW1lKCkge1xuXHRcdFx0bGV0IGRpc3BsYXlOYW1lID0gdGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5kaXNwbGF5TmFtZSA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAnZGlzcGxheW5hbWUnLFxuXHRcdFx0XHR2YWx1ZTogZGlzcGxheU5hbWVcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcuZGlzcGxheU5hbWUgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZSA9IGRpc3BsYXlOYW1lO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCB1c2VyIHBhc3N3b3JkXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBlbWFpbCBhZHJlc3Ncblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHR1cGRhdGVQYXNzd29yZCgpIHtcblx0XHRcdGxldCBwYXNzd29yZCA9IHRoaXMuJHJlZnMucGFzc3dvcmQudmFsdWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSB0cnVlO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCxcblx0XHRcdFx0a2V5OiAncGFzc3dvcmQnLFxuXHRcdFx0XHR2YWx1ZTogcGFzc3dvcmRcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5wYXNzd29yZC52YWx1ZSA9ICcnOyAvLyBlbXB0eSAmIHNob3cgcGxhY2Vob2xkZXIgXG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgbWFpbEFkZHJlc3Ncblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbWFpbEFkZHJlc3MgVGhlIGVtYWlsIGFkcmVzc1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZUVtYWlsKCkge1xuXHRcdFx0bGV0IG1haWxBZGRyZXNzID0gdGhpcy4kcmVmcy5tYWlsQWRkcmVzcy52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLFxuXHRcdFx0XHRrZXk6ICdlbWFpbCcsXG5cdFx0XHRcdHZhbHVlOiBtYWlsQWRkcmVzc1xuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLm1haWxBZGRyZXNzLnZhbHVlID0gbWFpbEFkZHJlc3M7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlIGEgbmV3IGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwcyBHcm91cCBpZFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGNyZWF0ZUdyb3VwKGdpZCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nID0ge2dyb3Vwczp0cnVlLCBzdWJhZG1pbnM6dHJ1ZX1cblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRHcm91cCcsIGdpZCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IHtncm91cHM6ZmFsc2UsIHN1YmFkbWluczpmYWxzZX07XG5cdFx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzW3RoaXMuZ3JvdXBzLmxlbmd0aF07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGFkZFVzZXJHcm91cChncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmdyb3VwcyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuZ3JvdXBzID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBSZW1vdmUgdXNlciBmcm9tIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZVVzZXJHcm91cChncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmdyb3VwcyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdyZW1vdmVVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuZ3JvdXBzID0gZmFsc2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBBZGQgdXNlciB0byBncm91cFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7b2JqZWN0fSBncm91cCBHcm91cCBvYmplY3Rcblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHRhZGRVc2VyU3ViQWRtaW4oZ3JvdXApIHtcblx0XHRcdHRoaXMubG9hZGluZy5zdWJhZG1pbnMgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBnaWQgPSBncm91cC5pZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkVXNlclN1YkFkbWluJywge3VzZXJpZCwgZ2lkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7b2JqZWN0fSBncm91cCBHcm91cCBvYmplY3Rcblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHRyZW1vdmVVc2VyU3ViQWRtaW4oZ3JvdXApIHtcblx0XHRcdHRoaXMubG9hZGluZy5zdWJhZG1pbnMgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBnaWQgPSBncm91cC5pZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncmVtb3ZlVXNlclN1YkFkbWluJywge3VzZXJpZCwgZ2lkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogRGlzcGF0Y2ggcXVvdGEgc2V0IHJlcXVlc3Rcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IHF1b3RhIFF1b3RhIGluIHJlYWRhYmxlIGZvcm1hdCAnNSBHQicgb3IgT2JqZWN0IHtpZDogJzUgR0InLCBsYWJlbDogJzVHQid9XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRzZXRVc2VyUXVvdGEocXVvdGEgPSAnbm9uZScpIHtcblx0XHRcdHRoaXMubG9hZGluZy5xdW90YSA9IHRydWU7XG5cdFx0XHQvLyBlbnN1cmUgd2Ugb25seSBzZW5kIHRoZSBwcmVzZXQgaWRcblx0XHRcdHF1b3RhID0gcXVvdGEuaWQgPyBxdW90YS5pZCA6IHF1b3RhO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCwgXG5cdFx0XHRcdGtleTogJ3F1b3RhJyxcblx0XHRcdFx0dmFsdWU6IHF1b3RhXG5cdFx0XHR9KS50aGVuKCgpID0+IHRoaXMubG9hZGluZy5xdW90YSA9IGZhbHNlKTtcblx0XHRcdHJldHVybiBxdW90YTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogVmFsaWRhdGUgcXVvdGEgc3RyaW5nIHRvIG1ha2Ugc3VyZSBpdCdzIGEgdmFsaWQgaHVtYW4gZmlsZSBzaXplXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHF1b3RhIFF1b3RhIGluIHJlYWRhYmxlIGZvcm1hdCAnNSBHQidcblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZXxib29sZWFufVxuXHRcdCAqL1xuXHRcdHZhbGlkYXRlUXVvdGEocXVvdGEpIHtcblx0XHRcdC8vIG9ubHkgdXNlZCBmb3IgbmV3IHByZXNldHMgc2VudCB0aHJvdWdoIEBUYWdcblx0XHRcdGxldCB2YWxpZFF1b3RhID0gT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKTtcblx0XHRcdGlmICh2YWxpZFF1b3RhID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnNldFVzZXJRdW90YSgnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWxpZFF1b3RhICE9PSBudWxsKSB7XG5cdFx0XHRcdC8vIHVuaWZ5IGZvcm1hdCBvdXRwdXRcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0VXNlclF1b3RhKE9DLlV0aWwuaHVtYW5GaWxlU2l6ZShPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpKSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBpZiBubyB2YWxpZCBkb28gbm90IGNoYW5nZVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBEaXNwYXRjaCBsYW5ndWFnZSBzZXQgcmVxdWVzdFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBsYW5nIGxhbmd1YWdlIG9iamVjdCB7Y29kZTonZW4nLCBuYW1lOidFbmdsaXNoJ31cblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdHNldFVzZXJMYW5ndWFnZShsYW5nKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcubGFuZ3VhZ2VzID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCwgXG5cdFx0XHRcdGtleTogJ2xhbmd1YWdlJyxcblx0XHRcdFx0dmFsdWU6IGxhbmcuY29kZVxuXHRcdFx0fSkudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcubGFuZ3VhZ2VzID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIGxhbmc7XG5cdFx0fVxuXHR9XG59XG48L3NjcmlwdD5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\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'],\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"); /***/ }), /* 16 */ @@ -347,7 +347,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_mo /***/ (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: \"row\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: { \"icon-loading\": _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\"img\", {\n attrs: {\n alt: \"\",\n width: \"32\",\n height: \"32\",\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\"\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"displayName\",\n class: { \"icon-loading-small\": _vm.loading.displayName },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateDisplayName($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"displayName\",\n attrs: {\n id: \"displayName\" + _vm.user.id + _vm.rand,\n type: \"text\",\n disabled: _vm.loading.displayName || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.displayname }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.settings.canChangePassword\n ? _c(\n \"form\",\n {\n staticClass: \"password\",\n class: { \"icon-loading-small\": _vm.loading.password },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updatePassword($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"password\",\n attrs: {\n id: \"password\" + _vm.user.id + _vm.rand,\n type: \"password\",\n required: \"\",\n disabled: _vm.loading.password || _vm.loading.all,\n minlength: _vm.minPasswordLength,\n value: \"\",\n placeholder: _vm.t(\"settings\", \"New password\"),\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : _c(\"div\"),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"mailAddress\",\n class: { \"icon-loading-small\": _vm.loading.mailAddress },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateEmail($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"mailAddress\",\n attrs: {\n id: \"mailAddress\" + _vm.user.id + _vm.rand,\n type: \"email\",\n disabled: _vm.loading.mailAddress || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.email }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"groups\",\n class: { \"icon-loading-small\": _vm.loading.groups }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userGroups,\n options: _vm.groups,\n disabled: _vm.loading.groups || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n taggable: true,\n closeOnSelect: false\n },\n on: {\n tag: _vm.createGroup,\n select: _vm.addUserGroup,\n remove: _vm.removeUserGroup\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n {\n staticClass: \"subadmins\",\n class: { \"icon-loading-small\": _vm.loading.subadmins }\n },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userSubAdminsGroups,\n options: _vm.subAdminsGroups,\n disabled: _vm.loading.subadmins || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n closeOnSelect: false\n },\n on: {\n select: _vm.addUserSubAdmin,\n remove: _vm.removeUserSubAdmin\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 {\n staticClass: \"quota\",\n class: { \"icon-loading-small\": _vm.loading.quota }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userQuota,\n options: _vm.quotaOptions,\n disabled: _vm.loading.quota || _vm.loading.all,\n \"tag-placeholder\": \"create\",\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, input: _vm.setUserQuota }\n }),\n _vm._v(\" \"),\n _c(\"progress\", {\n staticClass: \"quota-user-progress\",\n class: { warn: _vm.usedQuota > 80 },\n attrs: { max: \"100\" },\n domProps: { value: _vm.usedQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n {\n staticClass: \"languages\",\n class: { \"icon-loading-small\": _vm.loading.languages }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userLanguage,\n options: _vm.languages,\n disabled: _vm.loading.languages || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"No language set\"),\n label: \"name\",\n \"track-by\": \"code\",\n allowEmpty: false,\n \"group-values\": \"languages\",\n \"group-label\": \"label\"\n },\n on: { input: _vm.setUserLanguage }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" }, [\n _vm._v(_vm._s(_vm.user.storageLocation))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(_vm._s(_vm.user.backend))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\n \"div\",\n {\n staticClass: \"lastLogin\",\n attrs: {\n title:\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.formatDate(_vm.user.lastLogin)\n : \"\"\n }\n },\n [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)\n : _vm.t(\"settings\", \"Never\")\n ) +\n \"\\n\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.OC.currentUser !== _vm.user.id &&\n _vm.user.id !== \"admin\" &&\n !_vm.loading.all\n ? _c(\"div\", { staticClass: \"toggleUserActions\" }, [\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: { click: _vm.showMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"popovermenu\", class: { open: _vm.openedMenu } },\n [_c(\"popover-menu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\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-d19586ce\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZT8zMGMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnREFBZ0Q7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsdUJBQXVCO0FBQ3ZCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkNBQTZDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQWdEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLG1CQUFtQixvQkFBb0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJCQUEyQjtBQUMvQyxvQkFBb0IsYUFBYTtBQUNqQyx1QkFBdUI7QUFDdkIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUNBQWlDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUNBQXFDLHVCQUF1QixFQUFFO0FBQy9FLHFDQUFxQyxTQUFTLHdCQUF3QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInJvd1wiLFxuICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRlbGV0ZSB8fCBfdm0ubG9hZGluZy5kaXNhYmxlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmdcIjogX3ZtLmxvYWRpbmcuZGVsZXRlIHx8IF92bS5sb2FkaW5nLmRpc2FibGUgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgYWx0OiBcIlwiLFxuICAgICAgICAgICAgICB3aWR0aDogXCIzMlwiLFxuICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzJcIixcbiAgICAgICAgICAgICAgc3JjOiBfdm0uZ2VuZXJhdGVBdmF0YXIoX3ZtLnVzZXIuaWQsIDMyKSxcbiAgICAgICAgICAgICAgc3Jjc2V0OlxuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgNjQpICtcbiAgICAgICAgICAgICAgICBcIiAyeCwgXCIgK1xuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgMTI4KSArXG4gICAgICAgICAgICAgICAgXCIgNHhcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIgfSwgW192bS5fdihfdm0uX3MoX3ZtLnVzZXIuaWQpKV0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImZvcm1cIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuZGlzcGxheU5hbWUgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS51cGRhdGVEaXNwbGF5TmFtZSgkZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICByZWY6IFwiZGlzcGxheU5hbWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIGlkOiBcImRpc3BsYXlOYW1lXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRpc3BsYXlOYW1lIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5kaXNwbGF5bmFtZSB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImZvcm1cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlUGFzc3dvcmQoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgcmVmOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBcInBhc3N3b3JkXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoOiBfdm0ubWluUGFzc3dvcmRMZW5ndGgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV3IHBhc3N3b3JkXCIpLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwic3VibWl0XCIsIHZhbHVlOiBcIlwiIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX2MoXCJkaXZcIiksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5tYWlsQWRkcmVzcyB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLnVwZGF0ZUVtYWlsKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJtYWlsQWRkcmVzc1wiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwibWFpbEFkZHJlc3NcIiArIF92bS51c2VyLmlkICsgX3ZtLnJhbmQsXG4gICAgICAgICAgICAgIHR5cGU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLm1haWxBZGRyZXNzIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5lbWFpbCB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJncm91cHNcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5ncm91cHMgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlckdyb3VwcyxcbiAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmdyb3VwcyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgIFwidGFnLXBsYWNlaG9sZGVyXCI6IFwiY3JlYXRlXCIsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiQWRkIHVzZXIgaW4gZ3JvdXBcIiksXG4gICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgIGxpbWl0OiAyLFxuICAgICAgICAgICAgICBsaW1pdFRleHQ6IF92bS5saW1pdEdyb3VwcyxcbiAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIHRhZzogX3ZtLmNyZWF0ZUdyb3VwLFxuICAgICAgICAgICAgICBzZWxlY3Q6IF92bS5hZGRVc2VyR3JvdXAsXG4gICAgICAgICAgICAgIHJlbW92ZTogX3ZtLnJlbW92ZVVzZXJHcm91cFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnN1YkFkbWluc0dyb3Vwcy5sZW5ndGggPiAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzdWJhZG1pbnNcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuc3ViYWRtaW5zIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLnN1YmFkbWlucyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2V0IHVzZXIgYXMgYWRtaW4gZm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsaW1pdDogMixcbiAgICAgICAgICAgICAgICAgICAgbGltaXRUZXh0OiBfdm0ubGltaXRHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogX3ZtLmFkZFVzZXJTdWJBZG1pbixcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBfdm0ucmVtb3ZlVXNlclN1YkFkbWluXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgc2xvdDogXCJub1Jlc3VsdFwiIH0sIHNsb3Q6IFwibm9SZXN1bHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucXVvdGEgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclF1b3RhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ucXVvdGFPcHRpb25zLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucXVvdGEgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICBcInRhZy1wbGFjZWhvbGRlclwiOiBcImNyZWF0ZVwiLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNlbGVjdCB1c2VyIHF1b3RhXCIpLFxuICAgICAgICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgYWxsb3dFbXB0eTogZmFsc2UsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgdGFnOiBfdm0udmFsaWRhdGVRdW90YSwgaW5wdXQ6IF92bS5zZXRVc2VyUXVvdGEgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJwcm9ncmVzc1wiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJxdW90YS11c2VyLXByb2dyZXNzXCIsXG4gICAgICAgICAgICBjbGFzczogeyB3YXJuOiBfdm0udXNlZFF1b3RhID4gODAgfSxcbiAgICAgICAgICAgIGF0dHJzOiB7IG1heDogXCIxMDBcIiB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS51c2VkUXVvdGEgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhbmd1YWdlc1xuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCI6IF92bS5sb2FkaW5nLmxhbmd1YWdlcyB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmxhbmd1YWdlcyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk5vIGxhbmd1YWdlIHNldFwiKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJjb2RlXCIsXG4gICAgICAgICAgICAgICAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIFwiZ3JvdXAtdmFsdWVzXCI6IFwibGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgICAgICBcImdyb3VwLWxhYmVsXCI6IFwibGFiZWxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHsgaW5wdXQ6IF92bS5zZXRVc2VyTGFuZ3VhZ2UgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJzdG9yYWdlTG9jYXRpb25cIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS51c2VyLnN0b3JhZ2VMb2NhdGlvbikpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInVzZXJCYWNrZW5kXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udXNlci5iYWNrZW5kKSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImxhc3RMb2dpblwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgX3ZtLnVzZXIubGFzdExvZ2luID4gMFxuICAgICAgICAgICAgICAgICAgICA/IF92bS5PQy5VdGlsLmZvcm1hdERhdGUoX3ZtLnVzZXIubGFzdExvZ2luKVxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XCIgK1xuICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICBfdm0udXNlci5sYXN0TG9naW4gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZShfdm0udXNlci5sYXN0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV2ZXJcIilcbiAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgIF92bS5PQy5jdXJyZW50VXNlciAhPT0gX3ZtLnVzZXIuaWQgJiZcbiAgICAgICAgX3ZtLnVzZXIuaWQgIT09IFwiYWRtaW5cIiAmJlxuICAgICAgICAhX3ZtLmxvYWRpbmcuYWxsXG4gICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRvZ2dsZVVzZXJBY3Rpb25zXCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oaWRlTWVudSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoaWRlTWVudVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpY29uLW1vcmVcIixcbiAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnNob3dNZW51IH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJwb3BvdmVybWVudVwiLCBjbGFzczogeyBvcGVuOiBfdm0ub3BlbmVkTWVudSB9IH0sXG4gICAgICAgICAgICAgICAgW19jKFwicG9wb3Zlci1tZW51XCIsIHsgYXR0cnM6IHsgbWVudTogX3ZtLnVzZXJBY3Rpb25zIH0gfSldLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICBdKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtZDE5NTg2Y2VcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1kMTk1ODZjZVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///41\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: \"row\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: {\n \"icon-loading-small\": _vm.loading.delete || _vm.loading.disable\n }\n },\n [\n !_vm.loading.delete && !_vm.loading.disable\n ? _c(\"img\", {\n attrs: {\n alt: \"\",\n width: \"32\",\n height: \"32\",\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\"\n }\n })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"displayName\",\n class: { \"icon-loading-small\": _vm.loading.displayName },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateDisplayName($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"displayName\",\n attrs: {\n id: \"displayName\" + _vm.user.id + _vm.rand,\n type: \"text\",\n disabled: _vm.loading.displayName || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.displayname }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.settings.canChangePassword\n ? _c(\n \"form\",\n {\n staticClass: \"password\",\n class: { \"icon-loading-small\": _vm.loading.password },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updatePassword($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"password\",\n attrs: {\n id: \"password\" + _vm.user.id + _vm.rand,\n type: \"password\",\n required: \"\",\n disabled: _vm.loading.password || _vm.loading.all,\n minlength: _vm.minPasswordLength,\n value: \"\",\n placeholder: _vm.t(\"settings\", \"New password\"),\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : _c(\"div\"),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"mailAddress\",\n class: { \"icon-loading-small\": _vm.loading.mailAddress },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateEmail($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"mailAddress\",\n attrs: {\n id: \"mailAddress\" + _vm.user.id + _vm.rand,\n type: \"email\",\n disabled: _vm.loading.mailAddress || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.email }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"groups\",\n class: { \"icon-loading-small\": _vm.loading.groups }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userGroups,\n options: _vm.groups,\n disabled: _vm.loading.groups || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n taggable: true,\n closeOnSelect: false\n },\n on: {\n tag: _vm.createGroup,\n select: _vm.addUserGroup,\n remove: _vm.removeUserGroup\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n {\n staticClass: \"subadmins\",\n class: { \"icon-loading-small\": _vm.loading.subadmins }\n },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userSubAdminsGroups,\n options: _vm.subAdminsGroups,\n disabled: _vm.loading.subadmins || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n closeOnSelect: false\n },\n on: {\n select: _vm.addUserSubAdmin,\n remove: _vm.removeUserSubAdmin\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 {\n staticClass: \"quota\",\n class: { \"icon-loading-small\": _vm.loading.quota }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userQuota,\n options: _vm.quotaOptions,\n disabled: _vm.loading.quota || _vm.loading.all,\n \"tag-placeholder\": \"create\",\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, input: _vm.setUserQuota }\n }),\n _vm._v(\" \"),\n _c(\"progress\", {\n staticClass: \"quota-user-progress\",\n class: { warn: _vm.usedQuota > 80 },\n attrs: { max: \"100\" },\n domProps: { value: _vm.usedQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n {\n staticClass: \"languages\",\n class: { \"icon-loading-small\": _vm.loading.languages }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userLanguage,\n options: _vm.languages,\n disabled: _vm.loading.languages || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"No language set\"),\n label: \"name\",\n \"track-by\": \"code\",\n allowEmpty: false,\n \"group-values\": \"languages\",\n \"group-label\": \"label\"\n },\n on: { input: _vm.setUserLanguage }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" }, [\n _vm._v(_vm._s(_vm.user.storageLocation))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(_vm._s(_vm.user.backend))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\n \"div\",\n {\n staticClass: \"lastLogin\",\n attrs: {\n title:\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.formatDate(_vm.user.lastLogin)\n : \"\"\n }\n },\n [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)\n : _vm.t(\"settings\", \"Never\")\n ) +\n \"\\n\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.OC.currentUser !== _vm.user.id &&\n _vm.user.id !== \"admin\" &&\n !_vm.loading.all\n ? _c(\"div\", { staticClass: \"toggleUserActions\" }, [\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: { click: _vm.showMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"popovermenu\", class: { open: _vm.openedMenu } },\n [_c(\"popover-menu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\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-d19586ce\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZT8zMGMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnREFBZ0Q7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsdUJBQXVCO0FBQ3ZCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkNBQTZDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQWdEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLG1CQUFtQixvQkFBb0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJCQUEyQjtBQUMvQyxvQkFBb0IsYUFBYTtBQUNqQyx1QkFBdUI7QUFDdkIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUNBQWlDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUNBQXFDLHVCQUF1QixFQUFFO0FBQy9FLHFDQUFxQyxTQUFTLHdCQUF3QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInJvd1wiLFxuICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRlbGV0ZSB8fCBfdm0ubG9hZGluZy5kaXNhYmxlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyXCIsXG4gICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgIFwiaWNvbi1sb2FkaW5nLXNtYWxsXCI6IF92bS5sb2FkaW5nLmRlbGV0ZSB8fCBfdm0ubG9hZGluZy5kaXNhYmxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgIV92bS5sb2FkaW5nLmRlbGV0ZSAmJiAhX3ZtLmxvYWRpbmcuZGlzYWJsZVxuICAgICAgICAgICAgPyBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGFsdDogXCJcIixcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjMyXCIsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzJcIixcbiAgICAgICAgICAgICAgICAgIHNyYzogX3ZtLmdlbmVyYXRlQXZhdGFyKF92bS51c2VyLmlkLCAzMiksXG4gICAgICAgICAgICAgICAgICBzcmNzZXQ6XG4gICAgICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgNjQpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgMngsIFwiICtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmdlbmVyYXRlQXZhdGFyKF92bS51c2VyLmlkLCAxMjgpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgNHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hbWVcIiB9LCBbX3ZtLl92KF92bS5fcyhfdm0udXNlci5pZCkpXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZGlzcGxheU5hbWVcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLnVwZGF0ZURpc3BsYXlOYW1lKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJkaXNwbGF5TmFtZVwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwiZGlzcGxheU5hbWVcIiArIF92bS51c2VyLmlkICsgX3ZtLnJhbmQsXG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcuZGlzcGxheU5hbWUgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwibmV3LXBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiLFxuICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgc3BlbGxjaGVjazogXCJmYWxzZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS51c2VyLmRpc3BsYXluYW1lIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaWNvbi1jb25maXJtXCIsXG4gICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcInN1Ym1pdFwiLCB2YWx1ZTogXCJcIiB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2V0dGluZ3MuY2FuQ2hhbmdlUGFzc3dvcmRcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZm9ybVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5wYXNzd29yZCB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS51cGRhdGVQYXNzd29yZCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICByZWY6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgaWQ6IFwicGFzc3dvcmRcIiArIF92bS51c2VyLmlkICsgX3ZtLnJhbmQsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogXCJcIixcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ubG9hZGluZy5wYXNzd29yZCB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IF92bS5taW5QYXNzd29yZExlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJOZXcgcGFzc3dvcmRcIiksXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwibmV3LXBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjazogXCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaWNvbi1jb25maXJtXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfYyhcImRpdlwiKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJmb3JtXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJtYWlsQWRkcmVzc1wiLFxuICAgICAgICAgIGNsYXNzOiB7IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCI6IF92bS5sb2FkaW5nLm1haWxBZGRyZXNzIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlRW1haWwoJGV2ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgcmVmOiBcIm1haWxBZGRyZXNzXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBpZDogXCJtYWlsQWRkcmVzc1wiICsgX3ZtLnVzZXIuaWQgKyBfdm0ucmFuZCxcbiAgICAgICAgICAgICAgdHlwZTogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcubWFpbEFkZHJlc3MgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwibmV3LXBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiLFxuICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgc3BlbGxjaGVjazogXCJmYWxzZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS51c2VyLmVtYWlsIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiaWNvbi1jb25maXJtXCIsXG4gICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcInN1Ym1pdFwiLCB2YWx1ZTogXCJcIiB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImdyb3Vwc1wiLFxuICAgICAgICAgIGNsYXNzOiB7IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCI6IF92bS5sb2FkaW5nLmdyb3VwcyB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyR3JvdXBzLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uZ3JvdXBzLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcuZ3JvdXBzIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgXCJ0YWctcGxhY2Vob2xkZXJcIjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJBZGQgdXNlciBpbiBncm91cFwiKSxcbiAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgbGltaXQ6IDIsXG4gICAgICAgICAgICAgIGxpbWl0VGV4dDogX3ZtLmxpbWl0R3JvdXBzLFxuICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgdGFnZ2FibGU6IHRydWUsXG4gICAgICAgICAgICAgIGNsb3NlT25TZWxlY3Q6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgdGFnOiBfdm0uY3JlYXRlR3JvdXAsXG4gICAgICAgICAgICAgIHNlbGVjdDogX3ZtLmFkZFVzZXJHcm91cCxcbiAgICAgICAgICAgICAgcmVtb3ZlOiBfdm0ucmVtb3ZlVXNlckdyb3VwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc3ViQWRtaW5zR3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInN1YmFkbWluc1wiLFxuICAgICAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5zdWJhZG1pbnMgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJtdWx0aXNlbGVjdFwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyU3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uc3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcuc3ViYWRtaW5zIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJTZXQgdXNlciBhcyBhZG1pbiBmb3JcIiksXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxpbWl0OiAyLFxuICAgICAgICAgICAgICAgICAgICBsaW1pdFRleHQ6IF92bS5saW1pdEdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlT25TZWxlY3Q6IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiBfdm0uYWRkVXNlclN1YkFkbWluLFxuICAgICAgICAgICAgICAgICAgICByZW1vdmU6IF92bS5yZW1vdmVVc2VyU3ViQWRtaW5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBzbG90OiBcIm5vUmVzdWx0XCIgfSwgc2xvdDogXCJub1Jlc3VsdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJObyByZXN1bHRcIikpKV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwicXVvdGFcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5xdW90YSB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyUXVvdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5xdW90YU9wdGlvbnMsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ubG9hZGluZy5xdW90YSB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgIFwidGFnLXBsYWNlaG9sZGVyXCI6IFwiY3JlYXRlXCIsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2VsZWN0IHVzZXIgcXVvdGFcIiksXG4gICAgICAgICAgICAgIGxhYmVsOiBcImxhYmVsXCIsXG4gICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgdGFnZ2FibGU6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogeyB0YWc6IF92bS52YWxpZGF0ZVF1b3RhLCBpbnB1dDogX3ZtLnNldFVzZXJRdW90YSB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcInByb2dyZXNzXCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInF1b3RhLXVzZXItcHJvZ3Jlc3NcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IHdhcm46IF92bS51c2VkUXVvdGEgPiA4MCB9LFxuICAgICAgICAgICAgYXR0cnM6IHsgbWF4OiBcIjEwMFwiIH0sXG4gICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLnVzZWRRdW90YSB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2hvd0NvbmZpZy5zaG93TGFuZ3VhZ2VzXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJsYW5ndWFnZXNcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcubGFuZ3VhZ2VzIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwibXVsdGlzZWxlY3RcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnVzZXJMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5sYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcubGFuZ3VhZ2VzIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTm8gbGFuZ3VhZ2Ugc2V0XCIpLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImNvZGVcIixcbiAgICAgICAgICAgICAgICAgIGFsbG93RW1wdHk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgXCJncm91cC12YWx1ZXNcIjogXCJsYW5ndWFnZXNcIixcbiAgICAgICAgICAgICAgICAgIFwiZ3JvdXAtbGFiZWxcIjogXCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjogeyBpbnB1dDogX3ZtLnNldFVzZXJMYW5ndWFnZSB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInN0b3JhZ2VMb2NhdGlvblwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnVzZXIuc3RvcmFnZUxvY2F0aW9uKSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5zaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFxuICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckJhY2tlbmRcIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS51c2VyLmJhY2tlbmQpKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhc3RMb2dpblxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibGFzdExvZ2luXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICBfdm0udXNlci5sYXN0TG9naW4gPiAwXG4gICAgICAgICAgICAgICAgICAgID8gX3ZtLk9DLlV0aWwuZm9ybWF0RGF0ZShfdm0udXNlci5sYXN0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgXCJcXG5cXHRcXHRcIiArXG4gICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgIF92bS51c2VyLmxhc3RMb2dpbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgICA/IF92bS5PQy5VdGlsLnJlbGF0aXZlTW9kaWZpZWREYXRlKF92bS51c2VyLmxhc3RMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS50KFwic2V0dGluZ3NcIiwgXCJOZXZlclwiKVxuICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICBcIlxcblxcdFwiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQWN0aW9uc1wiIH0sIFtcbiAgICAgICAgX3ZtLk9DLmN1cnJlbnRVc2VyICE9PSBfdm0udXNlci5pZCAmJlxuICAgICAgICBfdm0udXNlci5pZCAhPT0gXCJhZG1pblwiICYmXG4gICAgICAgICFfdm0ubG9hZGluZy5hbGxcbiAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidG9nZ2xlVXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiY2xpY2stb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2stb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmhpZGVNZW51LFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhpZGVNZW51XCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tbW9yZVwiLFxuICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2hvd01lbnUgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInBvcG92ZXJtZW51XCIsIGNsYXNzOiB7IG9wZW46IF92bS5vcGVuZWRNZW51IH0gfSxcbiAgICAgICAgICAgICAgICBbX2MoXCJwb3BvdmVyLW1lbnVcIiwgeyBhdHRyczogeyBtZW51OiBfdm0udXNlckFjdGlvbnMgfSB9KV0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgIF0pXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi1kMTk1ODZjZVwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LWQxOTU4NmNlXCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QvdXNlclJvdy52dWVcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///41\n"); /***/ }), /* 42 */ diff --git a/settings/src/components/userList/userRow.vue b/settings/src/components/userList/userRow.vue index fe2637c6771..9aa4fb3b852 100644 --- a/settings/src/components/userList/userRow.vue +++ b/settings/src/components/userList/userRow.vue @@ -1,6 +1,10 @@ <template> <div class="row" :class="{'disabled': loading.delete || loading.disable}"> - <div class="avatar" :class="{'icon-loading': loading.delete || loading.disable}"><img alt="" width="32" height="32" :src="generateAvatar(user.id, 32)" :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'"></div> + <div class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable}"> + <img alt="" width="32" height="32" :src="generateAvatar(user.id, 32)" + :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'" + v-if="!loading.delete && !loading.disable"> + </div> <div class="name">{{user.id}}</div> <form class="displayName" :class="{'icon-loading-small': loading.displayName}" v-on:submit.prevent="updateDisplayName"> <input :id="'displayName'+user.id+rand" type="text" |