From acc88fe36ca7e89a72c02bdefcd553164745ea10 Mon Sep 17 00:00:00 2001 From: Florentina Petcu Date: Fri, 14 Jun 2024 15:42:14 +0300 Subject: [PATCH 1/5] #1047 access signaling using workspace/doc icon This PR signals access of each workspace and document using their icons. The color of icon is different for each access level: * shared with everyone or anonymous -> icon is green; * shared with other people than yourself (the owner) but not with everybody -> icon is yellow; * shared only with you (the owner)-> icon is gray. --- app/client/ui/DocMenu.ts | 17 +++++++--- app/client/ui/DocMenuCss.ts | 16 +++++++-- app/client/ui/HomeLeftPane.ts | 10 ++++-- app/client/ui/LeftPanelCommon.ts | 9 +++++- app/client/ui/PinnedDocs.ts | 12 +++++-- app/common/UserAPI.ts | 2 ++ app/gen-server/lib/HomeDBManager.ts | 50 +++++++++++++++++++++++++---- 7 files changed, 98 insertions(+), 18 deletions(-) diff --git a/app/client/ui/DocMenu.ts b/app/client/ui/DocMenu.ts index e2e149f0..997919c4 100644 --- a/app/client/ui/DocMenu.ts +++ b/app/client/ui/DocMenu.ts @@ -137,7 +137,10 @@ function createLoadedDocMenu(owner: IDisposableOwner, home: HomeModel) { hasFeaturedTemplates ? t("More Examples and Templates") : t("Examples and Templates") ) : page === 'trash' ? t("Trash") : - workspace && [css.docHeaderIcon('Folder'), workspaceName(home.app, workspace)] + workspace && [css.docHeaderIcon('Folder', + css.docHeaderIcon.cls(workspace.shareType ? `-${workspace.shareType}` : '') + ), + workspaceName(home.app, workspace)] ), testId('doc-header'), ) @@ -201,7 +204,9 @@ function buildAllDocsBlock( return css.docBlock( css.docBlockHeaderLink( css.wsLeft( - css.docHeaderIcon('Folder'), + css.docHeaderIcon('Folder', + css.docHeaderIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + ), workspaceName(home.app, ws), ), @@ -278,7 +283,9 @@ function buildAllTemplates(home: HomeModel, templateWorkspaces: Observable, home: Hom dom.autoDispose(isTrivial), dom.hide(isTrivial), cssPageEntry.cls('-selected', (use) => use(home.currentWSId) === ws.id), - cssPageLink(cssPageIcon('Folder'), cssLinkText(workspaceName(home.app, ws)), + cssPageLink( + cssPageIcon('Folder', + cssPageIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + ), cssLinkText(workspaceName(home.app, ws)), dom.hide(isRenaming), urlState().setLinkUrl({ws: ws.id}), // Don't show menu if workspace is personal and shared by another user; we could @@ -93,7 +96,10 @@ export function createHomeLeftPane(leftPanelOpen: Observable, home: Hom ), cssPageEntry.cls('-renaming', isRenaming), dom.maybe(isRenaming, () => - cssPageLink(cssPageIcon('Folder'), + cssPageLink( + cssPageIcon('Folder', + cssPageIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + ), cssEditorInput({ initialValue: ws.name || '', save: async (val) => (val !== ws.name) ? home.renameWorkspace(ws.id, val) : undefined, diff --git a/app/client/ui/LeftPanelCommon.ts b/app/client/ui/LeftPanelCommon.ts index 533fd9e8..43c6bd0d 100644 --- a/app/client/ui/LeftPanelCommon.ts +++ b/app/client/ui/LeftPanelCommon.ts @@ -16,7 +16,7 @@ import {beaconOpenMessage} from 'app/client/lib/helpScout'; import {makeT} from 'app/client/lib/localization'; import {AppModel} from 'app/client/models/AppModel'; -import {testId, theme, vars} from 'app/client/ui2018/cssVars'; +import {colors, testId, theme, vars} from 'app/client/ui2018/cssVars'; import {icon} from 'app/client/ui2018/icons'; import {commonUrls, isFeatureEnabled} from 'app/common/gristUrls'; import {getGristConfig} from 'app/common/urlUtils'; @@ -155,6 +155,13 @@ export const cssLinkText = styled('span', ` export const cssPageIcon = styled(icon, ` flex: none; margin-right: var(--page-icon-margin, 8px); + --icon-color: ${theme.lightText}; + &-everyone { + --icon-color: ${colors.lightGreen}; + } + &-others { + --icon-color: ${colors.warning}; + } .${cssTools.className}-collapsed & { margin-right: 0; } diff --git a/app/client/ui/PinnedDocs.ts b/app/client/ui/PinnedDocs.ts index 7077749c..7088fe0e 100644 --- a/app/client/ui/PinnedDocs.ts +++ b/app/client/ui/PinnedDocs.ts @@ -45,7 +45,9 @@ export function buildPinnedDoc(home: HomeModel, doc: Document, workspace: Worksp cssImage({src: doc.options.icon}) : [docInitials(doc.name), pinnedDocThumbnail()] ), - (doc.public && !isExample ? cssPublicIcon('PublicFilled', testId('public')) : null), + (!isExample ? cssPublicIcon('PublicFilled', + cssPublicIcon.cls(doc.shareType ? `-${doc.shareType}` : ''), + testId('public')) : null), pinnedDocPreview.cls('-with-icon', Boolean(doc.options?.icon)), ), pinnedDocFooter( @@ -274,5 +276,11 @@ const cssPublicIcon = styled(icon, ` position: absolute; top: 16px; left: 16px; - --icon-color: ${theme.accentIcon}; + --icon-color: ${theme.lightText}; + &-everyone { + --icon-color: ${colors.lightGreen}; + } + &-others { + --icon-color: ${colors.warning}; + } `); diff --git a/app/common/UserAPI.ts b/app/common/UserAPI.ts index c10486ad..7b3ff242 100644 --- a/app/common/UserAPI.ts +++ b/app/common/UserAPI.ts @@ -116,6 +116,7 @@ export interface Workspace extends WorkspaceProperties { org: Organization; orgDomain?: string; access: roles.Role; + shareType?: string; owner?: FullUser; // Set when workspaces are in the "docs" pseudo-organization, // assembled from multiple personal organizations. // Not set when workspaces are all from the same organization. @@ -158,6 +159,7 @@ export interface Document extends DocumentProperties { id: string; workspace: Workspace; access: roles.Role; + shareType?: string; trunkAccess?: roles.Role|null; forks?: Fork[]; } diff --git a/app/gen-server/lib/HomeDBManager.ts b/app/gen-server/lib/HomeDBManager.ts index f8815b6e..ab7948be 100644 --- a/app/gen-server/lib/HomeDBManager.ts +++ b/app/gen-server/lib/HomeDBManager.ts @@ -1016,7 +1016,7 @@ export class HomeDBManager extends EventEmitter { options: QueryOptions = {}): Promise> { const query = this._orgWorkspaces(scope, orgKey, options); // Allow an empty result for the merged org for the anonymous user. The anonymous user - // has no home org or workspace. For all other sitations, expect at least one workspace. + // has no home org or workspace. For all other situations, expect at least one workspace. const emptyAllowed = this.isMergedOrg(orgKey) && scope.userId === this.getAnonymousUserId(); const result = await this._verifyAclPermissions(query, { scope, emptyAllowed }); // Return the workspaces, not the org(s). @@ -1027,6 +1027,39 @@ export class HomeDBManager extends EventEmitter { ws.owner = o.owner; // Include the org's domain so that the UI can build doc URLs that include the org. ws.orgDomain = o.domain; + + // Include shareType based on users permissions to set icon color + const {maxInheritedRole, users } = this.unwrapQueryResult( + await this.getWorkspaceAccess({userId: scope.userId}, ws.id, true) + ); + const permissionDataUsers = users.filter((user) => { + // effectiveRole - Gives the effective role of the member on the resource, taking everything into account. + return !!roles.getStrongestRole(user.access, + roles.getWeakestRole(user.parentAccess, maxInheritedRole)); + }); + if (permissionDataUsers?.length > 1) { + ws.shareType = permissionDataUsers.find((user) => user.email === EVERYONE_EMAIL + || user.email === ANONYMOUS_USER_EMAIL) + ? 'everyone' + : permissionDataUsers.find((user) => user.id !== scope.userId) + ? 'others' + : ''; + + for(const doc of ws.docs) { + const permissionDataUsersDoc = this.unwrapQueryResult( + await this.getDocAccess({userId: scope.userId, urlId: doc.urlId}, { + flatten: true, excludeUsersWithoutAccess: true, realAccess: true + })).users; + if (permissionDataUsersDoc && permissionDataUsersDoc.length > 1) { + doc.shareType = permissionDataUsersDoc.find((user) => user.email === EVERYONE_EMAIL + || user.email === ANONYMOUS_USER_EMAIL) + ? 'everyone' + : permissionDataUsersDoc.find((user) => user.id !== scope.userId) + ? 'others' + : ''; + } + } + } } } // For org-specific requests, we still have the org's workspaces, plus the Samples workspace @@ -2421,7 +2454,8 @@ export class HomeDBManager extends EventEmitter { // Returns UserAccessData for all users with any permissions on the ORG, as well as the // maxInheritedRole set on the workspace. Note that information for all users in the org // is given to indicate which users have access to the org but not to this particular workspace. - public async getWorkspaceAccess(scope: Scope, wsId: number): Promise> { + public async getWorkspaceAccess(scope: Scope, wsId: number, + realAccess?: boolean): Promise> { // Run the query for the workspace and org in a transaction. This brings some isolation protection // against changes to the workspace or org while we are querying. const { workspace, org, queryFailure } = await this._connection.transaction(async manager => { @@ -2467,7 +2501,7 @@ export class HomeDBManager extends EventEmitter { }; }); const maxInheritedRole = this._getMaxInheritedRole(workspace); - const personal = this._filterAccessData(scope, users, maxInheritedRole); + const personal = this._filterAccessData(scope, users, maxInheritedRole, realAccess); return { status: 200, data: { @@ -2498,6 +2532,7 @@ export class HomeDBManager extends EventEmitter { public async getDocAccess(scope: DocScope, options?: { flatten?: boolean, excludeUsersWithoutAccess?: boolean, + realAccess?: boolean }): Promise> { // Doc permissions of forks are based on the "trunk" document, so make sure // we look up permissions of trunk if we are on a fork (we'll fix the permissions @@ -2550,7 +2585,7 @@ export class HomeDBManager extends EventEmitter { maxInheritedRole = null; } - const personal = this._filterAccessData(scope, users, maxInheritedRole, doc.id); + const personal = this._filterAccessData(scope, users, maxInheritedRole, options?.realAccess, doc.id); // If we are on a fork, make any access changes needed. Assumes results // have been flattened. @@ -4867,6 +4902,7 @@ export class HomeDBManager extends EventEmitter { scope: Scope, users: UserAccessData[], maxInheritedRole: roles.BasicRole|null, + realAccess?: boolean, docId?: string ): {personal: true, public: boolean}|undefined { if (scope.userId === this.getPreviewerUserId()) { return; } @@ -4877,15 +4913,15 @@ export class HomeDBManager extends EventEmitter { const thisUser = this.getAnonymousUserId() === scope.userId ? null : users.find(user => user.id === scope.userId); - const realAccess = thisUser ? getRealAccess(thisUser, { maxInheritedRole, users }) : null; + const realAccessUser = thisUser ? getRealAccess(thisUser, { maxInheritedRole, users }) : null; // If we are an owner, don't filter user information. - if (thisUser && realAccess === 'owners') { return; } + if ((thisUser && realAccessUser === 'owners') || realAccess) { return; } // Limit user information returned to being about the current user. users.length = 0; if (thisUser) { users.push(thisUser); } - return { personal: true, public: !realAccess }; + return { personal: true, public: !realAccessUser }; } private _getWorkspaceWithACLRules(scope: Scope, wsId: number, options: Partial = {}) { From 306733321da82938090c5e1add6c109fab8155a2 Mon Sep 17 00:00:00 2001 From: Florentina Petcu Date: Fri, 14 Jun 2024 15:51:15 +0300 Subject: [PATCH 2/5] #1047 fix --- app/client/ui/DocMenu.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/client/ui/DocMenu.ts b/app/client/ui/DocMenu.ts index 997919c4..93a6891d 100644 --- a/app/client/ui/DocMenu.ts +++ b/app/client/ui/DocMenu.ts @@ -410,9 +410,9 @@ function buildWorkspaceDocBlock(home: HomeModel, workspace: Workspace, flashDocI css.docLeft( css.docName(doc.name, testId('doc-name')), css.docPinIcon('PinSmall', dom.show(doc.isPinned)), - doc.public ? css.docPublicIcon('Public', + css.docPublicIcon('Public', css.docPublicIcon.cls(doc.shareType ? `-${doc.shareType}` : ''), - testId('public')) : null, + testId('public')) ), css.docRowUpdatedAt( (doc.removedAt ? From 54dcef812ebd43a72e20ac488e85b6ff4ca966ef Mon Sep 17 00:00:00 2001 From: Florentina Petcu Date: Tue, 25 Jun 2024 15:15:18 +0300 Subject: [PATCH 3/5] #1047 add new icons for access level --- app/client/ui/DocMenu.ts | 32 ++++++++++++++++++++-------- app/client/ui/DocMenuCss.ts | 8 +++---- app/client/ui/HomeLeftPane.ts | 13 +++++++---- app/client/ui/LeftPanelCommon.ts | 4 ++-- app/client/ui/PinnedDocs.ts | 12 +++++++---- app/client/ui2018/IconList.ts | 12 +++++++++++ app/gen-server/lib/HomeDBManager.ts | 12 +++++------ static/icons/icons.css | 6 ++++++ static/ui-icons/UI/FilePrivate.svg | 3 +++ static/ui-icons/UI/FilePublic.svg | 3 +++ static/ui-icons/UI/FileShared.svg | 10 +++++++++ static/ui-icons/UI/FolderPrivate.svg | 3 +++ static/ui-icons/UI/FolderPublic.svg | 3 +++ static/ui-icons/UI/FolderShared.svg | 3 +++ 14 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 static/ui-icons/UI/FilePrivate.svg create mode 100644 static/ui-icons/UI/FilePublic.svg create mode 100644 static/ui-icons/UI/FileShared.svg create mode 100644 static/ui-icons/UI/FolderPrivate.svg create mode 100644 static/ui-icons/UI/FolderPublic.svg create mode 100644 static/ui-icons/UI/FolderShared.svg diff --git a/app/client/ui/DocMenu.ts b/app/client/ui/DocMenu.ts index 93a6891d..4edd62b1 100644 --- a/app/client/ui/DocMenu.ts +++ b/app/client/ui/DocMenu.ts @@ -137,9 +137,12 @@ function createLoadedDocMenu(owner: IDisposableOwner, home: HomeModel) { hasFeaturedTemplates ? t("More Examples and Templates") : t("Examples and Templates") ) : page === 'trash' ? t("Trash") : - workspace && [css.docHeaderIcon('Folder', - css.docHeaderIcon.cls(workspace.shareType ? `-${workspace.shareType}` : '') - ), + workspace && [css.docHeaderIcon(workspace.shareType === 'public' + ? 'FolderPublic' + : workspace.shareType === 'shared' + ? 'FolderShared' + : 'FolderPrivate', + css.docHeaderIcon.cls(`-${workspace.shareType}`)), workspaceName(home.app, workspace)] ), testId('doc-header'), @@ -204,8 +207,12 @@ function buildAllDocsBlock( return css.docBlock( css.docBlockHeaderLink( css.wsLeft( - css.docHeaderIcon('Folder', - css.docHeaderIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + css.docHeaderIcon(ws.shareType === 'public' + ? 'FolderPublic' + : ws.shareType === 'shared' + ? 'FolderShared' + : 'FolderPrivate', + css.docHeaderIcon.cls(`-${ws.shareType}`) ), workspaceName(home.app, ws), ), @@ -283,8 +290,12 @@ function buildAllTemplates(home: HomeModel, templateWorkspaces: Observable, home: Hom // TODO: Introduce a "SwitchSelector" pattern to avoid the need for N computeds (and N // recalculations) to select one of N items. const isRenaming = computed((use) => use(renaming) === ws); + const iconName = ws.shareType === 'public' + ? 'FolderPublic' + : ws.shareType === 'shared' + ? 'FolderShared' + : 'FolderPrivate'; return cssPageEntry( dom.autoDispose(isRenaming), dom.autoDispose(isTrivial), dom.hide(isTrivial), cssPageEntry.cls('-selected', (use) => use(home.currentWSId) === ws.id), cssPageLink( - cssPageIcon('Folder', - cssPageIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + cssPageIcon(iconName, + cssPageIcon.cls(`-${ws.shareType}`) ), cssLinkText(workspaceName(home.app, ws)), dom.hide(isRenaming), urlState().setLinkUrl({ws: ws.id}), @@ -97,8 +102,8 @@ export function createHomeLeftPane(leftPanelOpen: Observable, home: Hom cssPageEntry.cls('-renaming', isRenaming), dom.maybe(isRenaming, () => cssPageLink( - cssPageIcon('Folder', - cssPageIcon.cls(ws.shareType ? `-${ws.shareType}` : '') + cssPageIcon(iconName, + cssPageIcon.cls(`-${ws.shareType}`) ), cssEditorInput({ initialValue: ws.name || '', diff --git a/app/client/ui/LeftPanelCommon.ts b/app/client/ui/LeftPanelCommon.ts index 43c6bd0d..9c4c8e78 100644 --- a/app/client/ui/LeftPanelCommon.ts +++ b/app/client/ui/LeftPanelCommon.ts @@ -156,10 +156,10 @@ export const cssPageIcon = styled(icon, ` flex: none; margin-right: var(--page-icon-margin, 8px); --icon-color: ${theme.lightText}; - &-everyone { + &-public { --icon-color: ${colors.lightGreen}; } - &-others { + &-shared { --icon-color: ${colors.warning}; } .${cssTools.className}-collapsed & { diff --git a/app/client/ui/PinnedDocs.ts b/app/client/ui/PinnedDocs.ts index 7088fe0e..2be28cb0 100644 --- a/app/client/ui/PinnedDocs.ts +++ b/app/client/ui/PinnedDocs.ts @@ -45,8 +45,12 @@ export function buildPinnedDoc(home: HomeModel, doc: Document, workspace: Worksp cssImage({src: doc.options.icon}) : [docInitials(doc.name), pinnedDocThumbnail()] ), - (!isExample ? cssPublicIcon('PublicFilled', - cssPublicIcon.cls(doc.shareType ? `-${doc.shareType}` : ''), + (!isExample ? cssPublicIcon(doc.shareType === 'public' + ? 'FilePublic' + : doc.shareType === 'shared' + ? 'FileShared' + : 'FilePrivate', + cssPublicIcon.cls(`-${doc.shareType}`), testId('public')) : null), pinnedDocPreview.cls('-with-icon', Boolean(doc.options?.icon)), ), @@ -277,10 +281,10 @@ const cssPublicIcon = styled(icon, ` top: 16px; left: 16px; --icon-color: ${theme.lightText}; - &-everyone { + &-public { --icon-color: ${colors.lightGreen}; } - &-others { + &-shared { --icon-color: ${colors.warning}; } `); diff --git a/app/client/ui2018/IconList.ts b/app/client/ui2018/IconList.ts index c0fcffbf..62914195 100644 --- a/app/client/ui2018/IconList.ts +++ b/app/client/ui2018/IconList.ts @@ -67,11 +67,17 @@ export type IconName = "ChartArea" | "EyeHide" | "EyeShow" | "Feedback" | + "FilePrivate" | + "FilePublic" | + "FileShared" | "Filter" | "FilterSimple" | "Fireworks" | "Flag" | "Folder" | + "FolderPrivate" | + "FolderPublic" | + "FolderShared" | "FontBold" | "FontItalic" | "FontStrikethrough" | @@ -224,11 +230,17 @@ export const IconList: IconName[] = ["ChartArea", "EyeHide", "EyeShow", "Feedback", + "FilePrivate", + "FilePublic", + "FileShared", "Filter", "FilterSimple", "Fireworks", "Flag", "Folder", + "FolderPrivate", + "FolderPublic", + "FolderShared", "FontBold", "FontItalic", "FontStrikethrough", diff --git a/app/gen-server/lib/HomeDBManager.ts b/app/gen-server/lib/HomeDBManager.ts index ab7948be..8ff54717 100644 --- a/app/gen-server/lib/HomeDBManager.ts +++ b/app/gen-server/lib/HomeDBManager.ts @@ -1040,10 +1040,10 @@ export class HomeDBManager extends EventEmitter { if (permissionDataUsers?.length > 1) { ws.shareType = permissionDataUsers.find((user) => user.email === EVERYONE_EMAIL || user.email === ANONYMOUS_USER_EMAIL) - ? 'everyone' + ? 'public' : permissionDataUsers.find((user) => user.id !== scope.userId) - ? 'others' - : ''; + ? 'shared' + : 'private'; for(const doc of ws.docs) { const permissionDataUsersDoc = this.unwrapQueryResult( @@ -1053,10 +1053,10 @@ export class HomeDBManager extends EventEmitter { if (permissionDataUsersDoc && permissionDataUsersDoc.length > 1) { doc.shareType = permissionDataUsersDoc.find((user) => user.email === EVERYONE_EMAIL || user.email === ANONYMOUS_USER_EMAIL) - ? 'everyone' + ? 'public' : permissionDataUsersDoc.find((user) => user.id !== scope.userId) - ? 'others' - : ''; + ? 'shared' + : 'private'; } } } diff --git a/static/icons/icons.css b/static/icons/icons.css index 1a87652f..58f7a1c4 100644 --- a/static/icons/icons.css +++ b/static/icons/icons.css @@ -32,6 +32,12 @@ --icon-FieldText: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuNSwxMyBMNy41LDMgTDMsMyBMMyw0LjUgQzMsNC43NzYxNDIzNyAyLjc3NjE0MjM3LDUgMi41LDUgQzIuMjIzODU3NjMsNSAyLDQuNzc2MTQyMzcgMiw0LjUgTDIsMi41IEMyLDIuMjIzODU3NjMgMi4yMjM4NTc2MywyIDIuNSwyIEwxMy41LDIgQzEzLjc3NjE0MjQsMiAxNCwyLjIyMzg1NzYzIDE0LDIuNSBMMTQsNC41IEMxNCw0Ljc3NjE0MjM3IDEzLjc3NjE0MjQsNSAxMy41LDUgQzEzLjIyMzg1NzYsNSAxMyw0Ljc3NjE0MjM3IDEzLDQuNSBMMTMsMyBMOC41LDMgTDguNSwxMyBMMTAuNSwxMyBDMTAuNzc2MTQyNCwxMyAxMSwxMy4yMjM4NTc2IDExLDEzLjUgQzExLDEzLjc3NjE0MjQgMTAuNzc2MTQyNCwxNCAxMC41LDE0IEw1LjUsMTQgQzUuMjIzODU3NjMsMTQgNSwxMy43NzYxNDI0IDUsMTMuNSBDNSwxMy4yMjM4NTc2IDUuMjIzODU3NjMsMTMgNS41LDEzIEw3LjUsMTMgWiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+'); --icon-FieldTextbox: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSwxMyBDMi4yMjM4NTc2MywxMyAyLDEyLjc3NjE0MjQgMiwxMi41IEMyLDEyLjIyMzg1NzYgMi4yMjM4NTc2MywxMiAyLjUsMTIgTDEzLjUsMTIgQzEzLjc3NjE0MjQsMTIgMTQsMTIuMjIzODU3NiAxNCwxMi41IEMxNCwxMi43NzYxNDI0IDEzLjc3NjE0MjQsMTMgMTMuNSwxMyBMMi41LDEzIFogTTIuNSw0IEMyLjIyMzg1NzYzLDQgMiwzLjc3NjE0MjM3IDIsMy41IEMyLDMuMjIzODU3NjMgMi4yMjM4NTc2MywzIDIuNSwzIEwxMy41LDMgQzEzLjc3NjE0MjQsMyAxNCwzLjIyMzg1NzYzIDE0LDMuNSBDMTQsMy43NzYxNDIzNyAxMy43NzYxNDI0LDQgMTMuNSw0IEwyLjUsNCBaIE0yLjUsOC41IEMyLjIyMzg1NzYzLDguNSAyLDguMjc2MTQyMzcgMiw4IEMyLDcuNzIzODU3NjMgMi4yMjM4NTc2Myw3LjUgMi41LDcuNSBMMTMuNSw3LjUgQzEzLjc3NjE0MjQsNy41IDE0LDcuNzIzODU3NjMgMTQsOCBDMTQsOC4yNzYxNDIzNyAxMy43NzYxNDI0LDguNSAxMy41LDguNSBMMi41LDguNSBaIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4='); --icon-FieldToggle: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNjQ1ODI0NCwxMSBMMTAsMTEgQzExLjY1Njg1NDIsMTEgMTMsOS42NTY4NTQyNSAxMyw4IEMxMyw2LjM0MzE0NTc1IDExLjY1Njg1NDIsNSAxMCw1IEw4LjY0NTgyNDQsNSBDOS40NzYyNDUxMSw1LjczMjk0NDQ1IDEwLDYuODA1MzA3NDcgMTAsOCBDMTAsOS4xOTQ2OTI1MyA5LjQ3NjI0NTExLDEwLjI2NzA1NTUgOC42NDU4MjQ0LDExIFogTTYsNCBMMTAsNCBDMTIuMjA5MTM5LDQgMTQsNS43OTA4NjEgMTQsOCBDMTQsMTAuMjA5MTM5IDEyLjIwOTEzOSwxMiAxMCwxMiBMNiwxMiBDMy43OTA4NjEsMTIgMiwxMC4yMDkxMzkgMiw4IEMyLDUuNzkwODYxIDMuNzkwODYxLDQgNiw0IFogTTYsMTEgQzcuNjU2ODU0MjUsMTEgOSw5LjY1Njg1NDI1IDksOCBDOSw2LjM0MzE0NTc1IDcuNjU2ODU0MjUsNSA2LDUgQzQuMzQzMTQ1NzUsNSAzLDYuMzQzMTQ1NzUgMyw4IEMzLDkuNjU2ODU0MjUgNC4zNDMxNDU3NSwxMSA2LDExIFoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); + --icon-FilePrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjUgNi44VjVDMTEuNSAzLjMyIDkuNzUgMiA4IDJDNi4yNSAyIDQuNSAzLjMyIDQuNSA1VjYuOEMzLjc1IDYuOCAzIDcuNTIgMyA4LjI0VjEyLjQ0QzMgMTMuMjggMy43NSAxNCA0LjUgMTRIMTEuMzc1QzEyLjI1IDE0IDEzIDEzLjI4IDEzIDEyLjU2VjguMzZDMTMgNy41MiAxMi4yNSA2LjggMTEuNSA2LjhaTTkuODc1IDYuOEg2LjEyNVY1QzYuMTI1IDQuMDQgNyAzLjQ0IDggMy40NEM5IDMuNDQgOS44NzUgNC4wNCA5Ljg3NSA1VjYuOFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); + --icon-FilePublic: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuMzUyMzQgNi41MjM0NEwzLjU3MjY2IDYuOTA3ODFDMy43NjcxOSA3LjI0NzY2IDQuMDg1OTQgNy40OTg0NCA0LjQ2MzI4IDcuNjA2MjVMNS44MjAzMSA3Ljk5Mjk3QzYuMjIzNDQgOC4xMDc4MSA2LjUgOC40NzU3OCA2LjUgOC44OTUzMVY5LjgzMDQ3QzYuNSAxMC4wODgzIDYuNjQ1MzEgMTAuMzIyNyA2Ljg3NSAxMC40Mzc1QzcuMTA0NjkgMTAuNTUyMyA3LjI1IDEwLjc4NjcgNy4yNSAxMS4wNDQ1VjExLjk1ODZDNy4yNSAxMi4zMjQyIDcuNTk5MjIgMTIuNTg5MSA3Ljk1MDc4IDEyLjQ4ODNDOC4zMjgxMiAxMi4zODA1IDguNjIxMDkgMTIuMDc4MSA4LjcxNzE5IDExLjY5NjFMOC43ODI4MSAxMS40MzM2QzguODgxMjUgMTEuMDM3NSA5LjEzOTA2IDEwLjY5NzcgOS40OTI5NyAxMC40OTYxTDkuNjgyODEgMTAuMzg4M0MxMC4wMzQ0IDEwLjE4OTEgMTAuMjUgOS44MTQwNiAxMC4yNSA5LjQxMDk0VjkuMjE2NDFDMTAuMjUgOC45MTg3NSAxMC4xMzA1IDguNjMyODEgOS45MTk1MyA4LjQyMTg4TDkuODI4MTIgOC4zMzA0N0M5LjYxNzE5IDguMTE5NTMgOS4zMzEyNSA4IDkuMDMzNTkgOEg4LjAyMzQ0QzcuNzYzMjggOCA3LjUwNTQ3IDcuOTMyMDMgNy4yNzgxMiA3LjgwMzEzTDYuNDY5NTMgNy4zNDE0MUM2LjM2ODc1IDcuMjgyODEgNi4yOTE0MSA3LjE4OTA2IDYuMjUzOTEgNy4wNzg5MUM2LjE3ODkxIDYuODUzOTEgNi4yNzk2OSA2LjYxMDE2IDYuNDkyOTcgNi41MDQ2OUw2LjYzMTI1IDYuNDM0MzdDNi43ODU5NCA2LjM1NzAzIDYuOTY2NDEgNi4zNDI5NyA3LjEzMDQ3IDYuMzk5MjJMNy42NzQyMiA2LjU3OTY5QzcuODY2NDEgNi42NDI5NyA4LjA3NzM0IDYuNTcwMzEgOC4xODc1IDYuNDAzOTFDOC4yOTc2NiA2LjIzOTg0IDguMjg1OTQgNi4wMjE4OCA4LjE1OTM3IDUuODY5NTNMNy44NDA2MiA1LjQ4NzVDNy42MDYyNSA1LjIwNjI1IDcuNjA4NTkgNC43OTYwOSA3Ljg0NzY2IDQuNTE5NTNMOC4yMTU2MyA0LjA5MDYyQzguNDIxODggMy44NDkyMiA4LjQ1NDY5IDMuNTA0NjkgOC4yOTc2NiAzLjIzMDQ3TDguMjQxNDEgMy4xMzIwM0M4LjE1OTM3IDMuMTI3MzQgOC4wNzk2OSAzLjEyNSA3Ljk5NzY2IDMuMTI1QzUuODIyNjYgMy4xMjUgMy45NzgxMyA0LjU1MjM0IDMuMzUyMzQgNi41MjM0NFpNMTIuODc1IDhDMTIuODc1IDcuMTM3NSAxMi42NSA2LjMyNjU2IDEyLjI1NjMgNS42MjEwOUwxMS42NTYyIDUuODYyNUMxMS4yODgzIDYuMDEwMTYgMTEuMDk4NCA2LjQyMDMxIDExLjIyMjcgNi43OTUzMUwxMS42MTg3IDcuOTgzNTlDMTEuNzAwOCA4LjIyNzM0IDExLjkgOC40MTI1IDEyLjE0ODQgOC40NzM0NEwxMi44MzA1IDguNjQ0NTNDMTIuODU4NiA4LjQzMzU5IDEyLjg3MjcgOC4yMTc5NyAxMi44NzI3IDhIMTIuODc1Wk0yIDhDMiA2LjQwODcgMi42MzIxNCA0Ljg4MjU4IDMuNzU3MzYgMy43NTczNkM0Ljg4MjU4IDIuNjMyMTQgNi40MDg3IDIgOCAyQzkuNTkxMyAyIDExLjExNzQgMi42MzIxNCAxMi4yNDI2IDMuNzU3MzZDMTMuMzY3OSA0Ljg4MjU4IDE0IDYuNDA4NyAxNCA4QzE0IDkuNTkxMyAxMy4zNjc5IDExLjExNzQgMTIuMjQyNiAxMi4yNDI2QzExLjExNzQgMTMuMzY3OSA5LjU5MTMgMTQgOCAxNEM2LjQwODcgMTQgNC44ODI1OCAxMy4zNjc5IDMuNzU3MzYgMTIuMjQyNkMyLjYzMjE0IDExLjExNzQgMiA5LjU5MTMgMiA4WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=='); + --icon-FileShared: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzZfMTUxKSI+CjxwYXRoIGQ9Ik0xMS41IDYuOEwxMC42ODc1IDUuOUwxMS41IDVDMTEuNSAzLjMyIDkuNzUgMiA4IDJDNi4yNSAyIDQuNSAzLjMyIDQuNSA1VjYuOEMzLjc1IDYuOCAzIDcuNTIgMyA4LjI0VjEyLjQ0QzMgMTMuMjggMy43NSAxNCA0LjUgMTRINy45Mzc1SDExLjM3NUMxMi4yNSAxNCAxMyAxMy4yOCAxMyAxMi41NlY4LjM2QzEzIDcuNTIgMTIuMjUgNi44IDExLjUgNi44Wk0xMS41IDYuOEg2LjEyNVY1QzYuMTI1IDQuMDQgNyAzLjQ0IDggMy40NEM5IDMuNDQgOS44NzUgNC4wNCA5Ljg3NSA1SDExLjVMMTAuNjg3NSA1LjlMMTEuNSA2LjhaIiBmaWxsPSJibGFjayIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzZfMTUxIj4KPHJlY3Qgd2lkdGg9IjEwIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAyKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='); + --icon-FolderPrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMUg2LjRMOCAyLjY2NjY3SDE0LjRDMTQuODI0MyAyLjY2NjY3IDE1LjIzMTMgMi44NDIyNiAxNS41MzE0IDMuMTU0ODJDMTUuODMxNCAzLjQ2NzM4IDE2IDMuODkxMzEgMTYgNC4zMzMzM1YxMC43NTIxQzE1Ljc0NyAxMC4wNjQ4IDE1LjA5NTIgOS41NTUgMTQuNDQzNSA5LjU1NVY3LjQ3MTg3QzE0LjQ0MzUgNS41Mjc2MyAxMi40OTkyIDQgMTAuNTU1IDRDOC42MTA3NSA0IDYuNjY2NSA1LjUyNzYzIDYuNjY2NSA3LjQ3MTg3VjkuNTU1QzUuODMzMjUgOS41NTUgNSAxMC4zODgzIDUgMTEuMjIxNVYxNC4zMzMzSDEuNkMxLjE3NTY1IDE0LjMzMzMgMC43Njg2ODcgMTQuMTU3NyAwLjQ2ODYyOSAxMy44NDUyQzAuMTY4NTcgMTMuNTMyNiAwIDEzLjEwODcgMCAxMi42NjY3VjIuNjY2NjdDMCAxLjc0MTY3IDAuNzEyIDEgMS42IDFaTTguNDcxODcgNy40NzE4N1Y5LjU1NUgxMi42MzgxVjcuNDcxODdDMTIuNjM4MSA2LjM2MDg4IDExLjY2NiA1LjY2NjUgMTAuNTU1IDUuNjY2NUM5LjQ0NCA1LjY2NjUgOC40NzE4NyA2LjM2MDg4IDguNDcxODcgNy40NzE4N1oiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); + --icon-FolderPublic: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMUg2LjRMOCAyLjY2NjY3SDE0LjRDMTQuODI0MyAyLjY2NjY3IDE1LjIzMTMgMi44NDIyNiAxNS41MzE0IDMuMTU0ODJDMTUuODMxNCAzLjQ2NzM4IDE2IDMuODkxMzEgMTYgNC4zMzMzM1Y2LjIyODczQzE1Ljg2NzcgNi4wNjQ5OSAxNS43MjYyIDUuOTA3NiAxNS41NzYgNS43NTczNkMxNC40NTA4IDQuNjMyMTQgMTIuOTI0NiA0IDExLjMzMzMgNEM5Ljc0MjAzIDQgOC4yMTU5MSA0LjYzMjE0IDcuMDkwNjkgNS43NTczNkM1Ljk2NTQ3IDYuODgyNTggNS4zMzMzMyA4LjQwODcgNS4zMzMzMyAxMEM1LjMzMzMzIDExLjU5MTMgNS45NjU0NyAxMy4xMTc0IDcuMDkwNjkgMTQuMjQyNkM3LjEyMTI5IDE0LjI3MzIgNy4xNTIxOCAxNC4zMDM1IDcuMTgzMzYgMTQuMzMzM0gxLjZDMS4xNzU2NSAxNC4zMzMzIDAuNzY4Njg3IDE0LjE1NzcgMC40Njg2MjkgMTMuODQ1MkMwLjE2ODU3MSAxMy41MzI2IDAgMTMuMTA4NyAwIDEyLjY2NjdWMi42NjY2N0MwIDEuNzQxNjcgMC43MTIgMSAxLjYgMVpNMTEuNjEwMyAxNC4zMzMzSDEwLjczQzEwLjYzOTcgMTQuMjM2MSAxMC41ODMzIDE0LjEwNTUgMTAuNTgzMyAxMy45NTg2VjEzLjA0NDVDMTAuNTgzMyAxMi43ODY3IDEwLjQzOCAxMi41NTIzIDEwLjIwODMgMTIuNDM3NUM5Ljk3ODY1IDEyLjMyMjcgOS44MzMzMyAxMi4wODgzIDkuODMzMzMgMTEuODMwNVYxMC44OTUzQzkuODMzMzMgMTAuNDc1OCA5LjU1Njc3IDEwLjEwNzggOS4xNTM2NSA5Ljk5Mjk3TDcuNzk2NjEgOS42MDYyNUM3LjQxOTI3IDkuNDk4NDQgNy4xMDA1MiA5LjI0NzY2IDYuOTA1OTkgOC45MDc4MUw2LjY4NTY4IDguNTIzNDRDNy4zMTE0NiA2LjU1MjM0IDkuMTU1OTkgNS4xMjUgMTEuMzMxIDUuMTI1QzExLjQxMyA1LjEyNSAxMS40OTI3IDUuMTI3MzQgMTEuNTc0NyA1LjEzMjAzTDExLjYzMSA1LjIzMDQ3QzExLjc4OCA1LjUwNDY5IDExLjc1NTIgNS44NDkyMiAxMS41NDkgNi4wOTA2MkwxMS4xODEgNi41MTk1M0MxMC45NDE5IDYuNzk2MDkgMTAuOTM5NiA3LjIwNjI1IDExLjE3NCA3LjQ4NzVMMTEuNDkyNyA3Ljg2OTUzQzExLjYxOTMgOC4wMjE4OCAxMS42MzEgOC4yMzk4NCAxMS41MjA4IDguNDAzOTFDMTEuNDEwNyA4LjU3MDMxIDExLjE5OTcgOC42NDI5NyAxMS4wMDc2IDguNTc5NjlMMTAuNDYzOCA4LjM5OTIyQzEwLjI5OTcgOC4zNDI5NyAxMC4xMTkzIDguMzU3MDMgOS45NjQ1OCA4LjQzNDM3TDkuODI2MyA4LjUwNDY5QzkuNjEzMDIgOC42MTAxNiA5LjUxMjI0IDguODUzOTEgOS41ODcyNCA5LjA3ODkxQzkuNjI0NzQgOS4xODkwNiA5LjcwMjA4IDkuMjgyODEgOS44MDI4NyA5LjM0MTQxTDEwLjYxMTUgOS44MDMxM0MxMC44Mzg4IDkuOTMyMDMgMTEuMDk2NiAxMCAxMS4zNTY4IDEwSDEyLjM2NjlDMTIuNjY0NiAxMCAxMi45NTA1IDEwLjExOTUgMTMuMTYxNSAxMC4zMzA1TDEzLjI1MjkgMTAuNDIxOUMxMy40NjM4IDEwLjYzMjggMTMuNTgzMyAxMC45MTg3IDEzLjU4MzMgMTEuMjE2NFYxMS40MTA5QzEzLjU4MzMgMTEuODE0MSAxMy4zNjc3IDEyLjE4OTEgMTMuMDE2MSAxMi4zODgzTDEyLjgyNjMgMTIuNDk2MUMxMi40NzI0IDEyLjY5NzcgMTIuMjE0NiAxMy4wMzc1IDEyLjExNjEgMTMuNDMzNkwxMi4wNTA1IDEzLjY5NjFDMTEuOTg0NSAxMy45NTg1IDExLjgyNTYgMTQuMTgzMyAxMS42MTAzIDE0LjMzMzNaTTE2IDguNTg3MlYxMC42MDM0TDE1LjQ4MTggMTAuNDczNEMxNS4yMzMzIDEwLjQxMjUgMTUuMDM0MSAxMC4yMjczIDE0Ljk1MjEgOS45ODM1OUwxNC41NTYgOC43OTUzMUMxNC40MzE4IDguNDIwMzEgMTQuNjIxNiA4LjAxMDE2IDE0Ljk4OTYgNy44NjI1TDE1LjU4OTYgNy42MjEwOUMxNS43NTkyIDcuOTI0OTkgMTUuODk3NSA4LjI0ODQ3IDE2IDguNTg3MloiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); + --icon-FolderShared: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMC45OTk5NTlINi40TDggMi42NjY2M0gxNC40QzE0LjgyNDMgMi42NjY2MyAxNS4yMzEzIDIuODQyMjIgMTUuNTMxNCAzLjE1NDc4QzE1LjgzMTQgMy40NjczNCAxNiAzLjg5MTI2IDE2IDQuMzMzMjlWMTAuNzUyQzE1Ljc0NyAxMC4wNjQ3IDE1LjA5NTIgOS41NTQ5NiAxNC40NDM1IDkuNTU0OTZIOC40NzE4N1Y3LjQ3MTgzQzguNDcxODcgNi4zNjA4MyA5LjQ0NCA1LjY2NjQ2IDEwLjU1NSA1LjY2NjQ2QzExLjY2NiA1LjY2NjQ2IDEyLjYzODEgNi4zNjA4MyAxMi42MzgxIDcuNDcxODNIMTQuNDQzNUMxNC40NDM1IDUuNTI3NTggMTIuNDk5MiAzLjk5OTk2IDEwLjU1NSAzLjk5OTk2QzguNjEwNzUgMy45OTk5NiA2LjY2NjUgNS41Mjc1OCA2LjY2NjUgNy40NzE4M1Y5LjU1NDk2QzUuODMzMjUgOS41NTQ5NiA1IDEwLjM4ODIgNSAxMS4yMjE1VjE0LjMzMzNIMS42QzEuMTc1NjUgMTQuMzMzMyAwLjc2ODY4NyAxNC4xNTc3IDAuNDY4NjI5IDEzLjg0NTFDMC4xNjg1NyAxMy41MzI2IDAgMTMuMTA4NyAwIDEyLjY2NjZWMi42NjY2M0MwIDEuNzQxNjMgMC43MTIgMC45OTk5NTkgMS42IDAuOTk5OTU5WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=='); --icon-LoginStreamline: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zOS41NDAyIDBIMTguMDA0N0M4LjA2NzUyIDAgMCA4Ljk3NzQgMCAyMC4wMzUzVjQwSDIxLjcwNTFDMzEuNTQ4NyA0MCAzOS41NDAyIDMxLjEwNjggMzkuNTQwMiAyMC4xNTMxVjBaIiBmaWxsPSIjRjlBRTQxIiBvcGFjaXR5PSIuMSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjIuNDkxNyAyNy45MzA2TDI4LjQ1MyAxOC44MzA3QzI4LjY1MiAxOC41MjY4IDI4LjU3NzYgMTguMTExOSAyOC4yODY2IDE3LjkwNEMyOC4xODA1IDE3LjgyODEgMjguMDU0OCAxNy43ODc1IDI3LjkyNjIgMTcuNzg3NUgyMy4yNzlWMTEuOTk0OEMyMy4yNzkgMTEuNjI2NiAyMi45OTMyIDExLjMyODEgMjIuNjQwNyAxMS4zMjgxQzIyLjQzIDExLjMyODEgMjIuMjMyOSAxMS40MzY3IDIyLjExMzkgMTEuNjE4M0wxNi4xNTI2IDIwLjcxODNDMTUuOTUzNSAyMS4wMjIxIDE2LjAyOCAyMS40MzcgMTYuMzE4OSAyMS42NDQ5QzE2LjQyNTEgMjEuNzIwOCAxNi41NTA3IDIxLjc2MTQgMTYuNjc5NCAyMS43NjE0SDIxLjMyNjZWMjcuNTU0MkMyMS4zMjY2IDI3LjkyMjMgMjEuNjEyMyAyOC4yMjA4IDIxLjk2NDkgMjguMjIwOEMyMi4xNzU2IDI4LjIyMDggMjIuMzcyNyAyOC4xMTIyIDIyLjQ5MTcgMjcuOTMwNloiIGZpbGw9IiNGOUFFNDEiLz48cGF0aCBvcGFjaXR5PSIuNDQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuMTQ1MyAyNC43NDE5QzE2Ljg1MDMgMjQuNzQxOSAxNy40MjE5IDI1LjMzODggMTcuNDIxOSAyNi4wNzUyVjI2LjM4ODlDMTcuNDIxOSAyNy4xMjUzIDE2Ljg1MDMgMjcuNzIyMyAxNi4xNDUzIDI3LjcyMjNIMTAuODg4N0MxMC4xODM3IDI3LjcyMjMgOS42MTIxMSAyNy4xMjUzIDkuNjEyMTEgMjYuMzg4OVYyNi4wNzUyQzkuNjEyMTEgMjUuMzM4OCAxMC4xODM3IDI0Ljc0MTkgMTAuODg4NyAyNC43NDE5SDE2LjE0NTNaTTEzLjIxNjYgMTguNzgxMUMxMy45MjE3IDE4Ljc4MTEgMTQuNDkzMiAxOS4zNzgxIDE0LjQ5MzIgMjAuMTE0NFYyMC40MjgyQzE0LjQ5MzIgMjEuMTY0NSAxMy45MjE3IDIxLjc2MTUgMTMuMjE2NiAyMS43NjE1SDguOTM2MjZDOC4yMzEyMiAyMS43NjE1IDcuNjU5NjcgMjEuMTY0NSA3LjY1OTY3IDIwLjQyODJWMjAuMTE0NEM3LjY1OTY3IDE5LjM3ODEgOC4yMzEyMiAxOC43ODExIDguOTM2MjYgMTguNzgxMUgxMy4yMTY2Wk0xNi4xNDUzIDEyLjgyMDNDMTYuODUwMyAxMi44MjAzIDE3LjQyMTkgMTMuNDE3MyAxNy40MjE5IDE0LjE1MzZWMTQuNDY3NEMxNy40MjE5IDE1LjIwMzggMTYuODUwMyAxNS44MDA3IDE2LjE0NTMgMTUuODAwN0gxMC44ODg3QzEwLjE4MzcgMTUuODAwNyA5LjYxMjExIDE1LjIwMzggOS42MTIxMSAxNC40Njc0VjE0LjE1MzZDOS42MTIxMSAxMy40MTczIDEwLjE4MzcgMTIuODIwMyAxMC44ODg3IDEyLjgyMDNIMTYuMTQ1M1oiIGZpbGw9IiNGOUFFNDEiLz48L3N2Zz4='); --icon-LoginUnify: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggb3BhY2l0eT0iLjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzkuNTQwMiAwSDE4LjAwNDdDOC4wNjc1MiAwIDAgOC45Nzc0IDAgMjAuMDM1M1Y0MEgyMS43MDUxQzMxLjU0ODcgNDAgMzkuNTQwMiAzMS4xMDY4IDM5LjU0MDIgMjAuMTUzMVYwWiIgZmlsbD0iIzcxNDFGOSIvPjxwYXRoIG9wYWNpdHk9Ii40NCIgZD0iTTEzLjgyOTcgMTYuNzc4NlYyMy4yMjNDMTMuODI5NyAyNS4wMDI2IDE1LjIxMSAyNi40NDUyIDE2LjkxNDggMjYuNDQ1MkgyMy4wODUxVjI3LjMyNEMyMy4wODUxIDI4Ljg0MzEgMjIuMjk1OCAyOS42Njc1IDIwLjg0MTMgMjkuNjY3NUgxMi45ODgzQzExLjUzMzkgMjkuNjY3NSAxMC43NDQ2IDI4Ljg0MzEgMTAuNzQ0NiAyNy4zMjRWMTkuMTIyQzEwLjc0NDYgMTcuNjAyOSAxMS41MzM5IDE2Ljc3ODYgMTIuOTg4MyAxNi43Nzg2SDEzLjgyOTdaTTI1Ljk4MzIgMTEuNDA4MkMyNy40Mzc2IDExLjQwODIgMjguMjI2OSAxMi4yMzI2IDI4LjIyNjkgMTMuNzUxNlYyMS45NTM3QzI4LjIyNjkgMjMuNDcyNyAyNy40Mzc2IDI0LjI5NzEgMjUuOTgzMiAyNC4yOTcxSDI1LjE0MThWMTcuODUyNkMyNS4xNDE4IDE2LjA3MzEgMjMuNzYwNSAxNC42MzA0IDIyLjA1NjcgMTQuNjMwNEgxNS44ODY1VjEzLjc1MTZDMTUuODg2NSAxMi4yMzI2IDE2LjY3NTggMTEuNDA4MiAxOC4xMzAyIDExLjQwODJIMjUuOTgzMloiIGZpbGw9IiM3MTQxRjkiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3LjE5NTYgMTYuNzc5M0gyMS43NzY1QzIyLjYyNDkgMTYuNzc5MyAyMy4wODUzIDE3LjI2MDIgMjMuMDg1MyAxOC4xNDYzVjIyLjkzMDhDMjMuMDg1MyAyMy44MTY5IDIyLjYyNDkgMjQuMjk3OCAyMS43NzY1IDI0LjI5NzhIMTcuMTk1NkMxNi4zNDcxIDI0LjI5NzggMTUuODg2NyAyMy44MTY5IDE1Ljg4NjcgMjIuOTMwOFYxOC4xNDYzQzE1Ljg4NjcgMTcuMjYwMiAxNi4zNDcxIDE2Ljc3OTMgMTcuMTk1NiAxNi43NzkzWiIgZmlsbD0iIzcxNDFGOSIvPjwvc3ZnPg=='); --icon-LoginVisualize: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggb3BhY2l0eT0iLjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzkuNTQwMiAwSDE4LjAwNDdDOC4wNjc1MiAwIDAgOC45Nzc0IDAgMjAuMDM1M1Y0MEgyMS43MDUxQzMxLjU0ODcgNDAgMzkuNTQwMiAzMS4xMDY4IDM5LjU0MDIgMjAuMTUzMVYwWiIgZmlsbD0iIzE2QjM3OCIvPjxwYXRoIG9wYWNpdHk9Ii40NCIgZD0iTTIzLjk3MTggMTIuMjIxNkMyMy45NzE4IDExLjM2MjUgMjMuMzA1IDEwLjY2NiAyMi40ODI0IDEwLjY2NkMyMS42NTk5IDEwLjY2NiAyMC45OTMgMTEuMzYyNSAyMC45OTMgMTIuMjIxNlYyNi43NDAxQzIwLjk5MyAyNy41OTkyIDIxLjY1OTkgMjguMjk1NiAyMi40ODI0IDI4LjI5NTZDMjMuMzA1IDI4LjI5NTYgMjMuOTcxOCAyNy41OTkyIDIzLjk3MTggMjYuNzQwMVYxMi4yMjE2WiIgZmlsbD0iIzE2QjM3OCIvPjxwYXRoIGQ9Ik0xOS4wMDcgMTcuNzMwNEMxOS4wMDcgMTYuODcxMyAxOC4zNDAyIDE2LjE3NDggMTcuNTE3NyAxNi4xNzQ4IDE2LjY5NTEgMTYuMTc0OCAxNi4wMjgzIDE2Ljg3MTMgMTYuMDI4MyAxNy43MzA0VjI2LjczOTZDMTYuMDI4MyAyNy41OTg3IDE2LjY5NTEgMjguMjk1MiAxNy41MTc3IDI4LjI5NTIgMTguMzQwMiAyOC4yOTUyIDE5LjAwNyAyNy41OTg3IDE5LjAwNyAyNi43Mzk2VjE3LjczMDR6TTI4LjkzNjIgMTkuOTM0NUMyOC45MzYyIDE5LjA3NTQgMjguMjY5NCAxOC4zNzg5IDI3LjQ0NjkgMTguMzc4OSAyNi42MjQzIDE4LjM3ODkgMjUuOTU3NSAxOS4wNzU0IDI1Ljk1NzUgMTkuOTM0NVYyNi43NEMyNS45NTc1IDI3LjU5OTEgMjYuNjI0MyAyOC4yOTU2IDI3LjQ0NjkgMjguMjk1NiAyOC4yNjk0IDI4LjI5NTYgMjguOTM2MiAyNy41OTkxIDI4LjkzNjIgMjYuNzRWMTkuOTM0NXpNMTQuMDQyNyAyMi4xMzg2QzE0LjA0MjcgMjEuMjc5NSAxMy4zNzU5IDIwLjU4MyAxMi41NTMzIDIwLjU4MyAxMS43MzA4IDIwLjU4MyAxMS4wNjQgMjEuMjc5NSAxMS4wNjQgMjIuMTM4NlYyNi43NDA0QzExLjA2NCAyNy41OTk1IDExLjczMDggMjguMjk2IDEyLjU1MzMgMjguMjk2IDEzLjM3NTkgMjguMjk2IDE0LjA0MjcgMjcuNTk5NSAxNC4wNDI3IDI2Ljc0MDRWMjIuMTM4NnoiIGZpbGw9IiMxNkIzNzgiLz48L3N2Zz4='); diff --git a/static/ui-icons/UI/FilePrivate.svg b/static/ui-icons/UI/FilePrivate.svg new file mode 100644 index 00000000..360a14fb --- /dev/null +++ b/static/ui-icons/UI/FilePrivate.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/ui-icons/UI/FilePublic.svg b/static/ui-icons/UI/FilePublic.svg new file mode 100644 index 00000000..4d9f8d96 --- /dev/null +++ b/static/ui-icons/UI/FilePublic.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/ui-icons/UI/FileShared.svg b/static/ui-icons/UI/FileShared.svg new file mode 100644 index 00000000..724bfa16 --- /dev/null +++ b/static/ui-icons/UI/FileShared.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/ui-icons/UI/FolderPrivate.svg b/static/ui-icons/UI/FolderPrivate.svg new file mode 100644 index 00000000..075406ea --- /dev/null +++ b/static/ui-icons/UI/FolderPrivate.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/ui-icons/UI/FolderPublic.svg b/static/ui-icons/UI/FolderPublic.svg new file mode 100644 index 00000000..e74671df --- /dev/null +++ b/static/ui-icons/UI/FolderPublic.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/ui-icons/UI/FolderShared.svg b/static/ui-icons/UI/FolderShared.svg new file mode 100644 index 00000000..e0827acc --- /dev/null +++ b/static/ui-icons/UI/FolderShared.svg @@ -0,0 +1,3 @@ + + + From 5b344cb66837fa06d832f6f0fb108ab32345f047 Mon Sep 17 00:00:00 2001 From: Florentina Petcu Date: Wed, 28 Aug 2024 10:48:46 +0300 Subject: [PATCH 4/5] #1047 access signaling using workspace/doc icon Applied suggestions from PR; changed icons and remove colors. --- app/client/ui/DocMenu.ts | 23 +++-------------------- app/client/ui/DocMenuCss.ts | 11 ++--------- app/client/ui/HomeLeftPane.ts | 10 ++-------- app/client/ui/LeftPanelCommon.ts | 10 +++------- app/client/ui/PinnedDocs.ts | 7 +++---- app/client/ui2018/IconList.ts | 4 ---- app/gen-server/lib/HomeDBManager.ts | 9 +++------ static/icons/icons.css | 13 ++++++------- static/ui-icons/UI/FilePrivate.svg | 12 ++++++++++-- static/ui-icons/UI/FilePublic.svg | 4 ++-- static/ui-icons/UI/FileShared.svg | 12 +++--------- static/ui-icons/UI/Folder.svg | 12 +++--------- static/ui-icons/UI/FolderPrivate.svg | 16 ++++++++++++++-- static/ui-icons/UI/FolderPublic.svg | 3 --- static/ui-icons/UI/FolderShared.svg | 3 --- 15 files changed, 54 insertions(+), 95 deletions(-) delete mode 100644 static/ui-icons/UI/FolderPublic.svg delete mode 100644 static/ui-icons/UI/FolderShared.svg diff --git a/app/client/ui/DocMenu.ts b/app/client/ui/DocMenu.ts index 4edd62b1..377139b5 100644 --- a/app/client/ui/DocMenu.ts +++ b/app/client/ui/DocMenu.ts @@ -137,12 +137,7 @@ function createLoadedDocMenu(owner: IDisposableOwner, home: HomeModel) { hasFeaturedTemplates ? t("More Examples and Templates") : t("Examples and Templates") ) : page === 'trash' ? t("Trash") : - workspace && [css.docHeaderIcon(workspace.shareType === 'public' - ? 'FolderPublic' - : workspace.shareType === 'shared' - ? 'FolderShared' - : 'FolderPrivate', - css.docHeaderIcon.cls(`-${workspace.shareType}`)), + workspace && [css.docHeaderIcon(workspace.shareType === 'private' ? 'FolderPrivate' : 'Folder'), workspaceName(home.app, workspace)] ), testId('doc-header'), @@ -207,13 +202,7 @@ function buildAllDocsBlock( return css.docBlock( css.docBlockHeaderLink( css.wsLeft( - css.docHeaderIcon(ws.shareType === 'public' - ? 'FolderPublic' - : ws.shareType === 'shared' - ? 'FolderShared' - : 'FolderPrivate', - css.docHeaderIcon.cls(`-${ws.shareType}`) - ), + css.wsLeft(css.docHeaderIcon(ws.shareType === 'private' ? 'FolderPrivate' : 'Folder'), workspaceName(home.app, ws), ), @@ -290,13 +279,7 @@ function buildAllTemplates(home: HomeModel, templateWorkspaces: Observable, home: Hom // TODO: Introduce a "SwitchSelector" pattern to avoid the need for N computeds (and N // recalculations) to select one of N items. const isRenaming = computed((use) => use(renaming) === ws); - const iconName = ws.shareType === 'public' - ? 'FolderPublic' - : ws.shareType === 'shared' - ? 'FolderShared' - : 'FolderPrivate'; + const iconName = ws.shareType === 'private' ? 'FolderPrivate' : 'Folder'; return cssPageEntry( dom.autoDispose(isRenaming), dom.autoDispose(isTrivial), @@ -102,9 +98,7 @@ export function createHomeLeftPane(leftPanelOpen: Observable, home: Hom cssPageEntry.cls('-renaming', isRenaming), dom.maybe(isRenaming, () => cssPageLink( - cssPageIcon(iconName, - cssPageIcon.cls(`-${ws.shareType}`) - ), + cssPageIcon(iconName), cssEditorInput({ initialValue: ws.name || '', save: async (val) => (val !== ws.name) ? home.renameWorkspace(ws.id, val) : undefined, diff --git a/app/client/ui/LeftPanelCommon.ts b/app/client/ui/LeftPanelCommon.ts index 9c4c8e78..01ae22e9 100644 --- a/app/client/ui/LeftPanelCommon.ts +++ b/app/client/ui/LeftPanelCommon.ts @@ -16,7 +16,7 @@ import {beaconOpenMessage} from 'app/client/lib/helpScout'; import {makeT} from 'app/client/lib/localization'; import {AppModel} from 'app/client/models/AppModel'; -import {colors, testId, theme, vars} from 'app/client/ui2018/cssVars'; +import {testId, theme, vars} from 'app/client/ui2018/cssVars'; import {icon} from 'app/client/ui2018/icons'; import {commonUrls, isFeatureEnabled} from 'app/common/gristUrls'; import {getGristConfig} from 'app/common/urlUtils'; @@ -154,14 +154,10 @@ export const cssLinkText = styled('span', ` export const cssPageIcon = styled(icon, ` flex: none; + width: 24px; + height: 24px; margin-right: var(--page-icon-margin, 8px); --icon-color: ${theme.lightText}; - &-public { - --icon-color: ${colors.lightGreen}; - } - &-shared { - --icon-color: ${colors.warning}; - } .${cssTools.className}-collapsed & { margin-right: 0; } diff --git a/app/client/ui/PinnedDocs.ts b/app/client/ui/PinnedDocs.ts index 2be28cb0..059ee336 100644 --- a/app/client/ui/PinnedDocs.ts +++ b/app/client/ui/PinnedDocs.ts @@ -50,7 +50,7 @@ export function buildPinnedDoc(home: HomeModel, doc: Document, workspace: Worksp : doc.shareType === 'shared' ? 'FileShared' : 'FilePrivate', - cssPublicIcon.cls(`-${doc.shareType}`), + cssPublicIcon.cls(doc.shareType === 'public' ? `-${doc.shareType}` : ''), testId('public')) : null), pinnedDocPreview.cls('-with-icon', Boolean(doc.options?.icon)), ), @@ -280,11 +280,10 @@ const cssPublicIcon = styled(icon, ` position: absolute; top: 16px; left: 16px; + width: 20px; + height: 20px; --icon-color: ${theme.lightText}; &-public { --icon-color: ${colors.lightGreen}; } - &-shared { - --icon-color: ${colors.warning}; - } `); diff --git a/app/client/ui2018/IconList.ts b/app/client/ui2018/IconList.ts index 62914195..b004032c 100644 --- a/app/client/ui2018/IconList.ts +++ b/app/client/ui2018/IconList.ts @@ -76,8 +76,6 @@ export type IconName = "ChartArea" | "Flag" | "Folder" | "FolderPrivate" | - "FolderPublic" | - "FolderShared" | "FontBold" | "FontItalic" | "FontStrikethrough" | @@ -239,8 +237,6 @@ export const IconList: IconName[] = ["ChartArea", "Flag", "Folder", "FolderPrivate", - "FolderPublic", - "FolderShared", "FontBold", "FontItalic", "FontStrikethrough", diff --git a/app/gen-server/lib/HomeDBManager.ts b/app/gen-server/lib/HomeDBManager.ts index 47ec6c23..49f6bef1 100644 --- a/app/gen-server/lib/HomeDBManager.ts +++ b/app/gen-server/lib/HomeDBManager.ts @@ -703,12 +703,9 @@ export class HomeDBManager extends EventEmitter { roles.getWeakestRole(user.parentAccess, maxInheritedRole)); }); if (permissionDataUsers?.length > 1) { - ws.shareType = permissionDataUsers.find((user) => user.email === EVERYONE_EMAIL - || user.email === ANONYMOUS_USER_EMAIL) - ? 'public' - : permissionDataUsers.find((user) => user.id !== scope.userId) - ? 'shared' - : 'private'; + ws.shareType = permissionDataUsers.find((user) => user.email !== EVERYONE_EMAIL && user.email !== ANONYMOUS_USER_EMAIL && user.id === scope.userId) + ? 'private' + : 'public'; for(const doc of ws.docs) { const permissionDataUsersDoc = this.unwrapQueryResult( diff --git a/static/icons/icons.css b/static/icons/icons.css index 58f7a1c4..c1d4517c 100644 --- a/static/icons/icons.css +++ b/static/icons/icons.css @@ -32,12 +32,12 @@ --icon-FieldText: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuNSwxMyBMNy41LDMgTDMsMyBMMyw0LjUgQzMsNC43NzYxNDIzNyAyLjc3NjE0MjM3LDUgMi41LDUgQzIuMjIzODU3NjMsNSAyLDQuNzc2MTQyMzcgMiw0LjUgTDIsMi41IEMyLDIuMjIzODU3NjMgMi4yMjM4NTc2MywyIDIuNSwyIEwxMy41LDIgQzEzLjc3NjE0MjQsMiAxNCwyLjIyMzg1NzYzIDE0LDIuNSBMMTQsNC41IEMxNCw0Ljc3NjE0MjM3IDEzLjc3NjE0MjQsNSAxMy41LDUgQzEzLjIyMzg1NzYsNSAxMyw0Ljc3NjE0MjM3IDEzLDQuNSBMMTMsMyBMOC41LDMgTDguNSwxMyBMMTAuNSwxMyBDMTAuNzc2MTQyNCwxMyAxMSwxMy4yMjM4NTc2IDExLDEzLjUgQzExLDEzLjc3NjE0MjQgMTAuNzc2MTQyNCwxNCAxMC41LDE0IEw1LjUsMTQgQzUuMjIzODU3NjMsMTQgNSwxMy43NzYxNDI0IDUsMTMuNSBDNSwxMy4yMjM4NTc2IDUuMjIzODU3NjMsMTMgNS41LDEzIEw3LjUsMTMgWiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+'); --icon-FieldTextbox: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSwxMyBDMi4yMjM4NTc2MywxMyAyLDEyLjc3NjE0MjQgMiwxMi41IEMyLDEyLjIyMzg1NzYgMi4yMjM4NTc2MywxMiAyLjUsMTIgTDEzLjUsMTIgQzEzLjc3NjE0MjQsMTIgMTQsMTIuMjIzODU3NiAxNCwxMi41IEMxNCwxMi43NzYxNDI0IDEzLjc3NjE0MjQsMTMgMTMuNSwxMyBMMi41LDEzIFogTTIuNSw0IEMyLjIyMzg1NzYzLDQgMiwzLjc3NjE0MjM3IDIsMy41IEMyLDMuMjIzODU3NjMgMi4yMjM4NTc2MywzIDIuNSwzIEwxMy41LDMgQzEzLjc3NjE0MjQsMyAxNCwzLjIyMzg1NzYzIDE0LDMuNSBDMTQsMy43NzYxNDIzNyAxMy43NzYxNDI0LDQgMTMuNSw0IEwyLjUsNCBaIE0yLjUsOC41IEMyLjIyMzg1NzYzLDguNSAyLDguMjc2MTQyMzcgMiw4IEMyLDcuNzIzODU3NjMgMi4yMjM4NTc2Myw3LjUgMi41LDcuNSBMMTMuNSw3LjUgQzEzLjc3NjE0MjQsNy41IDE0LDcuNzIzODU3NjMgMTQsOCBDMTQsOC4yNzYxNDIzNyAxMy43NzYxNDI0LDguNSAxMy41LDguNSBMMi41LDguNSBaIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4='); --icon-FieldToggle: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNjQ1ODI0NCwxMSBMMTAsMTEgQzExLjY1Njg1NDIsMTEgMTMsOS42NTY4NTQyNSAxMyw4IEMxMyw2LjM0MzE0NTc1IDExLjY1Njg1NDIsNSAxMCw1IEw4LjY0NTgyNDQsNSBDOS40NzYyNDUxMSw1LjczMjk0NDQ1IDEwLDYuODA1MzA3NDcgMTAsOCBDMTAsOS4xOTQ2OTI1MyA5LjQ3NjI0NTExLDEwLjI2NzA1NTUgOC42NDU4MjQ0LDExIFogTTYsNCBMMTAsNCBDMTIuMjA5MTM5LDQgMTQsNS43OTA4NjEgMTQsOCBDMTQsMTAuMjA5MTM5IDEyLjIwOTEzOSwxMiAxMCwxMiBMNiwxMiBDMy43OTA4NjEsMTIgMiwxMC4yMDkxMzkgMiw4IEMyLDUuNzkwODYxIDMuNzkwODYxLDQgNiw0IFogTTYsMTEgQzcuNjU2ODU0MjUsMTEgOSw5LjY1Njg1NDI1IDksOCBDOSw2LjM0MzE0NTc1IDcuNjU2ODU0MjUsNSA2LDUgQzQuMzQzMTQ1NzUsNSAzLDYuMzQzMTQ1NzUgMyw4IEMzLDkuNjU2ODU0MjUgNC4zNDMxNDU3NSwxMSA2LDExIFoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); - --icon-FilePrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjUgNi44VjVDMTEuNSAzLjMyIDkuNzUgMiA4IDJDNi4yNSAyIDQuNSAzLjMyIDQuNSA1VjYuOEMzLjc1IDYuOCAzIDcuNTIgMyA4LjI0VjEyLjQ0QzMgMTMuMjggMy43NSAxNCA0LjUgMTRIMTEuMzc1QzEyLjI1IDE0IDEzIDEzLjI4IDEzIDEyLjU2VjguMzZDMTMgNy41MiAxMi4yNSA2LjggMTEuNSA2LjhaTTkuODc1IDYuOEg2LjEyNVY1QzYuMTI1IDQuMDQgNyAzLjQ0IDggMy40NEM5IDMuNDQgOS44NzUgNC4wNCA5Ljg3NSA1VjYuOFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); - --icon-FilePublic: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuMzUyMzQgNi41MjM0NEwzLjU3MjY2IDYuOTA3ODFDMy43NjcxOSA3LjI0NzY2IDQuMDg1OTQgNy40OTg0NCA0LjQ2MzI4IDcuNjA2MjVMNS44MjAzMSA3Ljk5Mjk3QzYuMjIzNDQgOC4xMDc4MSA2LjUgOC40NzU3OCA2LjUgOC44OTUzMVY5LjgzMDQ3QzYuNSAxMC4wODgzIDYuNjQ1MzEgMTAuMzIyNyA2Ljg3NSAxMC40Mzc1QzcuMTA0NjkgMTAuNTUyMyA3LjI1IDEwLjc4NjcgNy4yNSAxMS4wNDQ1VjExLjk1ODZDNy4yNSAxMi4zMjQyIDcuNTk5MjIgMTIuNTg5MSA3Ljk1MDc4IDEyLjQ4ODNDOC4zMjgxMiAxMi4zODA1IDguNjIxMDkgMTIuMDc4MSA4LjcxNzE5IDExLjY5NjFMOC43ODI4MSAxMS40MzM2QzguODgxMjUgMTEuMDM3NSA5LjEzOTA2IDEwLjY5NzcgOS40OTI5NyAxMC40OTYxTDkuNjgyODEgMTAuMzg4M0MxMC4wMzQ0IDEwLjE4OTEgMTAuMjUgOS44MTQwNiAxMC4yNSA5LjQxMDk0VjkuMjE2NDFDMTAuMjUgOC45MTg3NSAxMC4xMzA1IDguNjMyODEgOS45MTk1MyA4LjQyMTg4TDkuODI4MTIgOC4zMzA0N0M5LjYxNzE5IDguMTE5NTMgOS4zMzEyNSA4IDkuMDMzNTkgOEg4LjAyMzQ0QzcuNzYzMjggOCA3LjUwNTQ3IDcuOTMyMDMgNy4yNzgxMiA3LjgwMzEzTDYuNDY5NTMgNy4zNDE0MUM2LjM2ODc1IDcuMjgyODEgNi4yOTE0MSA3LjE4OTA2IDYuMjUzOTEgNy4wNzg5MUM2LjE3ODkxIDYuODUzOTEgNi4yNzk2OSA2LjYxMDE2IDYuNDkyOTcgNi41MDQ2OUw2LjYzMTI1IDYuNDM0MzdDNi43ODU5NCA2LjM1NzAzIDYuOTY2NDEgNi4zNDI5NyA3LjEzMDQ3IDYuMzk5MjJMNy42NzQyMiA2LjU3OTY5QzcuODY2NDEgNi42NDI5NyA4LjA3NzM0IDYuNTcwMzEgOC4xODc1IDYuNDAzOTFDOC4yOTc2NiA2LjIzOTg0IDguMjg1OTQgNi4wMjE4OCA4LjE1OTM3IDUuODY5NTNMNy44NDA2MiA1LjQ4NzVDNy42MDYyNSA1LjIwNjI1IDcuNjA4NTkgNC43OTYwOSA3Ljg0NzY2IDQuNTE5NTNMOC4yMTU2MyA0LjA5MDYyQzguNDIxODggMy44NDkyMiA4LjQ1NDY5IDMuNTA0NjkgOC4yOTc2NiAzLjIzMDQ3TDguMjQxNDEgMy4xMzIwM0M4LjE1OTM3IDMuMTI3MzQgOC4wNzk2OSAzLjEyNSA3Ljk5NzY2IDMuMTI1QzUuODIyNjYgMy4xMjUgMy45NzgxMyA0LjU1MjM0IDMuMzUyMzQgNi41MjM0NFpNMTIuODc1IDhDMTIuODc1IDcuMTM3NSAxMi42NSA2LjMyNjU2IDEyLjI1NjMgNS42MjEwOUwxMS42NTYyIDUuODYyNUMxMS4yODgzIDYuMDEwMTYgMTEuMDk4NCA2LjQyMDMxIDExLjIyMjcgNi43OTUzMUwxMS42MTg3IDcuOTgzNTlDMTEuNzAwOCA4LjIyNzM0IDExLjkgOC40MTI1IDEyLjE0ODQgOC40NzM0NEwxMi44MzA1IDguNjQ0NTNDMTIuODU4NiA4LjQzMzU5IDEyLjg3MjcgOC4yMTc5NyAxMi44NzI3IDhIMTIuODc1Wk0yIDhDMiA2LjQwODcgMi42MzIxNCA0Ljg4MjU4IDMuNzU3MzYgMy43NTczNkM0Ljg4MjU4IDIuNjMyMTQgNi40MDg3IDIgOCAyQzkuNTkxMyAyIDExLjExNzQgMi42MzIxNCAxMi4yNDI2IDMuNzU3MzZDMTMuMzY3OSA0Ljg4MjU4IDE0IDYuNDA4NyAxNCA4QzE0IDkuNTkxMyAxMy4zNjc5IDExLjExNzQgMTIuMjQyNiAxMi4yNDI2QzExLjExNzQgMTMuMzY3OSA5LjU5MTMgMTQgOCAxNEM2LjQwODcgMTQgNC44ODI1OCAxMy4zNjc5IDMuNzU3MzYgMTIuMjQyNkMyLjYzMjE0IDExLjExNzQgMiA5LjU5MTMgMiA4WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=='); - --icon-FileShared: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzZfMTUxKSI+CjxwYXRoIGQ9Ik0xMS41IDYuOEwxMC42ODc1IDUuOUwxMS41IDVDMTEuNSAzLjMyIDkuNzUgMiA4IDJDNi4yNSAyIDQuNSAzLjMyIDQuNSA1VjYuOEMzLjc1IDYuOCAzIDcuNTIgMyA4LjI0VjEyLjQ0QzMgMTMuMjggMy43NSAxNCA0LjUgMTRINy45Mzc1SDExLjM3NUMxMi4yNSAxNCAxMyAxMy4yOCAxMyAxMi41NlY4LjM2QzEzIDcuNTIgMTIuMjUgNi44IDExLjUgNi44Wk0xMS41IDYuOEg2LjEyNVY1QzYuMTI1IDQuMDQgNyAzLjQ0IDggMy40NEM5IDMuNDQgOS44NzUgNC4wNCA5Ljg3NSA1SDExLjVMMTAuNjg3NSA1LjlMMTEuNSA2LjhaIiBmaWxsPSJibGFjayIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzZfMTUxIj4KPHJlY3Qgd2lkdGg9IjEwIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAyKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='); - --icon-FolderPrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMUg2LjRMOCAyLjY2NjY3SDE0LjRDMTQuODI0MyAyLjY2NjY3IDE1LjIzMTMgMi44NDIyNiAxNS41MzE0IDMuMTU0ODJDMTUuODMxNCAzLjQ2NzM4IDE2IDMuODkxMzEgMTYgNC4zMzMzM1YxMC43NTIxQzE1Ljc0NyAxMC4wNjQ4IDE1LjA5NTIgOS41NTUgMTQuNDQzNSA5LjU1NVY3LjQ3MTg3QzE0LjQ0MzUgNS41Mjc2MyAxMi40OTkyIDQgMTAuNTU1IDRDOC42MTA3NSA0IDYuNjY2NSA1LjUyNzYzIDYuNjY2NSA3LjQ3MTg3VjkuNTU1QzUuODMzMjUgOS41NTUgNSAxMC4zODgzIDUgMTEuMjIxNVYxNC4zMzMzSDEuNkMxLjE3NTY1IDE0LjMzMzMgMC43Njg2ODcgMTQuMTU3NyAwLjQ2ODYyOSAxMy44NDUyQzAuMTY4NTcgMTMuNTMyNiAwIDEzLjEwODcgMCAxMi42NjY3VjIuNjY2NjdDMCAxLjc0MTY3IDAuNzEyIDEgMS42IDFaTTguNDcxODcgNy40NzE4N1Y5LjU1NUgxMi42MzgxVjcuNDcxODdDMTIuNjM4MSA2LjM2MDg4IDExLjY2NiA1LjY2NjUgMTAuNTU1IDUuNjY2NUM5LjQ0NCA1LjY2NjUgOC40NzE4NyA2LjM2MDg4IDguNDcxODcgNy40NzE4N1oiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); - --icon-FolderPublic: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMUg2LjRMOCAyLjY2NjY3SDE0LjRDMTQuODI0MyAyLjY2NjY3IDE1LjIzMTMgMi44NDIyNiAxNS41MzE0IDMuMTU0ODJDMTUuODMxNCAzLjQ2NzM4IDE2IDMuODkxMzEgMTYgNC4zMzMzM1Y2LjIyODczQzE1Ljg2NzcgNi4wNjQ5OSAxNS43MjYyIDUuOTA3NiAxNS41NzYgNS43NTczNkMxNC40NTA4IDQuNjMyMTQgMTIuOTI0NiA0IDExLjMzMzMgNEM5Ljc0MjAzIDQgOC4yMTU5MSA0LjYzMjE0IDcuMDkwNjkgNS43NTczNkM1Ljk2NTQ3IDYuODgyNTggNS4zMzMzMyA4LjQwODcgNS4zMzMzMyAxMEM1LjMzMzMzIDExLjU5MTMgNS45NjU0NyAxMy4xMTc0IDcuMDkwNjkgMTQuMjQyNkM3LjEyMTI5IDE0LjI3MzIgNy4xNTIxOCAxNC4zMDM1IDcuMTgzMzYgMTQuMzMzM0gxLjZDMS4xNzU2NSAxNC4zMzMzIDAuNzY4Njg3IDE0LjE1NzcgMC40Njg2MjkgMTMuODQ1MkMwLjE2ODU3MSAxMy41MzI2IDAgMTMuMTA4NyAwIDEyLjY2NjdWMi42NjY2N0MwIDEuNzQxNjcgMC43MTIgMSAxLjYgMVpNMTEuNjEwMyAxNC4zMzMzSDEwLjczQzEwLjYzOTcgMTQuMjM2MSAxMC41ODMzIDE0LjEwNTUgMTAuNTgzMyAxMy45NTg2VjEzLjA0NDVDMTAuNTgzMyAxMi43ODY3IDEwLjQzOCAxMi41NTIzIDEwLjIwODMgMTIuNDM3NUM5Ljk3ODY1IDEyLjMyMjcgOS44MzMzMyAxMi4wODgzIDkuODMzMzMgMTEuODMwNVYxMC44OTUzQzkuODMzMzMgMTAuNDc1OCA5LjU1Njc3IDEwLjEwNzggOS4xNTM2NSA5Ljk5Mjk3TDcuNzk2NjEgOS42MDYyNUM3LjQxOTI3IDkuNDk4NDQgNy4xMDA1MiA5LjI0NzY2IDYuOTA1OTkgOC45MDc4MUw2LjY4NTY4IDguNTIzNDRDNy4zMTE0NiA2LjU1MjM0IDkuMTU1OTkgNS4xMjUgMTEuMzMxIDUuMTI1QzExLjQxMyA1LjEyNSAxMS40OTI3IDUuMTI3MzQgMTEuNTc0NyA1LjEzMjAzTDExLjYzMSA1LjIzMDQ3QzExLjc4OCA1LjUwNDY5IDExLjc1NTIgNS44NDkyMiAxMS41NDkgNi4wOTA2MkwxMS4xODEgNi41MTk1M0MxMC45NDE5IDYuNzk2MDkgMTAuOTM5NiA3LjIwNjI1IDExLjE3NCA3LjQ4NzVMMTEuNDkyNyA3Ljg2OTUzQzExLjYxOTMgOC4wMjE4OCAxMS42MzEgOC4yMzk4NCAxMS41MjA4IDguNDAzOTFDMTEuNDEwNyA4LjU3MDMxIDExLjE5OTcgOC42NDI5NyAxMS4wMDc2IDguNTc5NjlMMTAuNDYzOCA4LjM5OTIyQzEwLjI5OTcgOC4zNDI5NyAxMC4xMTkzIDguMzU3MDMgOS45NjQ1OCA4LjQzNDM3TDkuODI2MyA4LjUwNDY5QzkuNjEzMDIgOC42MTAxNiA5LjUxMjI0IDguODUzOTEgOS41ODcyNCA5LjA3ODkxQzkuNjI0NzQgOS4xODkwNiA5LjcwMjA4IDkuMjgyODEgOS44MDI4NyA5LjM0MTQxTDEwLjYxMTUgOS44MDMxM0MxMC44Mzg4IDkuOTMyMDMgMTEuMDk2NiAxMCAxMS4zNTY4IDEwSDEyLjM2NjlDMTIuNjY0NiAxMCAxMi45NTA1IDEwLjExOTUgMTMuMTYxNSAxMC4zMzA1TDEzLjI1MjkgMTAuNDIxOUMxMy40NjM4IDEwLjYzMjggMTMuNTgzMyAxMC45MTg3IDEzLjU4MzMgMTEuMjE2NFYxMS40MTA5QzEzLjU4MzMgMTEuODE0MSAxMy4zNjc3IDEyLjE4OTEgMTMuMDE2MSAxMi4zODgzTDEyLjgyNjMgMTIuNDk2MUMxMi40NzI0IDEyLjY5NzcgMTIuMjE0NiAxMy4wMzc1IDEyLjExNjEgMTMuNDMzNkwxMi4wNTA1IDEzLjY5NjFDMTEuOTg0NSAxMy45NTg1IDExLjgyNTYgMTQuMTgzMyAxMS42MTAzIDE0LjMzMzNaTTE2IDguNTg3MlYxMC42MDM0TDE1LjQ4MTggMTAuNDczNEMxNS4yMzMzIDEwLjQxMjUgMTUuMDM0MSAxMC4yMjczIDE0Ljk1MjEgOS45ODM1OUwxNC41NTYgOC43OTUzMUMxNC40MzE4IDguNDIwMzEgMTQuNjIxNiA4LjAxMDE2IDE0Ljk4OTYgNy44NjI1TDE1LjU4OTYgNy42MjEwOUMxNS43NTkyIDcuOTI0OTkgMTUuODk3NSA4LjI0ODQ3IDE2IDguNTg3MloiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo='); - --icon-FolderShared: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYgMC45OTk5NTlINi40TDggMi42NjY2M0gxNC40QzE0LjgyNDMgMi42NjY2MyAxNS4yMzEzIDIuODQyMjIgMTUuNTMxNCAzLjE1NDc4QzE1LjgzMTQgMy40NjczNCAxNiAzLjg5MTI2IDE2IDQuMzMzMjlWMTAuNzUyQzE1Ljc0NyAxMC4wNjQ3IDE1LjA5NTIgOS41NTQ5NiAxNC40NDM1IDkuNTU0OTZIOC40NzE4N1Y3LjQ3MTgzQzguNDcxODcgNi4zNjA4MyA5LjQ0NCA1LjY2NjQ2IDEwLjU1NSA1LjY2NjQ2QzExLjY2NiA1LjY2NjQ2IDEyLjYzODEgNi4zNjA4MyAxMi42MzgxIDcuNDcxODNIMTQuNDQzNUMxNC40NDM1IDUuNTI3NTggMTIuNDk5MiAzLjk5OTk2IDEwLjU1NSAzLjk5OTk2QzguNjEwNzUgMy45OTk5NiA2LjY2NjUgNS41Mjc1OCA2LjY2NjUgNy40NzE4M1Y5LjU1NDk2QzUuODMzMjUgOS41NTQ5NiA1IDEwLjM4ODIgNSAxMS4yMjE1VjE0LjMzMzNIMS42QzEuMTc1NjUgMTQuMzMzMyAwLjc2ODY4NyAxNC4xNTc3IDAuNDY4NjI5IDEzLjg0NTFDMC4xNjg1NyAxMy41MzI2IDAgMTMuMTA4NyAwIDEyLjY2NjZWMi42NjY2M0MwIDEuNzQxNjMgMC43MTIgMC45OTk5NTkgMS42IDAuOTk5OTU5WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=='); + --icon-FieldUser: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5JY29ucyAvIEZpZWxkcyAvIEZpZWxkVXNlcjwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMtLy1GaWVsZHMtLy1GaWVsZFVzZXIiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOCAyQzYuMTM2MDQgMiA0LjYyNSAzLjUxMTA0IDQuNjI1IDUuMzc1QzQuNjI1IDcuMjM4OTYgNi4xMzYwNCA4Ljc1IDggOC43NUM5Ljg2Mzk2IDguNzUgMTEuMzc1IDcuMjM4OTYgMTEuMzc1IDUuMzc1QzExLjM3NSAzLjUxMTA0IDkuODYzOTYgMiA4IDJaTTUuMzc1IDUuMzc1QzUuMzc1IDMuOTI1MjUgNi41NTAyNSAyLjc1IDggMi43NUM5LjQ0OTc1IDIuNzUgMTAuNjI1IDMuOTI1MjUgMTAuNjI1IDUuMzc1QzEwLjYyNSA2LjgyNDc1IDkuNDQ5NzUgOCA4IDhDNi41NTAyNSA4IDUuMzc1IDYuODI0NzUgNS4zNzUgNS4zNzVaIiBmaWxsPSJibGFjayIvPgogICAgICAgIDxwYXRoIGQ9Ik0zLjc0MDM2IDEwLjc2OThDNC4yNzc0NyAxMC4zNjk3IDQuOTA3NCAxMC4wNjMxIDUuMzUwMzQgOS45MTgxNEM1LjY5NjgxIDEwLjA5NjYgNi41OTYwNCAxMC40NzI0IDcuOTk5ODYgMTAuNDcyNEM5LjQwMzc1IDEwLjQ3MjQgMTAuMzAzMSAxMC4wOTY1IDEwLjY0OTYgOS45MTgxM0MxMS4wOTI2IDEwLjA2MzEgMTEuNzIyNSAxMC4zNjk2IDEyLjI1OTcgMTAuNzY5OEMxMi42NzcxIDExLjA4MDggMTMuMjUgMTEuNTY1NSAxMy4yNSAxMi4xNDA2SDE0QzE0IDExLjMwNjggMTMuMzMxMyAxMC42MzI5IDEyLjcwNzcgMTAuMTY4NEMxMi4wNTgxIDkuNjg0MzUgMTEuMzIyNiA5LjMxOTI2IDEwLjU0MTEgOS4xMDc0M0M5LjgwMzIgOS41ODgyNCA4Ljg2MjE1IDkuNzIyNDMgNy45OTk4NiA5LjcyMjQzQzcuMTM4MDIgOS43MjI0MyA2LjE5NjI4IDkuNTg4NTYgNS40NTg4OSA5LjEwNzQyQzQuNjc3NDIgOS4zMTkyNyAzLjk0MTk1IDkuNjg0MzcgMy4yOTIyNyAxMC4xNjg0QzIuNjY4NzIgMTAuNjMzIDIgMTEuMzA2OSAyIDEyLjE0MDZDMiAxMy4yNzk5IDMuNDk5NTUgMTMuNjE0OSA0LjM2OTQ4IDEzLjc2NTZDNS41NTkwNyAxMy45NzE2IDYuOTkzOTEgMTQgOC4wMDEwNSAxNEM5LjAyMjcgMTQgOS45MDUzIDEzLjkzNDYgMTAuNTMzMiAxMy44NjkyQzEwLjg3MDYgMTMuODM0IDExLjIwODkgMTMuNzk1MiAxMS41NDMzIDEzLjczNjhDMTEuNTQzMyAxMy43MzY4IDExLjQyOTYgMTMuMDkxNCAxMS40MTMxIDEyLjk5ODJDMTEuMDk2IDEzLjA1MyAxMC43NzUzIDEzLjA4OTkgMTAuNDU1NCAxMy4xMjMyQzkuODQ3NjUgMTMuMTg2NiA4Ljk5MTU1IDEzLjI1IDguMDAxMDUgMTMuMjVDNi45OTYwMyAxMy4yNSA1LjYxNzg1IDEzLjIyMDYgNC40OTc0NSAxMy4wMjY2QzQuMDc4NSAxMi45NTQgMi43NSAxMi43NzQ5IDIuNzUgMTIuMTQwNkMyLjc1IDExLjU2NTUgMy4zMjI4OSAxMS4wODA4IDMuNzQwMzYgMTAuNzY5OFoiIGZpbGw9ImJsYWNrIi8+CiAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDJDNi4xMzYwNCAyIDQuNjI1IDMuNTExMDQgNC42MjUgNS4zNzVDNC42MjUgNy4yMzg5NiA2LjEzNjA0IDguNzUgOCA4Ljc1QzkuODYzOTYgOC43NSAxMS4zNzUgNy4yMzg5NiAxMS4zNzUgNS4zNzVDMTEuMzc1IDMuNTExMDQgOS44NjM5NiAyIDggMlpNNS4zNzUgNS4zNzVDNS4zNzUgMy45MjUyNSA2LjU1MDI1IDIuNzUgOCAyLjc1QzkuNDQ5NzUgMi43NSAxMC42MjUgMy45MjUyNSAxMC42MjUgNS4zNzVDMTAuNjI1IDYuODI0NzUgOS40NDk3NSA4IDggOEM2LjU1MDI1IDggNS4zNzUgNi44MjQ3NSA1LjM3NSA1LjM3NVoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMC4yIi8+CiAgICAgICAgPHBhdGggZD0iTTMuNzQwMzYgMTAuNzY5OEM0LjI3NzQ3IDEwLjM2OTcgNC45MDc0IDEwLjA2MzEgNS4zNTAzNCA5LjkxODE0QzUuNjk2ODEgMTAuMDk2NiA2LjU5NjA0IDEwLjQ3MjQgNy45OTk4NiAxMC40NzI0QzkuNDAzNzUgMTAuNDcyNCAxMC4zMDMxIDEwLjA5NjUgMTAuNjQ5NiA5LjkxODEzQzExLjA5MjYgMTAuMDYzMSAxMS43MjI1IDEwLjM2OTYgMTIuMjU5NyAxMC43Njk4QzEyLjY3NzEgMTEuMDgwOCAxMy4yNSAxMS41NjU1IDEzLjI1IDEyLjE0MDZIMTRDMTQgMTEuMzA2OCAxMy4zMzEzIDEwLjYzMjkgMTIuNzA3NyAxMC4xNjg0QzEyLjA1ODEgOS42ODQzNSAxMS4zMjI2IDkuMzE5MjYgMTAuNTQxMSA5LjEwNzQzQzkuODAzMiA5LjU4ODI0IDguODYyMTUgOS43MjI0MyA3Ljk5OTg2IDkuNzIyNDNDNy4xMzgwMiA5LjcyMjQzIDYuMTk2MjggOS41ODg1NiA1LjQ1ODg5IDkuMTA3NDJDNC42Nzc0MiA5LjMxOTI3IDMuOTQxOTUgOS42ODQzNyAzLjI5MjI3IDEwLjE2ODRDMi42Njg3MiAxMC42MzMgMiAxMS4zMDY5IDIgMTIuMTQwNkMyIDEzLjI3OTkgMy40OTk1NSAxMy42MTQ5IDQuMzY5NDggMTMuNzY1NkM1LjU1OTA3IDEzLjk3MTYgNi45OTM5MSAxNCA4LjAwMTA1IDE0QzkuMDIyNyAxNCA5LjkwNTMgMTMuOTM0NiAxMC41MzMyIDEzLjg2OTJDMTAuODcwNiAxMy44MzQgMTEuMjA4OSAxMy43OTUyIDExLjU0MzMgMTMuNzM2OEMxMS41NDMzIDEzLjczNjggMTEuNDI5NiAxMy4wOTE0IDExLjQxMzEgMTIuOTk4MkMxMS4wOTYgMTMuMDUzIDEwLjc3NTMgMTMuMDg5OSAxMC40NTU0IDEzLjEyMzJDOS44NDc2NSAxMy4xODY2IDguOTkxNTUgMTMuMjUgOC4wMDEwNSAxMy4yNUM2Ljk5NjAzIDEzLjI1IDUuNjE3ODUgMTMuMjIwNiA0LjQ5NzQ1IDEzLjAyNjZDNC4wNzg1IDEyLjk1NCAyLjc1IDEyLjc3NDkgMi43NSAxMi4xNDA2QzIuNzUgMTEuNTY1NSAzLjMyMjg5IDExLjA4MDggMy43NDAzNiAxMC43Njk4WiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwLjIiLz4KICAgIDwvZz4KPC9zdmc+'); + --icon-FilePrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzY2OF8zNzk0OSkiPgo8cGF0aCBkPSJNMTQuMjM5OSA4LjI1MDU5VjYuODYzNkMxNC4yMzk5IDQuNjg4OTUgMTIuNDI3NyAyLjkxNjY5IDEwLjIwMzkgMi45MTY2OUM3Ljk4MDIgMi45MTY2OSA2LjE3NjcgNC42ODg5NSA2LjE3NjcgNi44NjM2VjguMjUwNTlDNS4yODM3IDguMzcwNDUgNC41ODMzMSA5LjExNTMyIDQuNTgzMzEgMTAuMDIyOVYxNC44NzczQzQuNTgzMzEgMTUuODYxOSA1LjQwNjI3IDE2LjY2NjcgNi40MTMwOCAxNi42NjY3SDE0LjAwMzVDMTUuMDEwNCAxNi42NjY3IDE1LjgzMzMgMTUuODYxOSAxNS44MzMzIDE0Ljg3NzNWMTAuMDIyOUMxNS44MzMzIDkuMTE1MzIgMTUuMTMyOSA4LjM3MDQ1IDE0LjIzOTkgOC4yNTA1OVpNNy4wOTU5NiA2Ljg2MzZDNy4wOTU5NiA1LjE4NTUyIDguNDk2NzQgMy44MTU2NiAxMC4yMTI3IDMuODE1NjZDMTEuOTI4NiAzLjgxNTY2IDEzLjMyOTQgNS4xODU1MiAxMy4zMjk0IDYuODYzNlY4LjIzMzQ3SDcuMDk1OTZWNi44NjM2Wk0xNC45MjI4IDE0Ljg3NzNDMTQuOTIyOCAxNS4zNzM5IDE0LjUxMTMgMTUuNzY3NyAxNC4wMTIzIDE1Ljc2NzdINi40MTMwOEM1LjkwNTMgMTUuNzY3NyA1LjUwMjU3IDE1LjM2NTMgNS41MDI1NyAxNC44NzczVjEwLjAyMjlDNS41MDI1NyA5LjUyNjI4IDUuOTE0MDUgOS4xMzI0NCA2LjQxMzA4IDkuMTMyNDRIMTQuMDAzNUMxNC41MTEzIDkuMTMyNDQgMTQuOTE0MSA5LjUzNDg0IDE0LjkxNDEgMTAuMDIyOVYxNC44NzczSDE0LjkyMjhaIiBmaWxsPSIjOTI5Mjk5Ii8+CjxwYXRoIGQ9Ik0xMC4yMTI3IDEwLjUxMDlDOS41ODIzMyAxMC41MTA5IDkuMDY1OCAxMS4wMTYgOS4wNjU4IDExLjYzMjRDOS4wNjU4IDEyLjA1MiA5LjMxMDkzIDEyLjQwMyA5LjY2MTEzIDEyLjU5OTlWMTMuOTUyNkM5LjY2MTEzIDE0LjI1MjMgOS45MDYyNiAxNC40OTIgMTAuMjEyNyAxNC40OTJDMTAuNTE5MSAxNC40OTIgMTAuNzY0MiAxNC4yNTIzIDEwLjc2NDIgMTMuOTUyNlYxMi41OTk5QzExLjExNDQgMTIuNDExNSAxMS4zNTk2IDEyLjA1MiAxMS4zNTk2IDExLjYzMjRDMTEuMzU5NiAxMS4wMTYgMTAuODQzIDEwLjUxMDkgMTAuMjEyNyAxMC41MTA5WiIgZmlsbD0iIzkyOTI5OSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzY2OF8zNzk0OSI+CjxyZWN0IHdpZHRoPSIxMS4yNSIgaGVpZ2h0PSIxMy43NSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuNTgzMzEgMi45MTY2OSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'); + --icon-FilePublic: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjAwNCAzLjMzMzMxQzYuMzI3MDEgMy4zMzMzMSAzLjMzMzMxIDYuMzI3MDEgMy4zMzMzMSAxMC4wMDRDMy4zMzMzMSAxMy42ODExIDYuMzI3MDEgMTYuNjc0OCAxMC4wMDQgMTYuNjc0OEMxMy42ODExIDE2LjY3NDggMTYuNjc0OCAxMy42ODExIDE2LjY3NDggMTAuMDA0QzE2LjY3NDggNi4zMjcwMSAxMy42ODExIDMuMzMzMzEgMTAuMDA0IDMuMzMzMzFaTTExLjI2NSA0LjI0NDQ0QzEzLjEyNzkgNC42NTExOSAxNC42ODk4IDUuOTUyOCAxNS40MzAxIDcuNzA5OTdMMTUuNDc4OSA3LjgyMzg2SDEyLjA1NDFWNy43NTA2NEMxMS44ODMyIDYuMjg2MzMgMTEuNTgyMiA1LjExNDg5IDExLjE3NTUgNC4zNTgzM0wxMS4wOTQxIDQuMjAzNzZMMTEuMjY1IDQuMjQ0NDRaTTExLjQ0MzkgMTAuMDM2NkMxMS40NDM5IDEwLjQ5MjEgMTEuNDI3NyAxMC45NDc3IDExLjQwMzMgMTEuMzk1MVYxMS40Njg0SDguNjIxMDlWMTEuMzk1MUM4LjU4ODU1IDEwLjk1NTggOC41NzIyOCAxMC41MDAzIDguNTcyMjggMTAuMDM2NkM4LjU3MjI4IDkuNTcyODkgOC41ODg1NSA5LjEwOTE5IDguNjIxMDkgOC42MzczNlY4LjU2NDE0SDExLjM5NTFWOC42MzczNkMxMS40Mjc3IDkuMTE3MzMgMTEuNDQzOSA5LjU3Mjg5IDExLjQ0MzkgMTAuMDM2NlpNMTAuMDEyMiA0LjE2MzA5QzEwLjQzNTIgNC4xNjMwOSAxMS4wNTM1IDUuNTI5NzcgMTEuMzEzOCA3LjczNDM3VjcuODIzODZIOC42OTQzMVY3LjczNDM3QzguOTYyNzYgNS41Mjk3NyA5LjU4OTE2IDQuMTYzMDkgMTAuMDEyMiA0LjE2MzA5Wk00LjU2MTcgNy43MDk5N0M1LjAyNTQgNi42MDM2IDUuODE0NSA1LjY4NDM0IDYuNzk4ODQgNS4wNDk4MUM3LjM4NDU2IDQuNjY3NDYgOC4wNTE2NCA0LjM5MDg3IDguNzUxMjUgNC4yMzYzTDguOTIyMDkgNC4xOTU2M0w4Ljg0MDc0IDQuMzUwMTlDOC40MjU4NSA1LjEwNjc1IDguMTI0ODUgNi4yNzgyIDcuOTYyMTUgNy43NDI1MVY3LjgxNTcySDQuNTIxMDNMNC41Njk4NCA3LjcwMTgzTDQuNTYxNyA3LjcwOTk3Wk00LjI5MzI1IDExLjQwMzNDNC4xNzEyMiAxMC44OTg5IDQuMTA2MTQgMTAuNDQzMyA0LjEwNjE0IDkuOTk1OTFDNC4xMDYxNCA5LjU0ODQ4IDQuMTYzMDkgOS4xMDkxOSA0LjI4NTExIDguNjEyOTVMNC4zMDEzOCA4LjU0Nzg3SDcuODk3MDdWOC42MzczNkM3Ljg2NDUzIDkuMTAxMDYgNy44NDgyNiA5LjU3Mjg5IDcuODQ4MjYgMTAuMDI4NUM3Ljg0ODI2IDEwLjQ4NCA3Ljg2NDUzIDEwLjkxNTIgNy44ODg5NCAxMS4zNzg5VjExLjQ2ODRINC4zMDk1Mkw0LjI5MzI1IDExLjQwMzNaTTguNzEwNTggMTUuNzU1NUM2Ljg2MzkyIDE1LjM0MDYgNS4zMTgyNiAxNC4wNTUzIDQuNTY5ODQgMTIuMzE0NEw0LjUyMTAzIDEyLjIwMDVINy45NDU4OFYxMi4yNzM3QzguMTA4NTggMTMuNzEzNiA4LjQwMTQ0IDE0Ljg3NjkgOC44MDAwNiAxNS42NDE2TDguODgxNDEgMTUuNzk2Mkw4LjcxMDU4IDE1Ljc1NTVaTTEwLjAxMjIgMTUuOTAyQzkuNTgxMDIgMTUuOTAyIDguOTYyNzYgMTQuNTE5IDguNzAyNDQgMTIuMjlWMTIuMjAwNUgxMS4zMzAxVjEyLjI5QzExLjA2MTYgMTQuNTE5IDEwLjQ0MzMgMTUuOTAyIDEwLjAxMjIgMTUuOTAyWk0xNS40MzAxIDEyLjMxNDRDMTQuNjg5OCAxNC4wNDcyIDEzLjE1MjMgMTUuMzMyNSAxMS4zMTM4IDE1Ljc0NzRMMTEuMTQzIDE1Ljc4ODFMMTEuMjI0MyAxNS42MzM1QzExLjYyMjkgMTQuODY4OCAxMS45MTU4IDEzLjcwNTUgMTIuMDYyMiAxMi4yNzM3VjEyLjIwMDVIMTUuNDc4OUwxNS40MzAxIDEyLjMxNDRaTTE1LjcwNjcgMTEuNDY4NEgxMi4xMjczVjExLjM3ODlDMTIuMTU5OCAxMC45MTUyIDEyLjE3NjEgMTAuNDU5NiAxMi4xNzYxIDEwLjAyODVDMTIuMTc2MSA5LjU5NzI5IDEyLjE1OTggOS4xMTczMyAxMi4xMjczIDguNjM3MzZWOC41NDc4N0gxNS43MDY3TDE1LjcyMyA4LjYxMjk1QzE1LjgzNjkgOS4wNzY2NSAxNS44OTM4IDkuNTQwMzUgMTUuODkzOCA5Ljk5NTkxQzE1Ljg5MzggMTAuNDUxNSAxNS44MzY5IDEwLjkzMTQgMTUuNzE0OCAxMS40MDMzTDE1LjY5ODYgMTEuNDY4NEgxNS43MDY3WiIgZmlsbD0iIzE2QjM3OCIvPgo8L3N2Zz4K'); + --icon-FileShared: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02Ljg2MjQ0IDQuNzgwNTZDNy4yMjY3IDQuNjM5MzUgNy42MTU2MSA0LjU3Mjc3IDguMDA2MDkgNC41ODQ3NUw4LjAxNzA1IDQuNTg1MDhDOC43ODYzNCA0LjYyODk3IDkuNTA4ODkgNC45Njg2MSAxMC4wMzM3IDUuNTMyNzhDMTAuNTU3OCA2LjA5NjE0IDEwLjg0NDIgNi44Mzk5OSAxMC44MzMzIDcuNjA5MjdWOC43NTEyMkMxMC44MzI4IDkuMzA5NzkgMTAuNjcyIDkuODU2ODQgMTAuMzY5OSAxMC4zMjY3QzEwLjEyNTEgMTAuNzA3MyA5Ljc5NTkxIDExLjAyNDUgOS40MDk2IDExLjI1NDdMOS41NDA3NyAxMi4xNzhMMTEuNTkzMSAxMi43NjEzQzExLjg1NDEgMTIuODM1OSAxMi4wODQ0IDEyLjk5MzcgMTIuMjQ3OSAxMy4yMTA0QzEyLjQxMTQgMTMuNDI3MiAxMi40OTk5IDEzLjY5MTIgMTIuNSAxMy45NjI3VjE1LjgzNDVDMTIuNSAxNi4wNjQ3IDEyLjMxMzQgMTYuMjUxMiAxMi4wODMzIDE2LjI1MTJIMy43NDk5OEMzLjUxOTg2IDE2LjI1MTIgMy4zMzMzMSAxNi4wNjQ3IDMuMzMzMzEgMTUuODM0NVYxMy45NTk1QzMuMzMzNDMgMTMuNjg4MSAzLjQyMTkzIDEzLjQyMzggMy41ODU0NCAxMy4yMDcxQzMuNzQ4OTQgMTIuOTkwNCAzLjk3ODU1IDEyLjgzMjggNC4yMzk1NiAxMi43NTgxTDYuMjkyNTIgMTIuMTc0N0w2LjQyMzU5IDExLjI1NDZDNi4wMzczMiAxMS4wMjQ1IDUuNzA4MiAxMC43MDczIDUuNDYzNDQgMTAuMzI2N0M1LjE2MTMyIDkuODU2ODQgNS4wMDA0NSA5LjMxMDE1IDQuOTk5OTggOC43NTE1N0w0Ljk5OTk4IDcuNTAxNDFDNC45OTk5OCA3LjUwMTM1IDQuOTk5OTggNy41MDE0OCA0Ljk5OTk4IDcuNTAxNDFDNC45OTk4MiA3LjExMDgxIDUuMDc4MTIgNi43MjM5NiA1LjIzMDIzIDYuMzY0MkM1LjM4MjM3IDYuMDA0MzcgNS42MDUyNSA1LjY3ODc4IDUuODg1NjMgNS40MDY3NEM2LjE2NjAxIDUuMTM0NyA2LjQ5ODE5IDQuOTIxNzYgNi44NjI0NCA0Ljc4MDU2Wk03Ljk3NTA2IDUuNDE3NTNDNy42OTc5OSA1LjQwOTc1IDcuNDIyMTMgNS40NTczNSA3LjE2MzY0IDUuNTU3NTVDNi45MDM0NiA1LjY1ODQxIDYuNjY2MTkgNS44MTA1MSA2LjQ2NTkyIDYuMDA0ODNDNi4yNjU2NSA2LjE5OTE0IDYuMTA2NDUgNi40MzE3MSA1Ljk5Nzc4IDYuNjg4NzNDNS44ODkxMSA2Ljk0NTc0IDUuODMzMTggNy4yMjE5NyA1LjgzMzMxIDcuNTAxMDJMNS44MzMzMSA4Ljc1MDg2QzUuODMzMzEgOC43NTA5NCA1LjgzMzMxIDguNzUwNzkgNS44MzMzMSA4Ljc1MDg2QzUuODMzNjkgOS4xNDk3NyA1Ljk0ODU5IDkuNTQwNCA2LjE2NDM2IDkuODc1OTNDNi4zODAxNiAxMC4yMTE1IDYuNjg3NzkgMTAuNDc4MSA3LjA1MDY3IDEwLjY0MzlDNy4yMTg2MyAxMC43MjA3IDcuMzE2MDMgMTAuODk4OCA3LjI4OTk4IDExLjA4MTZMNy4xMTc0OCAxMi4yOTI1QzcuMDk0NjYgMTIuNDUxOCA3LjAyNjEyIDEyLjYwMTUgNi45MjAyNCAxMi43MjI4QzYuODE0MzUgMTIuODQ0IDYuNjc1NiAxMi45MzIgNi41MjA3NyAxMi45NzYxTDQuNDY4NzMgMTMuNTU5M0M0LjQ2ODY2IDEzLjU1OTMgNC40Njg4IDEzLjU1OTMgNC40Njg3MyAxMy41NTkzQzQuMzgxODIgMTMuNTg0MiA0LjMwNTE0IDEzLjYzNjggNC4yNTA2OSAxMy43MDlDNC4xOTYyMiAxMy43ODEyIDQuMTY2NzMgMTMuODY5MSA0LjE2NjY1IDEzLjk1OTVNNy45NzUwNiA1LjQxNzUzQzguNTI3NjUgNS40NTA0NiA5LjA0NjQyIDUuNjk0OTYgOS40MjM1NiA2LjEwMDM4QzkuODAxOTUgNi41MDcxMyAxMC4wMDg1IDcuMDQ0MzkgMTAgNy41OTk4N0w5Ljk5OTk4IDguNzUwODZDOS45OTk2NCA5LjE0OTg1IDkuODg0NzQgOS41NDAzNCA5LjY2ODk0IDkuODc1OTNDOS40NTMxMyAxMC4yMTE1IDkuMTQ1NSAxMC40NzgxIDguNzgyNjIgMTAuNjQzOUM4LjYxNDcyIDEwLjcyMDcgOC41MTczMiAxMC44OTg3IDguNTQzMjkgMTEuMDgxNUw4LjcxNTc5IDEyLjI5NTdDOC43Mzg2MSAxMi40NTUgOC44MDcxNyAxMi42MDQ4IDguOTEzMDYgMTIuNzI2MUM5LjAxODk0IDEyLjg0NzQgOS4xNTc2OSAxMi45MzU0IDkuMzEyNTIgMTIuOTc5NEwxMS4zNjQ2IDEzLjU2MjdDMTEuMzY0NSAxMy41NjI2IDExLjM2NDYgMTMuNTYyNyAxMS4zNjQ2IDEzLjU2MjdDMTEuNDUxNSAxMy41ODc2IDExLjUyODIgMTMuNjQwMSAxMS41ODI2IDEzLjcxMjNDMTEuNjM3MSAxMy43ODQ2IDExLjY2NjYgMTMuODcyNiAxMS42NjY2IDEzLjk2MzFWMTUuNDE3OUg0LjE2NjY1VjEzLjk1OTUiIGZpbGw9IiM5MjkyOTkiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4yMDg0IDQuMTQwMjlDMTAuNjc4MSAzLjg2OTI5IDExLjIxNDEgMy43MzQ2MSAxMS43NTYyIDMuNzUxNEwxMS43NjcgMy43NTE3M0MxMi41MzYzIDMuNzk1NjIgMTMuMjU4OSA0LjEzNTI2IDEzLjc4MzcgNC42OTk0M0MxNC4zMDc4IDUuMjYyNzkgMTQuNTk0MiA2LjAwNjY0IDE0LjU4MzMgNi43NzU5MlY3LjkxNzg2QzE0LjU4MjggOC40NzY0NCAxNC40MjE5IDkuMDIzNDkgMTQuMTE5OCA5LjQ5MzMxQzEzLjg3NTEgOS44NzM5MyAxMy41NDU5IDEwLjE5MTEgMTMuMTU5NiAxMC40MjEzTDEzLjI4OTEgMTEuMzMxN0wxNS43MjAxIDExLjkzOTVDMTUuOTkwNCAxMi4wMDcyIDE2LjIzMDYgMTIuMTYzMyAxNi40MDIgMTIuMzgzQzE2LjU3MzUgMTIuNjAyNyAxNi42NjY2IDEyLjg3MzQgMTYuNjY2NiAxMy4xNTJWMTUuODM0NUMxNi42NjY2IDE2LjA2NDcgMTYuNDgwMSAxNi4yNTEyIDE2LjI0OTkgMTYuMjUxMkgxMy43NDk5QzEzLjUxOTggMTYuMjUxMiAxMy4zMzMzIDE2LjA2NDcgMTMuMzMzMyAxNS44MzQ1QzEzLjMzMzMgMTUuNjA0NCAxMy41MTk4IDE1LjQxNzkgMTMuNzQ5OSAxNS40MTc5SDE1LjgzMzNWMTMuMTUyQzE1LjgzMzMgMTMuMDU5MiAxNS44MDIyIDEyLjk2ODkgMTUuNzQ1MSAxMi44OTU3QzE1LjY4NzkgMTIuODIyNSAxNS42MDggMTIuNzcwNCAxNS41MTc5IDEyLjc0NzlMMTMuMDg3NCAxMi4xNDA1QzEyLjkyNjUgMTIuMTAwMyAxMi43ODEyIDEyLjAxMyAxMi42NzAxIDExLjg4OThDMTIuNTU5MSAxMS43NjY3IDEyLjQ4NzQgMTEuNjEzMiAxMi40NjQxIDExLjQ0OUwxMi4yOTMzIDEwLjI0ODJDMTIuMjY3MyAxMC4wNjU0IDEyLjM2NDcgOS44ODczMSAxMi41MzI2IDkuODEwNTdDMTIuODk1NSA5LjY0NDcyIDEzLjIwMzEgOS4zNzgxNiAxMy40MTg5IDkuMDQyNThDMTMuNjM0NyA4LjcwNjk5IDEzLjc0OTYgOC4zMTY0OSAxMy43NDk5IDcuOTE3NTFWNi43NjY1MUMxMy43NTg0IDYuMjExMDMgMTMuNTUxOSA1LjY3Mzc4IDEzLjE3MzUgNS4yNjcwMkMxMi43OTY0IDQuODYxNiAxMi4yNzc2IDQuNjE3MDkgMTEuNzI1IDQuNTg0MTdDMTEuMzM5NiA0LjU3MzI0IDEwLjk1ODggNC42Njk0NCAxMC42MjQ4IDQuODYyMTFDMTAuNDI1NSA0Ljk3NzEgMTAuMTcwNyA0LjkwODc0IDEwLjA1NTcgNC43MDk0MUM5Ljk0MDcxIDQuNTEwMDkgMTAuMDA5MSA0LjI1NTI4IDEwLjIwODQgNC4xNDAyOVoiIGZpbGw9IiM5MjkyOTkiLz4KPC9zdmc+Cg=='); + --icon-Folder: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE4LjYgNi44OUgxMi4xN0wxMC4yOCA1SDQuNTZDMy43IDUgMyA1LjcgMyA2LjU2VjE3LjQ4QzMgMTguMzUgMy43IDE5LjA1IDQuNTcgMTkuMDVIMTguNkMxOS40NyAxOS4wNSAyMC4xNyAxOC4zNSAyMC4xNyAxNy40OFY4LjQ2QzIwLjE3IDcuNTkgMTkuNDcgNi44OSAxOC42IDYuODlaIiBmaWxsPSIjOTI5Mjk5Ii8+Cjwvc3ZnPgo='); + --icon-FolderPrivate: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUwMF8zODkwOCkiPgo8cGF0aCBkPSJNMTEuOTMgMTkuMDNDMTEuOTMgMTkuMDMgMTEuOTggMTkuMTEgMTIgMTkuMTVDMTEuOTYgMTkuMDggMTEuOTIgMTkgMTEuOSAxOC45M0MxMS45MSAxOC45NiAxMS45MiAxOSAxMS45MyAxOS4wM1oiIGZpbGw9IiM5MjkyOTkiLz4KPHBhdGggZD0iTTEyLjIgMTEuMjdDMTIuMiA4LjczIDE0LjI3IDYuNjYgMTYuODEgNi42NkMxNy42OCA2LjY2IDE4LjQ4IDYuOTEgMTkuMTcgNy4zM1Y2LjQ2QzE5LjE3IDUuNTkgMTguNDcgNC44OSAxNy42IDQuODlIMTEuMTdMOS4yOCAzSDMuNTZDMi43IDMgMiAzLjcgMiA0LjU2VjE1LjQ4QzIgMTYuMzUgMi43IDE3LjA1IDMuNTcgMTcuMDVIMTAuODFWMTQuMDdDMTAuODEgMTMuNjIgMTAuOTMgMTMuMTggMTEuMTYgMTIuNzdDMTEuNDEgMTIuMzIgMTEuNzcgMTEuOTYgMTIuMiAxMS43MlYxMS4yNlYxMS4yN1oiIGZpbGw9IiM5MjkyOTkiLz4KPHBhdGggZD0iTTIxLjc1IDEzLjY3QzIxLjc1IDEzLjY3IDIxLjc1IDEzLjY0IDIxLjc0IDEzLjYyQzIxLjcgMTMuNDkgMjEuNjUgMTMuMzcgMjEuNTkgMTMuMjZDMjEuMzUgMTIuODMgMjAuOTMgMTIuNTEgMjAuNDIgMTIuNDFWMTEuMjZDMjAuNDIgMTAuMTcgMTkuOTMgOS4yMTAwMiAxOS4xNyA4LjU1MDAyQzE4LjU0IDguMDAwMDIgMTcuNzIgNy42NTAwMiAxNi44MSA3LjY1MDAyQzE0LjgyIDcuNjUwMDIgMTMuMiA5LjI3MDAyIDEzLjIgMTEuMjZWMTIuNDFDMTMuMDcgMTIuNDMgMTIuOTUgMTIuNDcgMTIuODQgMTIuNTJDMTIuNjEgMTIuNjIgMTIuNDEgMTIuNzcgMTIuMjUgMTIuOTVDMTIuMTcgMTMuMDQgMTIuMSAxMy4xNCAxMi4wNCAxMy4yNUMxMS45OCAxMy4zNiAxMS45MyAxMy40OCAxMS44OSAxMy42MUMxMS44OSAxMy42MyAxMS44OCAxMy42NCAxMS44OCAxMy42NkMxMS44NCAxMy43OSAxMS44MiAxMy45MyAxMS44MiAxNC4wN1YxOC4zOUMxMS44MiAxOC41MyAxMS44NSAxOC42NyAxMS44OCAxOC44MUMxMS44OCAxOC44NSAxMS45IDE4Ljg4IDExLjkxIDE4LjkyQzExLjk0IDE5IDExLjk4IDE5LjA3IDEyLjAxIDE5LjE0QzEyLjA1IDE5LjIyIDEyLjA5IDE5LjI5IDEyLjE0IDE5LjM2QzEyLjE5IDE5LjQzIDEyLjI0IDE5LjQ5IDEyLjMgMTkuNTVDMTIuMzUgMTkuNiAxMi40IDE5LjY1IDEyLjQ2IDE5LjdDMTIuNTMgMTkuNzYgMTIuNjEgMTkuODEgMTIuNjkgMTkuODVDMTIuNzYgMTkuODkgMTIuODIgMTkuOTIgMTIuOSAxOS45NUMxMi45NiAxOS45NyAxMy4wMSAxOS45OSAxMy4wNyAyMC4wMUMxMy4yMSAyMC4wNSAxMy4zNiAyMC4wOCAxMy41MSAyMC4wOEgyMC4xMkMyMC4yNyAyMC4wOCAyMC40MiAyMC4wNSAyMC41NiAyMC4wMUMyMC42MiAxOS45OSAyMC42NyAxOS45NyAyMC43MyAxOS45NUMyMC44IDE5LjkyIDIwLjg3IDE5Ljg5IDIwLjk0IDE5Ljg1QzIxLjAyIDE5LjggMjEuMSAxOS43NSAyMS4xNyAxOS43QzIxLjIzIDE5LjY1IDIxLjI4IDE5LjYgMjEuMzMgMTkuNTVDMjEuMzkgMTkuNDkgMjEuNDQgMTkuNDMgMjEuNDkgMTkuMzZDMjEuNTQgMTkuMjkgMjEuNTggMTkuMjIgMjEuNjIgMTkuMTRDMjEuNjQgMTkuMSAyMS42NyAxOS4wNiAyMS42OSAxOS4wMUMyMS43IDE4Ljk4IDIxLjcxIDE4Ljk0IDIxLjcyIDE4LjkxQzIxLjczIDE4Ljg3IDIxLjc0IDE4Ljg0IDIxLjc1IDE4LjhDMjEuNzkgMTguNjYgMjEuODEgMTguNTIgMjEuODEgMTguMzhWMTQuMDZDMjEuODEgMTMuOTIgMjEuNzkgMTMuNzggMjEuNzUgMTMuNjVWMTMuNjdaTTE0LjIgMTEuMjdDMTQuMiA5LjgzMDAyIDE1LjM3IDguNjYwMDIgMTYuODEgOC42NjAwMkMxNy44NiA4LjY2MDAyIDE4Ljc1IDkuMjgwMDIgMTkuMTcgMTAuMTdDMTkuMzMgMTAuNTEgMTkuNDIgMTAuODggMTkuNDIgMTEuMjdWMTIuMzlIMTQuMlYxMS4yN1pNMjAuODEgMTguNEMyMC44MSAxOC42OCAyMC42NCAxOC45MSAyMC40MSAxOS4wM0MyMC4zMiAxOS4wNyAyMC4yMiAxOS4xIDIwLjExIDE5LjFIMTMuNUMxMy4zOSAxOS4xIDEzLjMgMTkuMDcgMTMuMiAxOS4wM0MxMi45NiAxOC45MiAxMi44IDE4LjY4IDEyLjggMTguNFYxNC4wOEMxMi44IDEzLjcgMTMuMTEgMTMuMzggMTMuNSAxMy4zOEgyMC4xMUMyMC40OSAxMy4zOCAyMC44MSAxMy42OSAyMC44MSAxNC4wOFYxOC40WiIgZmlsbD0iIzkyOTI5OSIvPgo8cGF0aCBkPSJNMjAuODQgMTkuOTNDMjAuODQgMTkuOTMgMjAuOSAxOS44OSAyMC45MyAxOS44N0MyMC44NiAxOS45MSAyMC44IDE5Ljk0IDIwLjcyIDE5Ljk3QzIwLjc2IDE5Ljk2IDIwLjggMTkuOTUgMjAuODMgMTkuOTNIMjAuODRaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMTIuNzggMTkuOTNDMTIuNzggMTkuOTMgMTIuODYgMTkuOTUgMTIuODkgMTkuOTdDMTIuODIgMTkuOTQgMTIuNzUgMTkuOTEgMTIuNjggMTkuODdDMTIuNzEgMTkuODkgMTIuNzQgMTkuOTIgMTIuNzcgMTkuOTNIMTIuNzhaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMTYuODEgMTQuNTJDMTYuMjYgMTQuNTIgMTUuODEgMTQuOTcgMTUuODEgMTUuNTJDMTUuODEgMTUuODkgMTYuMDIgMTYuMjEgMTYuMzMgMTYuMzhWMTcuNThDMTYuMzMgMTcuODQgMTYuNTQgMTguMDYgMTYuODEgMTguMDZDMTcuMDggMTguMDYgMTcuMjkgMTcuODUgMTcuMjkgMTcuNThWMTYuMzhDMTcuNTkgMTYuMjEgMTcuODEgMTUuOSAxNy44MSAxNS41MkMxNy44MSAxNC45NyAxNy4zNiAxNC41MiAxNi44MSAxNC41MloiIGZpbGw9IiM5MjkyOTkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81MDBfMzg5MDgiPgo8cmVjdCB3aWR0aD0iMTkuODEiIGhlaWdodD0iMTcuMSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'); --icon-LoginStreamline: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zOS41NDAyIDBIMTguMDA0N0M4LjA2NzUyIDAgMCA4Ljk3NzQgMCAyMC4wMzUzVjQwSDIxLjcwNTFDMzEuNTQ4NyA0MCAzOS41NDAyIDMxLjEwNjggMzkuNTQwMiAyMC4xNTMxVjBaIiBmaWxsPSIjRjlBRTQxIiBvcGFjaXR5PSIuMSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjIuNDkxNyAyNy45MzA2TDI4LjQ1MyAxOC44MzA3QzI4LjY1MiAxOC41MjY4IDI4LjU3NzYgMTguMTExOSAyOC4yODY2IDE3LjkwNEMyOC4xODA1IDE3LjgyODEgMjguMDU0OCAxNy43ODc1IDI3LjkyNjIgMTcuNzg3NUgyMy4yNzlWMTEuOTk0OEMyMy4yNzkgMTEuNjI2NiAyMi45OTMyIDExLjMyODEgMjIuNjQwNyAxMS4zMjgxQzIyLjQzIDExLjMyODEgMjIuMjMyOSAxMS40MzY3IDIyLjExMzkgMTEuNjE4M0wxNi4xNTI2IDIwLjcxODNDMTUuOTUzNSAyMS4wMjIxIDE2LjAyOCAyMS40MzcgMTYuMzE4OSAyMS42NDQ5QzE2LjQyNTEgMjEuNzIwOCAxNi41NTA3IDIxLjc2MTQgMTYuNjc5NCAyMS43NjE0SDIxLjMyNjZWMjcuNTU0MkMyMS4zMjY2IDI3LjkyMjMgMjEuNjEyMyAyOC4yMjA4IDIxLjk2NDkgMjguMjIwOEMyMi4xNzU2IDI4LjIyMDggMjIuMzcyNyAyOC4xMTIyIDIyLjQ5MTcgMjcuOTMwNloiIGZpbGw9IiNGOUFFNDEiLz48cGF0aCBvcGFjaXR5PSIuNDQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuMTQ1MyAyNC43NDE5QzE2Ljg1MDMgMjQuNzQxOSAxNy40MjE5IDI1LjMzODggMTcuNDIxOSAyNi4wNzUyVjI2LjM4ODlDMTcuNDIxOSAyNy4xMjUzIDE2Ljg1MDMgMjcuNzIyMyAxNi4xNDUzIDI3LjcyMjNIMTAuODg4N0MxMC4xODM3IDI3LjcyMjMgOS42MTIxMSAyNy4xMjUzIDkuNjEyMTEgMjYuMzg4OVYyNi4wNzUyQzkuNjEyMTEgMjUuMzM4OCAxMC4xODM3IDI0Ljc0MTkgMTAuODg4NyAyNC43NDE5SDE2LjE0NTNaTTEzLjIxNjYgMTguNzgxMUMxMy45MjE3IDE4Ljc4MTEgMTQuNDkzMiAxOS4zNzgxIDE0LjQ5MzIgMjAuMTE0NFYyMC40MjgyQzE0LjQ5MzIgMjEuMTY0NSAxMy45MjE3IDIxLjc2MTUgMTMuMjE2NiAyMS43NjE1SDguOTM2MjZDOC4yMzEyMiAyMS43NjE1IDcuNjU5NjcgMjEuMTY0NSA3LjY1OTY3IDIwLjQyODJWMjAuMTE0NEM3LjY1OTY3IDE5LjM3ODEgOC4yMzEyMiAxOC43ODExIDguOTM2MjYgMTguNzgxMUgxMy4yMTY2Wk0xNi4xNDUzIDEyLjgyMDNDMTYuODUwMyAxMi44MjAzIDE3LjQyMTkgMTMuNDE3MyAxNy40MjE5IDE0LjE1MzZWMTQuNDY3NEMxNy40MjE5IDE1LjIwMzggMTYuODUwMyAxNS44MDA3IDE2LjE0NTMgMTUuODAwN0gxMC44ODg3QzEwLjE4MzcgMTUuODAwNyA5LjYxMjExIDE1LjIwMzggOS42MTIxMSAxNC40Njc0VjE0LjE1MzZDOS42MTIxMSAxMy40MTczIDEwLjE4MzcgMTIuODIwMyAxMC44ODg3IDEyLjgyMDNIMTYuMTQ1M1oiIGZpbGw9IiNGOUFFNDEiLz48L3N2Zz4='); --icon-LoginUnify: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggb3BhY2l0eT0iLjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzkuNTQwMiAwSDE4LjAwNDdDOC4wNjc1MiAwIDAgOC45Nzc0IDAgMjAuMDM1M1Y0MEgyMS43MDUxQzMxLjU0ODcgNDAgMzkuNTQwMiAzMS4xMDY4IDM5LjU0MDIgMjAuMTUzMVYwWiIgZmlsbD0iIzcxNDFGOSIvPjxwYXRoIG9wYWNpdHk9Ii40NCIgZD0iTTEzLjgyOTcgMTYuNzc4NlYyMy4yMjNDMTMuODI5NyAyNS4wMDI2IDE1LjIxMSAyNi40NDUyIDE2LjkxNDggMjYuNDQ1MkgyMy4wODUxVjI3LjMyNEMyMy4wODUxIDI4Ljg0MzEgMjIuMjk1OCAyOS42Njc1IDIwLjg0MTMgMjkuNjY3NUgxMi45ODgzQzExLjUzMzkgMjkuNjY3NSAxMC43NDQ2IDI4Ljg0MzEgMTAuNzQ0NiAyNy4zMjRWMTkuMTIyQzEwLjc0NDYgMTcuNjAyOSAxMS41MzM5IDE2Ljc3ODYgMTIuOTg4MyAxNi43Nzg2SDEzLjgyOTdaTTI1Ljk4MzIgMTEuNDA4MkMyNy40Mzc2IDExLjQwODIgMjguMjI2OSAxMi4yMzI2IDI4LjIyNjkgMTMuNzUxNlYyMS45NTM3QzI4LjIyNjkgMjMuNDcyNyAyNy40Mzc2IDI0LjI5NzEgMjUuOTgzMiAyNC4yOTcxSDI1LjE0MThWMTcuODUyNkMyNS4xNDE4IDE2LjA3MzEgMjMuNzYwNSAxNC42MzA0IDIyLjA1NjcgMTQuNjMwNEgxNS44ODY1VjEzLjc1MTZDMTUuODg2NSAxMi4yMzI2IDE2LjY3NTggMTEuNDA4MiAxOC4xMzAyIDExLjQwODJIMjUuOTgzMloiIGZpbGw9IiM3MTQxRjkiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3LjE5NTYgMTYuNzc5M0gyMS43NzY1QzIyLjYyNDkgMTYuNzc5MyAyMy4wODUzIDE3LjI2MDIgMjMuMDg1MyAxOC4xNDYzVjIyLjkzMDhDMjMuMDg1MyAyMy44MTY5IDIyLjYyNDkgMjQuMjk3OCAyMS43NzY1IDI0LjI5NzhIMTcuMTk1NkMxNi4zNDcxIDI0LjI5NzggMTUuODg2NyAyMy44MTY5IDE1Ljg4NjcgMjIuOTMwOFYxOC4xNDYzQzE1Ljg4NjcgMTcuMjYwMiAxNi4zNDcxIDE2Ljc3OTMgMTcuMTk1NiAxNi43NzkzWiIgZmlsbD0iIzcxNDFGOSIvPjwvc3ZnPg=='); --icon-LoginVisualize: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggb3BhY2l0eT0iLjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzkuNTQwMiAwSDE4LjAwNDdDOC4wNjc1MiAwIDAgOC45Nzc0IDAgMjAuMDM1M1Y0MEgyMS43MDUxQzMxLjU0ODcgNDAgMzkuNTQwMiAzMS4xMDY4IDM5LjU0MDIgMjAuMTUzMVYwWiIgZmlsbD0iIzE2QjM3OCIvPjxwYXRoIG9wYWNpdHk9Ii40NCIgZD0iTTIzLjk3MTggMTIuMjIxNkMyMy45NzE4IDExLjM2MjUgMjMuMzA1IDEwLjY2NiAyMi40ODI0IDEwLjY2NkMyMS42NTk5IDEwLjY2NiAyMC45OTMgMTEuMzYyNSAyMC45OTMgMTIuMjIxNlYyNi43NDAxQzIwLjk5MyAyNy41OTkyIDIxLjY1OTkgMjguMjk1NiAyMi40ODI0IDI4LjI5NTZDMjMuMzA1IDI4LjI5NTYgMjMuOTcxOCAyNy41OTkyIDIzLjk3MTggMjYuNzQwMVYxMi4yMjE2WiIgZmlsbD0iIzE2QjM3OCIvPjxwYXRoIGQ9Ik0xOS4wMDcgMTcuNzMwNEMxOS4wMDcgMTYuODcxMyAxOC4zNDAyIDE2LjE3NDggMTcuNTE3NyAxNi4xNzQ4IDE2LjY5NTEgMTYuMTc0OCAxNi4wMjgzIDE2Ljg3MTMgMTYuMDI4MyAxNy43MzA0VjI2LjczOTZDMTYuMDI4MyAyNy41OTg3IDE2LjY5NTEgMjguMjk1MiAxNy41MTc3IDI4LjI5NTIgMTguMzQwMiAyOC4yOTUyIDE5LjAwNyAyNy41OTg3IDE5LjAwNyAyNi43Mzk2VjE3LjczMDR6TTI4LjkzNjIgMTkuOTM0NUMyOC45MzYyIDE5LjA3NTQgMjguMjY5NCAxOC4zNzg5IDI3LjQ0NjkgMTguMzc4OSAyNi42MjQzIDE4LjM3ODkgMjUuOTU3NSAxOS4wNzU0IDI1Ljk1NzUgMTkuOTM0NVYyNi43NEMyNS45NTc1IDI3LjU5OTEgMjYuNjI0MyAyOC4yOTU2IDI3LjQ0NjkgMjguMjk1NiAyOC4yNjk0IDI4LjI5NTYgMjguOTM2MiAyNy41OTkxIDI4LjkzNjIgMjYuNzRWMTkuOTM0NXpNMTQuMDQyNyAyMi4xMzg2QzE0LjA0MjcgMjEuMjc5NSAxMy4zNzU5IDIwLjU4MyAxMi41NTMzIDIwLjU4MyAxMS43MzA4IDIwLjU4MyAxMS4wNjQgMjEuMjc5NSAxMS4wNjQgMjIuMTM4NlYyNi43NDA0QzExLjA2NCAyNy41OTk1IDExLjczMDggMjguMjk2IDEyLjU1MzMgMjguMjk2IDEzLjM3NTkgMjguMjk2IDE0LjA0MjcgMjcuNTk5NSAxNC4wNDI3IDI2Ljc0MDRWMjIuMTM4NnoiIGZpbGw9IiMxNkIzNzgiLz48L3N2Zz4='); @@ -78,7 +78,6 @@ --icon-FilterSimple: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuOTUwODMzMzMsMC4yMiBDOS44NzgyODY2NywwLjA4NDQ5NzcxMDggOS43MzcwMzQsLTYuMTY5Njc5NTFlLTA1IDkuNTgzMzMzMzMsLTQuNjI1OTMyOGUtMTcgTDAuNDE2NjY2NjY3LC00LjYyNTkzMjhlLTE3IEMwLjI2MzEwMzQ1NCw3LjkzMjczNDM1ZS0wNSAwLjEyMjAzMTQsMC4wODQ2MTg0ODc1IDAuMDQ5NTQ5NDAxMiwwLjIxOTk5OTUyOSBDLTAuMDIyOTMyNTk3OCwwLjM1NTM4MDU3MSAtMC4wMTUwNzQwNTE3LDAuNTE5NjU2MDYyIDAuMDcsMC42NDc1IEwzLjMzMzMzMzMzLDUuNTQyNSBMMy4zMzMzMzMzMyw5LjU4MzMzMzMzIEMzLjMzMzMzMzMzLDkuODEzNDUyIDMuNTE5ODgxMzYsMTAgMy43NSwxMCBMNi4yNSwxMCBDNi40ODAxMTg2NCwxMCA2LjY2NjY2NjY3LDkuODEzNDUyIDYuNjY2NjY2NjcsOS41ODMzMzMzMyBMNi42NjY2NjY2Nyw1LjU0MjUgTDkuOTMsMC42NDc1IEMxMC4wMTUxOTU2LDAuNTE5NzI3OTkxIDEwLjAyMzIwMTMsMC4zNTU0NTA1NDcgOS45NTA4MzMzMywwLjIyIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); --icon-Fireworks: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNjY2NDcgMTUuMzMzM0g3LjMzMzE0QzcuMzMzMTQgOS44NDc5NyA0LjQ0NzggOC42MzA2MyA0LjQxODQ3IDguNjE5M0wzLjc5OTggOC4zNzEzIDQuMjk1MTQgNy4xMzMzIDQuOTE0NDcgNy4zODA2M0M1LjAyNTE0IDcuNDI1OTcgNi45NTE4IDguMjM1MyA3Ljk5OTggMTEuMTE0IDkuMDQ3OCA4LjIzNTk3IDEwLjk3NDUgNy40MjY2MyAxMS4wODUxIDcuMzgwNjNMMTEuNzA0NSA3LjEzMzMgMTIuMTk5OCA4LjM3MTMgMTEuNTg0NSA4LjYxNzNDMTEuNDM5OCA4LjY3OTk3IDguNjY2NDcgOS45NDE5NyA4LjY2NjQ3IDE1LjMzMzN6TTEwLjQ1MzEgMS43OTA1NEw4Ljc1NzcyIDEuNTQ0NTQgNy45OTk3Mi4wMDg1NDQ5MiA3LjI0MTcyIDEuNTQ0NTQgNS41NDYzOSAxLjc5MDU0IDYuNzczMDUgMi45ODY1NCA2LjQ4MzcyIDQuNjc1MjEgNy45OTk3MiAzLjg3Nzg4IDkuNTE1NzIgNC42NzUyMSA5LjIyNjM5IDIuOTg2NTQgMTAuNDUzMSAxLjc5MDU0ek01LjI5OTE3IDEyLjM1OEwzLjY5ODUgMTIuMTI1MyAyLjk4MzE3IDEwLjY3NTMgMi4yNjcxNyAxMi4xMjUzLjY2NjUwNCAxMi4zNTggMS44MjQ1IDEzLjQ4NjYgMS41NTExNyAxNS4wODA2IDIuOTgzMTcgMTQuMzI4NiA0LjQxNDUgMTUuMDgwNiA0LjE0MTE3IDEzLjQ4NjYgNS4yOTkxNyAxMi4zNTh6TTE1LjMzMzMgMTIuMzU4TDEzLjczMjcgMTIuMTI1MyAxMy4wMTY3IDEwLjY3NTMgMTIuMzAxMyAxMi4xMjUzIDEwLjcwMDcgMTIuMzU4IDExLjg1ODcgMTMuNDg2NiAxMS41ODUzIDE1LjA4MDYgMTMuMDE2NyAxNC4zMjg2IDE0LjQ0ODcgMTUuMDgwNiAxNC4xNzUzIDEzLjQ4NjYgMTUuMzMzMyAxMi4zNTh6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTguNjY2MzQgNy41MzMxM1Y1LjM0MThINy4zMzMwMVY3LjUyMDQ2QzcuNTc2MjEgNy43NjgxMSA3LjgwMjUgOC4wMzE4MSA4LjAxMDM0IDguMzA5OCA4LjIxMjIgOC4wMzcxNyA4LjQzMTMyIDcuNzc3NzUgOC42NjYzNCA3LjUzMzEzek0xLjY2NjUgNy4zMzMyNUMyLjIxODc5IDcuMzMzMjUgMi42NjY1IDYuODg1NTQgMi42NjY1IDYuMzMzMjUgMi42NjY1IDUuNzgwOTcgMi4yMTg3OSA1LjMzMzI1IDEuNjY2NSA1LjMzMzI1IDEuMTE0MjIgNS4zMzMyNS42NjY1MDQgNS43ODA5Ny42NjY1MDQgNi4zMzMyNS42NjY1MDQgNi44ODU1NCAxLjExNDIyIDcuMzMzMjUgMS42NjY1IDcuMzMzMjV6TTE0LjMzMyA3LjMzMzI1QzE0Ljg4NTMgNy4zMzMyNSAxNS4zMzMgNi44ODU1NCAxNS4zMzMgNi4zMzMyNSAxNS4zMzMgNS43ODA5NyAxNC44ODUzIDUuMzMzMjUgMTQuMzMzIDUuMzMzMjUgMTMuNzgwNyA1LjMzMzI1IDEzLjMzMyA1Ljc4MDk3IDEzLjMzMyA2LjMzMzI1IDEzLjMzMyA2Ljg4NTU0IDEzLjc4MDcgNy4zMzMyNSAxNC4zMzMgNy4zMzMyNXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4='); --icon-Flag: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1mbGFnIj48cGF0aCBkPSJtMC40NzEzNiwxMC43MzIxMXMwLjk0MDU0LC0wLjc4Nzg3IDMuNzYyMTYsLTAuNzg3ODdzNC43MDI2OSwxLjU3NTc0IDcuNTI0MzIsMS41NzU3NHMzLjc2MjE2LC0wLjc4Nzg3IDMuNzYyMTYsLTAuNzg3ODdsMCwtOS40NTQ0OHMtMC45NDA1NCwwLjc4Nzg3IC0zLjc2MjE2LDAuNzg3ODdzLTQuNzAyNjksLTEuNTc1NzQgLTcuNTI0MzIsLTEuNTc1NzRzLTMuNzYyMTYsMC43ODc4NyAtMy43NjIxNiwwLjc4Nzg3bDAsOS40NTQ0OHoiIHN0cm9rZT0ibnVsbCIvPjwvc3ZnPg=='); - --icon-Folder: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMsNSBMMTMsNSBDMTMuNTUyMjg0Nyw1IDE0LDUuNDQ3NzE1MjUgMTQsNiBMMTQsMTMgQzE0LDEzLjU1MjI4NDcgMTMuNTUyMjg0NywxNCAxMywxNCBMMywxNCBDMi40NDc3MTUyNSwxNCAyLDEzLjU1MjI4NDcgMiwxMyBMMiw2IEMyLDUuNDQ3NzE1MjUgMi40NDc3MTUyNSw1IDMsNSBaIE00LDIgTDEyLDIgTDEyLDQgTDQsNCBMNCwyIFoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); --icon-FontBold: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTMuMTk1MDk4OCAxLjgzNTQxOTloNS42OTAzODE4Yy43NTQ1OTUyIDAgMS40NzgyNzI0LjI5OTc1NjcgMi4wMTE4NTM0LjgzMzMzNzUuNTMzNTgxLjUzMzU4MDguODMzMzM3IDEuMjU3MjU4Mi44MzMzMzcgMi4wMTE4NTM1IDAgLjc1NDU5NTItLjI5OTc1NiAxLjQ3ODI3MjctLjgzMzMzNyAyLjAxMTg1MzVDMTAuMzYzNzUzIDcuMjI2MDQ1MSA5LjY0MDA3NTggNy41MjU4MDE4IDguODg1NDgwNiA3LjUyNTgwMThINS4wOTE4OTI3TTUuMDkxODkyNyA3LjUyNTgwMThoNS4yMTYxODMzYy44ODAzNTIgMCAxLjcyNDY1My4zNDk3MTgyIDIuMzQ3MTY5Ljk3MjIyMDcuNjIyNTAyLjYyMjUxNTIuOTcyMjIgMS40NjY4MTYxLjk3MjIyIDIuMzQ3MTY4NXYwYzAgLjg4MDM1My0uMzQ5NzE4IDEuNzI0NjU0LS45NzIyMiAyLjM0NzIxOS0uNjIyNTE2LjYyMjQwMi0xLjQ2NjgxNy45NzIxNy0yLjM0NzE2OS45NzIxN0gzLjE5NTA5ODhNNS4wOTE4OTI3IDEuODM1NDE5OVYxNC4xNjQ1OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDMwMDAwIiBzdHJva2Utd2lkdGg9IjEuMjY1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4='); --icon-FontItalic: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwSDEyVjEySDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4xMzU2IDAgMCAxLjEzNTYgLjk4MyAxLjM5KSIgY2xpcC1wYXRoPSJ1cmwoI2EpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0ibSA0Ljg3NSwwLjM3NSBoIDQuNSIgc3Ryb2tlPSIjMDAwIi8+PHBhdGggZD0ibSAyLjYyNSwxMS42MjUgaCA0LjUiIHN0cm9rZT0iIzA2MDAwMCIvPjxwYXRoIGQ9Im0gNy4xMjUsMC4zNzUgLTIuMjUsMTEuMjUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9Ii45OSIvPjwvZz48L3N2Zz4='); --icon-FontStrikethrough: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTSAxLjgwNTY1ODUsMy4zOTcxNzIgViAxLjczNTc0MzEgSCAxNC4xOTQzNDIgViAzLjM5NzE3MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTI5Mjk5IiBzdHJva2Utd2lkdGg9IjEuMTQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNIDcuOTk5OTk5OSwxMC4wNDI4ODcgViAxNC4xOTY0NiIgc3Ryb2tlPSIjOTI5Mjk5IiBzdHJva2Utd2lkdGg9IjEuMTQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNIDcuOTk5OTk5OSwxLjczNTc0MzEgViA3LjU1MDc0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTI5Mjk5IiBzdHJva2Utd2lkdGg9IjEuMTQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNNS4zNDUyODIyIDE0LjE5NjQ2SDEwLjY1NDcxOE0xLjgwNTY1ODUgNy41NTA3NDRIMTQuMTk0MzQyIiBzdHJva2U9IiM5MjkyOTkiIHN0cm9rZS13aWR0aD0iMS4xNDMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg=='); diff --git a/static/ui-icons/UI/FilePrivate.svg b/static/ui-icons/UI/FilePrivate.svg index 360a14fb..da63acd9 100644 --- a/static/ui-icons/UI/FilePrivate.svg +++ b/static/ui-icons/UI/FilePrivate.svg @@ -1,3 +1,11 @@ - - + + + + + + + + + + diff --git a/static/ui-icons/UI/FilePublic.svg b/static/ui-icons/UI/FilePublic.svg index 4d9f8d96..bd4e98a3 100644 --- a/static/ui-icons/UI/FilePublic.svg +++ b/static/ui-icons/UI/FilePublic.svg @@ -1,3 +1,3 @@ - - + + diff --git a/static/ui-icons/UI/FileShared.svg b/static/ui-icons/UI/FileShared.svg index 724bfa16..508637cb 100644 --- a/static/ui-icons/UI/FileShared.svg +++ b/static/ui-icons/UI/FileShared.svg @@ -1,10 +1,4 @@ - - - - - - - - - + + + diff --git a/static/ui-icons/UI/Folder.svg b/static/ui-icons/UI/Folder.svg index f1e2660e..0f3643a7 100644 --- a/static/ui-icons/UI/Folder.svg +++ b/static/ui-icons/UI/Folder.svg @@ -1,9 +1,3 @@ - - - - Icons / UI / Folder - Created with Sketch. - - - - \ No newline at end of file + + + diff --git a/static/ui-icons/UI/FolderPrivate.svg b/static/ui-icons/UI/FolderPrivate.svg index 075406ea..fc589723 100644 --- a/static/ui-icons/UI/FolderPrivate.svg +++ b/static/ui-icons/UI/FolderPrivate.svg @@ -1,3 +1,15 @@ - - + + + + + + + + + + + + + + diff --git a/static/ui-icons/UI/FolderPublic.svg b/static/ui-icons/UI/FolderPublic.svg deleted file mode 100644 index e74671df..00000000 --- a/static/ui-icons/UI/FolderPublic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/static/ui-icons/UI/FolderShared.svg b/static/ui-icons/UI/FolderShared.svg deleted file mode 100644 index e0827acc..00000000 --- a/static/ui-icons/UI/FolderShared.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - From 090984deae9e2217d687294022e2d18d90cde13f Mon Sep 17 00:00:00 2001 From: Florentina Petcu Date: Fri, 30 Aug 2024 09:59:43 +0300 Subject: [PATCH 5/5] #1047 fix --- app/client/ui/DocMenu.ts | 7 +++---- app/client/ui/HomeLeftPane.ts | 2 +- app/gen-server/lib/homedb/HomeDBManager.ts | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/client/ui/DocMenu.ts b/app/client/ui/DocMenu.ts index 86bc85f8..19a36b5a 100644 --- a/app/client/ui/DocMenu.ts +++ b/app/client/ui/DocMenu.ts @@ -134,7 +134,7 @@ function createLoadedDocMenu(owner: IDisposableOwner, home: HomeModel) { hasFeaturedTemplates ? t("More Examples and Templates") : t("Examples and Templates") ) : page === 'trash' ? t("Trash") : - workspace && [css.docHeaderIcon(workspace.shareType === 'private' ? 'FolderPrivate' : 'Folder'), workspaceName(home.app, workspace)] + workspace && [css.docHeaderIcon(workspace.shareType === 'public' ? 'Folder' : 'FolderPrivate'), workspaceName(home.app, workspace)] ), testId('doc-header'), ) @@ -198,8 +198,7 @@ function buildAllDocsBlock( if (showIntro) { return null; } return css.docBlock( css.docBlockHeaderLink( - css.wsLeft( - css.wsLeft(css.docHeaderIcon(ws.shareType === 'private' ? 'FolderPrivate' : 'Folder'), + css.wsLeft(css.docHeaderIcon(ws.shareType === 'public' ? 'Folder' : 'FolderPrivate'), workspaceName(home.app, ws), ), @@ -276,7 +275,7 @@ function buildAllTemplates(home: HomeModel, templateWorkspaces: Observable, home: Hom // TODO: Introduce a "SwitchSelector" pattern to avoid the need for N computeds (and N // recalculations) to select one of N items. const isRenaming = computed((use) => use(renaming) === ws); - const iconName = ws.shareType === 'private' ? 'FolderPrivate' : 'Folder'; + const iconName = ws.shareType === 'public' ? 'Folder' : 'FolderPrivate'; return cssPageEntry( dom.autoDispose(isRenaming), dom.autoDispose(isTrivial), diff --git a/app/gen-server/lib/homedb/HomeDBManager.ts b/app/gen-server/lib/homedb/HomeDBManager.ts index 8ea63ab9..3879d912 100644 --- a/app/gen-server/lib/homedb/HomeDBManager.ts +++ b/app/gen-server/lib/homedb/HomeDBManager.ts @@ -703,9 +703,9 @@ export class HomeDBManager extends EventEmitter { roles.getWeakestRole(user.parentAccess, maxInheritedRole)); }); if (permissionDataUsers?.length > 1) { - ws.shareType = permissionDataUsers.find((user) => user.email !== EVERYONE_EMAIL && user.email !== ANONYMOUS_USER_EMAIL && user.id === scope.userId) - ? 'private' - : 'public'; + ws.shareType = permissionDataUsers.find((user) => user.email === EVERYONE_EMAIL || user.email === ANONYMOUS_USER_EMAIL || user.id !== scope.userId) + ? 'public' + : 'private'; for(const doc of ws.docs) { const permissionDataUsersDoc = this.unwrapQueryResult(