From bfaadfbb8c32d44d2a5572694bd71f280702daa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Wed, 25 Oct 2023 13:55:17 +0200 Subject: [PATCH 1/5] MOBILE-4362 modicon: Properly check if icon should be filtered --- .../mod/lti/services/handlers/module.ts | 14 --- .../mod/resource/services/handlers/module.ts | 9 -- .../mod/url/services/handlers/module.ts | 9 -- src/core/components/mod-icon/mod-icon.ts | 85 ++++++++++++++++--- .../course/services/module-delegate.ts | 2 + 5 files changed, 76 insertions(+), 43 deletions(-) diff --git a/src/addons/mod/lti/services/handlers/module.ts b/src/addons/mod/lti/services/handlers/module.ts index 574758a9094..70c8ce34a0c 100644 --- a/src/addons/mod/lti/services/handlers/module.ts +++ b/src/addons/mod/lti/services/handlers/module.ts @@ -22,7 +22,6 @@ import { AddonModLtiHelper } from '../lti-helper'; import { AddonModLtiIndexComponent } from '../../components/index'; import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler'; import { CoreCourse } from '@features/course/services/course'; -import { CoreSites } from '@services/sites'; /** * Handler to support LTI modules. @@ -87,19 +86,6 @@ export class AddonModLtiModuleHandlerService extends CoreModuleHandlerBase imple return module?.modicon ?? modicon ?? CoreCourse.getModuleIconSrc(this.modName); } - /** - * @inheritdoc - */ - iconIsShape(module?: CoreCourseModuleData | undefined, modicon?: string | undefined): boolean | undefined { - const iconUrl = module?.modicon ?? modicon; - - if (!iconUrl) { - return true; - } - - return iconUrl.startsWith(CoreSites.getRequiredCurrentSite().siteUrl); - } - } export const AddonModLtiModuleHandler = makeSingleton(AddonModLtiModuleHandlerService); diff --git a/src/addons/mod/resource/services/handlers/module.ts b/src/addons/mod/resource/services/handlers/module.ts index 55ba7518bf4..2ffc361f971 100644 --- a/src/addons/mod/resource/services/handlers/module.ts +++ b/src/addons/mod/resource/services/handlers/module.ts @@ -170,14 +170,5 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase return AddonModResourceIndexComponent; } - /** - * @inheritdoc - */ - iconIsShape(module?: CoreCourseModuleData | undefined, modicon?: string | undefined): boolean | undefined { - const iconUrl = module?.modicon ?? modicon; - - return !iconUrl?.startsWith('assets/img/files_legacy/') && !iconUrl?.endsWith('.png'); - } - } export const AddonModResourceModuleHandler = makeSingleton(AddonModResourceModuleHandlerService); diff --git a/src/addons/mod/url/services/handlers/module.ts b/src/addons/mod/url/services/handlers/module.ts index 02e9c557f51..a67325fdffa 100644 --- a/src/addons/mod/url/services/handlers/module.ts +++ b/src/addons/mod/url/services/handlers/module.ts @@ -218,15 +218,6 @@ export class AddonModUrlModuleHandlerService extends CoreModuleHandlerBase imple return this.shouldOpenLink(module); } - /** - * @inheritdoc - */ - iconIsShape(module?: CoreCourseModuleData | undefined, modicon?: string | undefined): boolean | undefined { - const iconUrl = module?.modicon ?? modicon; - - return !iconUrl?.startsWith('assets/img/files_legacy/') && !iconUrl?.endsWith('.png'); - } - /** * Log module viewed. */ diff --git a/src/core/components/mod-icon/mod-icon.ts b/src/core/components/mod-icon/mod-icon.ts index 1f4777f9a40..a51788f873a 100644 --- a/src/core/components/mod-icon/mod-icon.ts +++ b/src/core/components/mod-icon/mod-icon.ts @@ -17,6 +17,7 @@ import { Component, ElementRef, Input, OnChanges, OnInit, SimpleChange } from '@ import { CoreCourse } from '@features/course/services/course'; import { CoreCourseModuleDelegate } from '@features/course/services/module-delegate'; import { CoreSites } from '@services/sites'; +import { CoreUrlUtils } from '@services/utils/url'; const assetsPath = 'assets/img/'; const fallbackModName = 'external-tool'; @@ -54,12 +55,7 @@ export class CoreModIconComponent implements OnInit, OnChanges { async ngOnInit(): Promise { if (!this.modname && this.modicon) { // Guess module from the icon url. - const matches = this.modicon.match('/theme/image.php/[^/]+/([^/]+)/[-0-9]*/'); - this.modname = (matches && matches[1]) || ''; - - if (this.modname.startsWith('mod_')) { - this.modname = this.modname.substring(4); - } + this.modname = this.getComponentNameFromIconUrl(this.modicon); } this.modNameTranslated = CoreCourse.translateModuleName(this.modname, this.fallbackTranslation); @@ -105,16 +101,15 @@ export class CoreModIconComponent implements OnInit, OnChanges { !!this.modname && !!this.componentId && !this.isLocalUrl && - !this.icon.match('/theme/image.php/[^/]+/' + this.modname + '/[-0-9]*/'); + this.getComponentNameFromIconUrl(this.icon) != this.modname; - const iconIsShape = await CoreCourseModuleDelegate.moduleIconIsShape(this.modname, this.icon); - this.noFilter = iconIsShape === false; + this.noFilter = await this.getIconNoFilter(); } /** * Icon to load on error. */ - loadFallbackIcon(): void { + async loadFallbackIcon(): Promise { this.isLocalUrl = true; const moduleName = !this.modname || CoreCourse.CORE_MODULES.indexOf(this.modname) < 0 ? fallbackModName @@ -127,7 +122,75 @@ export class CoreModIconComponent implements OnInit, OnChanges { } this.icon = path + moduleName + '.svg'; - this.noFilter = false; + this.noFilter = await this.getIconNoFilter(); + } + + /** + * Returns if the icon does not need to be filtered. + * + * @returns wether the icon does not need to be filtered. + */ + protected async getIconNoFilter(): Promise { + // Earlier 4.0, icons were never filtered. + if (this.legacyIcon) { + return true; + } + + // No icon or local icon (not legacy), filter it. + if (!this.icon || this.isLocalUrl) { + return false; + } + + // If it's an Moodle Theme icon, check if filtericon is set and use it. + if (this.icon && CoreUrlUtils.isThemeImageUrl(this.icon)) { + const iconParams = CoreUrlUtils.extractUrlParams(this.icon); + if (iconParams['filtericon'] === '1') { + return false; + } + + // filtericon was introduced in 4.2 and backported to 4.1.3 and 4.0.8. + if (this.modname && !CoreSites.getCurrentSite()?.isVersionGreaterEqualThan(['4.0.8', '4.1.3', '4.2'])) { + // If version is prior to that, check if the url is a module icon and filter it. + if (this.getComponentNameFromIconUrl(this.icon) === this.modname) { + return false; + } + } + } + + // External icons, or non monologo, do not filter. + return true; + } + + /** + * Guesses the mod name form the url. + * + * @param iconUrl Icon url. + * @returns Guessed modname. + */ + protected getComponentNameFromIconUrl(iconUrl: string): string { + if (!CoreUrlUtils.isThemeImageUrl(this.icon)) { + // Cannot be guessed. + return ''; + } + + const iconParams = CoreUrlUtils.extractUrlParams(iconUrl); + let component = iconParams['component']; + + if (!component) { + const matches = iconUrl.match('/theme/image.php/[^/]+/([^/]+)/[-0-9]*/'); + component = (matches && matches[1]) || ''; + } + + // Some invalid components (others may be added later on). + if (component === 'core' || component === 'theme') { + return ''; + } + + if (component.startsWith('mod_')) { + component = component.substring(4); + } + + return component; } } diff --git a/src/core/features/course/services/module-delegate.ts b/src/core/features/course/services/module-delegate.ts index 920734e0140..dbd4b224d2a 100644 --- a/src/core/features/course/services/module-delegate.ts +++ b/src/core/features/course/services/module-delegate.ts @@ -93,6 +93,7 @@ export interface CoreCourseModuleHandler extends CoreDelegateHandler { * @param module Module to get the icon from. * @param modicon The mod icon string. * @returns Whether the icon should be treated as a shape. + * @deprecated since 4.3. Now it uses platform information. This function is not used anymore. */ iconIsShape?(module?: CoreCourseModuleData, modicon?: string): Promise | boolean | undefined; @@ -415,6 +416,7 @@ export class CoreCourseModuleDelegateService extends CoreDelegate { return await this.executeFunctionOnEnabled>(modname, 'iconIsShape', [module, modicon]); From 79300ba4084dbf42e5f905890a9a1149a30b0fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Wed, 25 Oct 2023 13:55:07 +0200 Subject: [PATCH 2/5] MOBILE-4362 url: Use isThemeImageUrl function when needed --- src/core/components/user-avatar/user-avatar.ts | 4 ++-- .../features/question/services/question-helper.ts | 3 ++- src/core/features/user/pages/about/about.ts | 3 ++- src/core/features/user/services/user.ts | 4 ++-- src/core/services/utils/url.ts | 11 ++++++++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/core/components/user-avatar/user-avatar.ts b/src/core/components/user-avatar/user-avatar.ts index 5013019e91b..cb9a3aadc42 100644 --- a/src/core/components/user-avatar/user-avatar.ts +++ b/src/core/components/user-avatar/user-avatar.ts @@ -20,8 +20,8 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events'; import { USER_PROFILE_PICTURE_UPDATED, CoreUserBasicData } from '@features/user/services/user'; import { CoreNavigator } from '@services/navigator'; import { CoreNetwork } from '@services/network'; -import { CoreUrl } from '@singletons/url'; import { CoreUserHelper } from '@features/user/services/user-helper'; +import { CoreUrlUtils } from '@services/utils/url'; /** * Component to display a "user avatar". @@ -111,7 +111,7 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { this.initials = CoreUserHelper.getUserInitials(this.user); } - if (this.initials && this.avatarUrl && CoreUrl.parse(this.avatarUrl)?.path?.startsWith('/theme/image.php')) { + if (this.initials && this.avatarUrl && CoreUrlUtils.isThemeImageUrl(this.avatarUrl)) { this.avatarUrl = undefined; } diff --git a/src/core/features/question/services/question-helper.ts b/src/core/features/question/services/question-helper.ts index 2880f5cd26e..aad1dd3b85a 100644 --- a/src/core/features/question/services/question-helper.ts +++ b/src/core/features/question/services/question-helper.ts @@ -27,6 +27,7 @@ import { makeSingleton, Translate } from '@singletons'; import { CoreQuestion, CoreQuestionProvider, CoreQuestionQuestionParsed, CoreQuestionsAnswers } from './question'; import { CoreQuestionDelegate } from './question-delegate'; import { CoreIcons } from '@singletons/icons'; +import { CoreUrlUtils } from '@services/utils/url'; /** * Service with some common functions to handle questions. @@ -678,7 +679,7 @@ export class CoreQuestionHelperProvider { return; } - if (fileUrl.indexOf('theme/image.php') > -1 && fileUrl.indexOf('flagged') > -1) { + if (CoreUrlUtils.isThemeImageUrl(fileUrl) && fileUrl.indexOf('flagged') > -1) { // Ignore flag images. return; } diff --git a/src/core/features/user/pages/about/about.ts b/src/core/features/user/pages/about/about.ts index bf18c29070e..a43734ce469 100644 --- a/src/core/features/user/pages/about/about.ts +++ b/src/core/features/user/pages/about/about.ts @@ -33,6 +33,7 @@ import { CoreSite } from '@classes/site'; import { CoreFileUploaderHelper } from '@features/fileuploader/services/fileuploader-helper'; import { CoreMimetypeUtils } from '@services/utils/mimetype'; import { Translate } from '@singletons'; +import { CoreUrlUtils } from '@services/utils/url'; /** * Page that displays info about a user. @@ -247,7 +248,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy { return 'undefined'; } - if (avatarUrl.startsWith(`${this.site?.siteUrl}/theme/image.php`)) { + if (CoreUrlUtils.isThemeImageUrl(avatarUrl, this.site?.siteUrl)) { return 'default'; } diff --git a/src/core/features/user/services/user.ts b/src/core/features/user/services/user.ts index 3cb7203eed0..c18a6034f03 100644 --- a/src/core/features/user/services/user.ts +++ b/src/core/features/user/services/user.ts @@ -27,7 +27,7 @@ import { CoreStatusWithWarningsWSResponse, CoreWSExternalWarning } from '@servic import { CoreError } from '@classes/errors/error'; import { USERS_TABLE_NAME, CoreUserDBRecord } from './database/user'; import { CoreUserHelper } from './user-helper'; -import { CoreUrl } from '@singletons/url'; +import { CoreUrlUtils } from '@services/utils/url'; const ROOT_CACHE_KEY = 'mmUser:'; @@ -671,7 +671,7 @@ export class CoreUserProvider { // Do not prefetch when initials are set and image is default. if ('firstname' in entry || 'lastname' in entry) { const initials = CoreUserHelper.getUserInitials(entry); - if (initials && imageUrl && CoreUrl.parse(imageUrl)?.path === '/theme/image.php') { + if (initials && imageUrl && CoreUrlUtils.isThemeImageUrl(imageUrl)) { return; } } diff --git a/src/core/services/utils/url.ts b/src/core/services/utils/url.ts index f04f7c922ea..149630ec620 100644 --- a/src/core/services/utils/url.ts +++ b/src/core/services/utils/url.ts @@ -493,11 +493,16 @@ export class CoreUrlUtilsProvider { /** * Returns if a URL is a theme image URL. * - * @param url The URL to test. + * @param imageUrl The URL to test. + * @param siteUrl The Site Url. * @returns Whether the URL is a theme image URL. */ - isThemeImageUrl(url: string): boolean { - return url?.indexOf('/theme/image.php') !== -1; + isThemeImageUrl(imageUrl: string, siteUrl?: string): boolean { + if (siteUrl) { + return imageUrl.startsWith(`${siteUrl}/theme/image.php`); + } + + return imageUrl?.indexOf('/theme/image.php') !== -1; } /** From 993dc19a857bc1f444c40b31bff4d582a7728d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Wed, 25 Oct 2023 15:02:24 +0200 Subject: [PATCH 3/5] MOBILE-4362 rating: Trim not trimmed versions --- src/core/features/rating/services/rating.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/features/rating/services/rating.ts b/src/core/features/rating/services/rating.ts index a607e75ea6a..69fca017c9e 100644 --- a/src/core/features/rating/services/rating.ts +++ b/src/core/features/rating/services/rating.ts @@ -256,7 +256,7 @@ export class CoreRatingProvider { const response = await site.read('core_rating_get_item_ratings', params, preSets); - if (!site.isVersionGreaterEqualThan([' 3.6.5', '3.7.1', '3.8'])) { + if (!site.isVersionGreaterEqualThan(['3.6.5', '3.7.1', '3.8'])) { // MDL-65042 We need to fetch profiles because the returned profile pictures are incorrect. const promises = response.ratings.map((rating: CoreRatingItemRating) => CoreUser.getProfile(rating.userid, courseId, true, site.id).then((user) => { @@ -407,7 +407,7 @@ export class CoreRatingProvider { const ratingsResults = await Promise.all(promises); - if (!site.isVersionGreaterEqualThan([' 3.6.5', '3.7.1', '3.8'])) { + if (!site.isVersionGreaterEqualThan(['3.6.5', '3.7.1', '3.8'])) { const ratings: CoreRatingItemRating[] = [].concat.apply([], ratingsResults); const userIds = ratings.map((rating) => rating.userid); From 68d9d6cdd7dd69475de02023384a2253c396a901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Wed, 25 Oct 2023 15:35:08 +0200 Subject: [PATCH 4/5] MOBILE-4362 icon: Improve icon filter handling --- .../components/activitymodules/activitymodules.scss | 8 +------- src/core/components/mod-icon/mod-icon.scss | 3 +-- src/core/features/grades/pages/course/course.scss | 4 +--- .../global-search-result/global-search-result.scss | 4 +--- src/theme/theme.dark.scss | 2 ++ src/theme/theme.light.scss | 2 ++ 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/addons/block/activitymodules/components/activitymodules/activitymodules.scss b/src/addons/block/activitymodules/components/activitymodules/activitymodules.scss index 6f1f7df99d6..c2aba2a65a5 100644 --- a/src/addons/block/activitymodules/components/activitymodules/activitymodules.scss +++ b/src/addons/block/activitymodules/components/activitymodules/activitymodules.scss @@ -1,13 +1,7 @@ :host { - --mod-icon-filter: brightness(0); - core-mod-icon { background: transparent; margin: 0; - --filter: var(--mod-icon-filter); + --filter: var(--module-icon-filter); } } - -:host-context(html.dark) { - --mod-icon-filter: brightness(0) invert(1); -} diff --git a/src/core/components/mod-icon/mod-icon.scss b/src/core/components/mod-icon/mod-icon.scss index d7a2d78b00a..0be4daed3c0 100644 --- a/src/core/components/mod-icon/mod-icon.scss +++ b/src/core/components/mod-icon/mod-icon.scss @@ -7,7 +7,6 @@ --icon-radius: var(--module-icon-radius, var(--radius-xs)); --margin-end: 0px; --margin-vertical: 0px; - --filter: brightness(0) invert(1); margin-top: var(--margin-vertical); margin-bottom: var(--margin-vertical); @@ -22,7 +21,7 @@ &.#{$type} { background-color: var(--activity#{$type}); img { - filter: var(--filter); + filter: var(--filter, brightness(0) invert(1)); } } } diff --git a/src/core/features/grades/pages/course/course.scss b/src/core/features/grades/pages/course/course.scss index 60ff2ab0a64..388f624e414 100644 --- a/src/core/features/grades/pages/course/course.scss +++ b/src/core/features/grades/pages/course/course.scss @@ -8,7 +8,6 @@ --even-cell-hover: var(--light); --icon-color: var(--gray-500); --border-color: var(--stroke); - --mod-icon-filter: brightness(0); .odd { --cell-background: var(--odd-cell-background); @@ -29,7 +28,6 @@ --even-cell-background: var(--gray-900); --even-cell-hover: var(--gray-700); --icon-color: var(--gray-200); - --mod-icon-filter: brightness(0) invert(1); } .core-grades-table { @@ -89,7 +87,7 @@ --padding: 0px; --size: 16px; background: transparent; - --filter: var(--mod-icon-filter); + --filter: var(--module-icon-filter); } diff --git a/src/core/features/search/components/global-search-result/global-search-result.scss b/src/core/features/search/components/global-search-result/global-search-result.scss index 824d1823c4c..ccfbe4d059b 100644 --- a/src/core/features/search/components/global-search-result/global-search-result.scss +++ b/src/core/features/search/components/global-search-result/global-search-result.scss @@ -4,7 +4,6 @@ --core-global-search-result-content-color: var(--gray-700); --core-global-search-result-context-color: var(--gray-600); --core-global-search-result-icon-size: 16px; - --mod-icon-filter: brightness(0); h3 { font-size: 16px; @@ -14,7 +13,7 @@ core-mod-icon { --size: var(--core-global-search-result-icon-size); - --filter: var(--mod-icon-filter); + --filter: var(--module-icon-filter); margin-inline-end: var(--spacing-2); margin-top: 0px; @@ -101,5 +100,4 @@ :host-context(html.dark) ion-item { --core-global-search-result-content-color: var(--gray-400); --core-global-search-result-context-color: var(--gray-500); - --mod-icon-filter: brightness(0) invert(1); } diff --git a/src/theme/theme.dark.scss b/src/theme/theme.dark.scss index c4d0def6c1a..2ee8044b2db 100644 --- a/src/theme/theme.dark.scss +++ b/src/theme/theme.dark.scss @@ -130,6 +130,8 @@ html.dark { --core-login-input-background: var(--core-login-background); --core-login-input-color: var(--core-login-text-color); + --module-icon-filter: brightness(0) invert(1); + --core-question-correct-color: var(--success-tint); --core-question-correct-color-bg: var(--success-shade); --core-question-incorrect-color: var(--danger); diff --git a/src/theme/theme.light.scss b/src/theme/theme.light.scss index cfe8b4574eb..2077ad9d78d 100644 --- a/src/theme/theme.light.scss +++ b/src/theme/theme.light.scss @@ -352,6 +352,8 @@ html { --core-messages-discussion-badge: var(--primary); --core-messages-discussion-badge-text: var(--white); + --module-icon-filter: brightness(0); + --addon-forum-avatar-size: var(--core-avatar-size); --addon-forum-border-color: var(--stroke); --addon-forum-highlight-color: var(--light); From 149720459f280d1e72e3cf3bcb1233897d15cecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Wed, 25 Oct 2023 16:36:52 +0200 Subject: [PATCH 5/5] MOBILE-4362 user: Fix user-initials size on toolbar --- .../messages/pages/discussion/discussion.html | 2 +- .../messages/pages/discussion/discussion.ts | 2 +- .../user-avatar/core-user-avatar.html | 11 ++-- .../components/user-avatar/user-avatar.scss | 58 ++++++++++-------- .../components/user-avatar/user-avatar.ts | 4 +- ...displayed-when-adding-a-new-account_13.png | Bin 32471 -> 31697 bytes .../user-menu-button/user-menu-button.scss | 9 +-- src/theme/theme.base.scss | 1 + 8 files changed, 46 insertions(+), 41 deletions(-) diff --git a/src/addons/messages/pages/discussion/discussion.html b/src/addons/messages/pages/discussion/discussion.html index 2e9ec079a82..775381ad496 100644 --- a/src/addons/messages/pages/discussion/discussion.html +++ b/src/addons/messages/pages/discussion/discussion.html @@ -6,7 +6,7 @@

+ onError="this.src='assets/img/group-avatar.svg'" core-external-content role="presentation" [siteId]="siteId"> diff --git a/src/addons/messages/pages/discussion/discussion.ts b/src/addons/messages/pages/discussion/discussion.ts index 307167767e8..74e817bc731 100644 --- a/src/addons/messages/pages/discussion/discussion.ts +++ b/src/addons/messages/pages/discussion/discussion.ts @@ -58,7 +58,6 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView @ViewChild(IonContent) content?: IonContent; @ViewChild(CoreInfiniteLoadingComponent) infinite?: CoreInfiniteLoadingComponent; - siteId: string; protected fetching = false; protected polling?: number; protected logger: CoreLogger; @@ -79,6 +78,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView conversation?: AddonMessagesConversationFormatted; // The conversation object (if it exists). userId?: number; // User ID you're talking to (only if group messaging not enabled or it's a new individual conversation). currentUserId: number; + siteId: string; title?: string; showInfo = false; conversationImage?: string; diff --git a/src/core/components/user-avatar/core-user-avatar.html b/src/core/components/user-avatar/core-user-avatar.html index e968f63c278..a63a6c3169b 100644 --- a/src/core/components/user-avatar/core-user-avatar.html +++ b/src/core/components/user-avatar/core-user-avatar.html @@ -1,9 +1,9 @@ - - +
- - + diff --git a/src/core/components/user-avatar/user-avatar.scss b/src/core/components/user-avatar/user-avatar.scss index d94845afb36..2b6e28aa9b6 100644 --- a/src/core/components/user-avatar/user-avatar.scss +++ b/src/core/components/user-avatar/user-avatar.scss @@ -4,40 +4,47 @@ position: relative; width: var(--core-avatar-size); height: var(--core-avatar-size); + padding: 0px; --contact-status-size: 14px; --margin-end-on-item: 8px; --margin-vertical-on-item: 8px; + --userpicture-padding: 0px; - img { + img.userpicture { border-radius: var(--core-avatar-radius); width: var(--core-avatar-size); height: var(--core-avatar-size); max-width: var(--core-avatar-size); max-height: var(--core-avatar-size); - } - img[alt] { - text-indent: -999999px; - white-space: nowrap; - overflow: hidden; - } - img[core-external-content]:not([src]), - img[core-external-content][src=""] { - visibility: visible; - display: inline-block; - position: relative; - &:after { - border-radius: var(--core-avatar-radius); - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: url('/assets/img/user-avatar.png'); - background-size: contain; - content: ""; + padding: var(--userpicture-padding); + &[alt] { + text-indent: -999999px; + white-space: nowrap; + overflow: hidden; + } + &:not([src]), + &[src=""] { + visibility: visible; + display: inline-block; + position: relative; + margin: var(--userpicture-padding); + width: calc(var(--core-avatar-size) - var(--userpicture-padding) - var(--userpicture-padding)); + height: calc(var(--core-avatar-size) - var(--userpicture-padding) - var(--userpicture-padding)); + &:after { + border-radius: var(--core-avatar-radius); + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: url('/assets/img/user-avatar.png'); + background-size: contain; + content: ""; + } } } + &.core-bar-button-image { padding: 0; width: var(--core-header-toolbar-button-image-size); @@ -74,9 +81,10 @@ border-radius: var(--core-avatar-radius); color: var(--gray-800); font-weight: normal; - width: var(--core-avatar-size); - height: var(--core-avatar-size); + width: calc(var(--core-avatar-size) - var(--userpicture-padding) - var(--userpicture-padding)); + height: calc(var(--core-avatar-size) - var(--userpicture-padding) - var(--userpicture-padding)); font-size: calc(var(--core-avatar-size)*0.3); + margin: var(--userpicture-padding); } &.large-avatar .userinitials { diff --git a/src/core/components/user-avatar/user-avatar.ts b/src/core/components/user-avatar/user-avatar.ts index cb9a3aadc42..bdb7bee4c50 100644 --- a/src/core/components/user-avatar/user-avatar.ts +++ b/src/core/components/user-avatar/user-avatar.ts @@ -78,7 +78,7 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { } /** - * Listen to changes. + * @inheritdoc */ ngOnChanges(changes: { [name: string]: SimpleChange }): void { // If something change, update the fields. @@ -166,7 +166,7 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { } /** - * Component destroyed. + * @inheritdoc */ ngOnDestroy(): void { this.pictureObserver.off(); diff --git a/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png b/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png index b5a0d1bc1145599610aeecb2de640a5b55c4191a..37d2871faa999273919068e735465861023b51d1 100644 GIT binary patch literal 31697 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 B#~%Oy literal 32471 zcmcG$1yt8-)F%2zP>@EDEM{NOw2f z{X6r`U31s{zL~q$omuOgqX&QWzVD7_Kl|B+swm0fVN+tGP$;}d^3rN36xtpNb)_5Y z8vMi@J%As6L331-lSJioQZJ)W^r%PD66$VW*CyPx)ivlaw>TSd8{gBj1W;iKl)a>% zjhn4O+3A#PrOA9sOI=WlRV(?tpq3u}w(>gb{M%1DOl4@SA*WY3=*Q^W*~SkE;@l~8 zFe##!Pu*#0V?Db>7RQAcYdt@Cwn!6Vph-(htEYq}IA0A330eBZl|)QLM1gkAiGhKE zvCdCPTG|YQygM``k2kD_J_nof@p=S#kzR# z4>2)uh%`e;^Rv%!aSh|+)N1J@OiWAzx;59yKHXwq$Pk2U%JtumkLy>zFDxp09UhMN z_{o#ZR9f66_!bR#VnJbHOc0Zc5}yvOW-c_)vl^ zXLOIR(*bVJxGh2G6i{xiw>`z18+Lhm)HUb+DY{g2Sdy9H+oGC-!vj8>VZWv(X=yn* zbd=cximK{rA`%h|BcrJwx{0$BYx9xvxAR~H(hUCcw|i+bRaid6!~_Qf1UOU<-nsE8 zx?&3Xh^2C3O3Jr*RD2)5v*_XicIJ%pIFwUA zeE4uaEk8fsKRi6#aNjgWh$4Hr??>a<7*%?DdRGOj^!MP0jtff|yJ=6pFtD&-nYO(1 zkBEqH@pN+HX$hwaUR$#X9D0=ja zs~r3IO=rANV@Jp1%0I(X{NLj2wr88M2naAyWo2c?=O_DMMB()a#1Leeg2Z!N5nG}_j zT442PBv*I0wzkw-e;F7UC23ajQRF+vidb%6mVLWeQ9`U zO7YkP1O)L;+uPgP#a1^vzdl5lAe>%a4t*5Glv}TsL%+^-$~*Y!52aho z%$VSnOM}@|lOC(={pnACj2~uw+s(9@#16Vb#c$V?AmaJq>sMS@;L6I|x;pX4pYNkF zL}H0u95L1$&ElZyU}gC(>$;EQ1#do0dwjRhhk#bNjzH|p&$RXZOno3`US6JGa4;s~ z0)Bod+X`?R)2SM70hcxMuV25i3g@C@;#*quXQ;FCSazcVui-T`g%UegtcSMUfA;Jd ziX=Q%%lukpb~bxJU?6f5x0#qIvkY(I-LxKjF%%l97mxE+Sbf_*qj3(bnExQzWBY-itmar=@PRoSYn#A2`3wWEI8n@v(sYEXJhQ z?vuw~1&B5_HinB{5aZJbzJ?nl*+^4f^ra!DfY^`IvKlU}Fu9$b9m?;|7k<-?@$#Pr zm3%GlC<19kJnA5#nwXe`gon$hsC+o^il7yF3jtBT>=oL=!h+jkyelCI$?Ht5+-L2d z*k9S(LntYo99o0}CKqyHBf-9kJjWj$vte?Qw)SiXhk=oi%dCx1TU-0%aZR+V&&gkr zmy^P0M{^NdySt5BGmSl|iezRM7L06cxUsRZOOw??ustfJb_QPs?5|XN9<~&{=#s;xXMIQg@J3Hh4;C)2w6QV0Zn0HR7#Zg?h(r(vx+lk}1zw@Fa`fw8Une$x z{#;|jJzK97e|ND<4zA!bX~5W9>OpsRcgMoPX*}Lt@M<}6;l!}V)>$BT(L z4`Lq=*LYXbV+DMOieiLMmWAaJlVArajh-HE;=n$WL9n?)LP}~?+S=TF9j^Z@=$zp) z=7)y<+GTz8It2yAs4b)d$ruiU*AQ`WSfdpPF(i(bQX*b2{P}_dF+uQo>i6$h>!ZcQ zZ}6znCS3McG$fd!kVnDM#wnfT)|@DO_+=*P=2qr1mYG|_+Gh6PmYA3k^Lmy0?(6Ak zV{l42i&HqNtFe!nZr{1{qSX6nCOF_R6Y-?yrbv8Isolg4vj?&F-FM8YbCn@(-hVYM zo~)H?C^#fXh%wWhEQMSvdU@uU%#a$NSmRy_>m=v3QV*??l9CDnAGezNQE1VH4WD$h z)6RJ>OUuS4i$3bt>)hH4U5iS|WI{vleGQZ5w>L*^`_i5e!^^g&>jNFSRyQUpCBsPB zUzbjLC@zj-2hg+W7Rke68o;aWWl<4{Q2d#imI))(I3fQtMGK$*RoK0ke!s$XGXbKA z{z6y0kSj*C0}!LP$%CpRWEEvJ5&ZD=Vw}hceyT zNFio0K1~ChK+!S*wE(JEH{7K0&GPtsk$UTX`A$yY*5-#gcx)uZKxJj+c%F#Gkt7N9&tJaGO;&q)7$vsHa3aaV zZ9ZBnNuAZXv(kBWFt4DXm!mt0(|eaRtXUp1U}G?WYNdSQPpVc;+>wf5d(Af)o44HB;zN($Pzk%`x%6H^;nE0_cpj|P zgRweaIhk*dK}+h-clPzYR7ka+tSUb^1RpXpH)r7HCZ4EpzE_xV_wHT6xh_bo9Fb{u z6BQ_x^u<_5M@J;>w6)2PS2$-jy?)b681tYpx@f z8~IR4Ny+J@B`iqEBAy4v5MEPhwPJsfoFuqHoV$ikt!+j5NA2}VFaIW&X-i#SA2Gyf z0jDLxgS8QK6q0F4*|d}5&3@*lD#lp7#O8lF`7ST-zI>`0E}bYfw?*e`b=K@&_v*`w z(>qLLR>NasTIo5`>hAUR^`j^ei%#lzoy}Ao09^k>MHRPFzJ&~^o6W)9h8=)PRST7i zpk3xMZcovm zH>tY{dAvFLBF3E5$v#fpa8Q~(9Kk`bW-KhMI{qoIl)_EObJ00cFZM)U3JD2ScUC^g z_@^{6k?!p5EJ=ms)k^=}wTVhHA|j&C_f4)qLb(+wzn2rN&DH`DiOXq8#q9a>nWOEw z;SyUa$j2B^YIKQRRw*nFX=6<0L8RP1YdyTjD>LU*D0@>9%^18{p@6N?v#%xaGIVrjY9fN<2M6&(iKyMn=Jq9Ji=1 z8fk54&TMr92xe>u=+1r>9T*6n^~q^~+zIjbm4pJ4jM>MsTBfxlc0pAm}+{eQ+ZB zNcsD=qda@-W2H@9A8ttz5)%4BWpM_174?>hE;cUi+3CT$;JqFFYLA<+eJucMP$*hj zTFd^QMDOXua%fI5-s%qSF8pcSnQt$S8VBRT43hMRxVPNTB_cutD@qkz^*Y{p-qhT@ zY%^Br%85$yK0O$_ z1=j$?MvNZTOwMDe61z-ILqkMM`ySlTq&rChF7}s9uA6BLwqG0OYMXbU7IMLb{0Sw` z5k!Bql{>ef(~=*%UI{(G`NPerR*1obL_}y%rGWp+Q4u~fHAMjG z$B!hpnVD1Iod|pdI1>ctD|!3I45YFnfJgA z=!vg2|3j&*r#CkrV{{Ewof8og6LWCF60Pw4`*&mTrK7dNF5{OkBLMp6HP|Qgc6K#1 zeCu@=5)^!PxG@2xXzN6!tNr1I!B;U~TD?-c=Jzy0NR3mq-9mMriwi8aMOp0pyMY%I zJ9~CVP%xC@`Od4FYv84@$TG)8e5H87Ajn^ge0-$D%u25z^7#GJl^o-22*>h4{Fg=M=pD)Lh{!Rzb0v2CCFmTg#W4s|Si`({-an zLGupsuY%6lGcz-Qg67j`9++X}7*@ai`IALJNC=%pm(m3i1On;79B1a{0%N%?J{_U^ zLafZvEylLDw^v~y+1lBWl$Vzel?zjQ`qWwTEpRW=fOrsm7r!wH)wIcUoj>_QhubHI zn-Nez-s0jSx)F+DQ0dZ~rBmosF&-5awcRPSNq_h5^BBEvSiObV{Ls^@8dvBs5e43Va(Io9TsxH)KX$L{I?s zUIcr1rIx+zw7$GJ2RB8BNPv;5c3n$L3nHIs$7im2jwUJTH$U8O4-O0zH`yF)ZM{Ma z{nP_UkAcbagxFY}6_1Uyw6s^RUj6JP?ry6;Q~muU5Qqhh62QrJo9d}q;*`I~mSz8%YH5+pHO9XWyj^5uH-@vdwe|X8 zsunZ+3jCWSAx4PwH!GUA-2D7Q3$|8Py330rVcbWh*^oa)*df_p^Yr=yMIP98nd>Gk zWQ+{wZ&{G+p%Q+;%{}w?uX-w{#|$~b{n4tk-jrrgO_wNrpjb+3B%dZAL8t!~&~q8zROK`Uh@C&O=u`!JEzyz!=Z$XiDd%* z4X~)k+hW!UFpPZT`Tz?9JO)(V;p(7i&p)}D?6prVI&Zo4mszz(TnIIFRa{ZezluX@ z44H3q$i>CQvgg}XC(^WLQ5->fSyb2BqDukUTRVmnsU)Rdo_WJkk{ zs+&ghPF80vZf*K1iWB3}`N}!{Fe~H9rK(Nx5TTEckATM>%eQaew$@9h8UPOhu4>gX z^4`zNlr{SZ)CHGCJ;UGmMbnwHk>Qg5oix^ zz6FBC^x`5W3OrG}$dU-59UxC718e05uGj;&+deFPIn@FlANk>fAFSVGxi=Ll*EhO4 zI-0&eiXx<;!6PFhgDu50sBr4pn1a;P(9rPe^1>Uz(!@-U#Q_7O)U|6Nb4(X@i8h81 zG3Ehsvze-)F*GzBE_jYJn57d4bO^$21kjV8c@U?jiAevR@cb<1d5x0qCjknQW{c-$ z6<~DbWbtIbpz?<`My0eb2 zl?!7&sTSU{YcmrV%6@7-l9tABM(m9(c2V?CHfB$c`v9N(2J%G$P8;|mq_mffpk>!DcaUjoYa?WO{F(ms>(`d;*tobPPzN)dK_U;(=OFvU zX~cmL9LPnG6Aw10IFF8wuz(vR1-=8}2J6Sh^g<#ca@Efv6(d}g#Ao>4SCFD5l2x#P z;6PZ0SAW}xkpBg=O9Cj0xg$|*%6RCDJUkPA$|$Q$@+s#?>BHjRkFgt-#bP*#J{Qpk z`*|^~IG0Ud2Wt##RxnLk)~-s9HaaCIiQhV-F46cb;GU7BN%kqusAIWMvb&9|A*Nju z8)9}t_L%GI80M;5(rf2W;05weJXvrlF5Yg9`8Nhgrjz6t*50b(vHNFBQTjVjI4UYh zgeREQENmxd))J5(cD_=Z3@gqB@lX0Fx3zVUfNKRk#1Xw&V{}*um%}TuU%q}!rg^@V z0+c$ZnfY@ZM=?V-uVSwOVk0S!is5;~Mt3*2X{eL|31`d5%6_w-Yx$s%O3r6P4m|;+ zWJLMta|Fl6Qb5K+fV9J3d4%L847;3C-R)K6M4Sl$Pk@Po?`h>MeH<#b)^b|zy$am1 z+xh+wI3-Z$c&OoWM`naj1pFg^`^Mht5CIej2-0TN5JMq6`^URar`OhSfgOPQBpH&v z+e{D{@}qwXuX@yLVn;FVhmG5O8>ogkH6M_R#~vWihY&oy*q`AONph*)Xi*Np2qAknai$-i*4qW zAy=78(Q104u$jp+q7#h0IwNMKmA^#Yg+hQ~Ol+SAUE4S4$$6sKUr-nb4Ffa71bL-$ z=reqFyZ*~{(`2?xi#}Sx#KJmIOE$c2v-Q1Hx|+t!@1DX2jzdbNY)$A<;G&@Wv-O96 zY8uMHw)S@9F@E1D)=oHqQzW$4evsX)Y8rlKS(mUuog~5 z@RWvz#vbAhst)Se?n>8}@q0j(0@;$Ie(v{8>|0#&RTPpq^$iRZ|32E|;W_*?bNaHj zVV{bh$n}EZ*&L_w(1yH|<dQ>bfZ=-gvFzl9{rsVs9G`9*;#oaHu00sdv}8jHh6~**2fUQj+CjWR|ji4fWEBt z$^f(qE(0MH2`x3qA;!QY1G<;9v0($8roQ~(<#<{0c{SADFJ8R(saMM3_ifNyP3<40 z6X?%aSGL{DFnY1lpPphn6QhaAAQk%1n>2IiO#PW>;7Jbj?4&zWTvO8}dR4yb z8oCD_w0!)a6N3~s0NDCkchio?9b+X4Lu(G0JcD&qCC3B$6ZJVLQX5>n~_B)8S zDAYn{d>AzG=%K;_W&l`%0ByFx<=Gq{KI90=$S{Fmq4PZ>0)~B5X9voMR_KltokEKU zsjhBGy;0BbNnHkp2kO{YM_VR;7Z#pDCYFDaeL^So?KiN~P5zB?Tk9*lWe)p-z1$C8 zt+za3)7wV}{5D!*r?XaTOH(-R zDQpA>oK5t-sK?=~LM2(QjRJ=-<+U5$`FS5QI+y2x4I~J0rYI9Y(Rqc1jgUR^ptI8v zFGPkz$|gQlBZFg7R#|B}Qt%vbbvH#TN0>rt1GJU$ypA1^DhO&P?HaF#9e@6yp}bG_ z>H&1zcU*YC;hC8a$Rpi>uTRY!<(13a{T|@Uq^84$G0k=3;1tZ z0O|ijK-lj{=VsPX*+C&|+>%(UO?{(i6P=>hQHio9+WnH%s*{>L&5pJN{xGZ8g*Jid}H zeIIVC$$Hump%JTa0CM2+gV9}GVNK0+h{L&C2jk5C~MyZrbn zK-}Qs=&Nh%HW}4fR(MPBQvzD^Zza|29jWF6(deg#=@GOtF)ip;bey~4( z{#=**i5-&VhNzpih`ZdYz^453GN<-sel9=1)>vEoz ztYnYDbS@W{jD!1wV>Lu;6bv>fbR0f^Q8cNS>w_kI#uGaq=!RqWXEZpjc$9Wul@R}Q zMilsvh)9*UkSB&gh?z_yb~4RXTr0hwnjevL5IUw)s9P0Jwl33j<9t-m*3n)vfZZh0 z==j}x1v^M>b8ZiR2|MV98h7aARrtAT^LO(bB*M{tIqDL(XG?S7z$gNsaFk5HoU_)j zN)D6OpNxjmjZm5)>PO#v=O#DumaL2>-Gli5h4~PQg-Kd;ehmdo>Cnfforhvp`YP_? z!sm0c%p5rQ0~*RmcQNg8Y`~K*d`K99Y!@KWej7?orLNma${-Ga%64?9(ELw8Obi*5 z($}98gWn$!BgKP4>P6SA2+{(82T!MedL%8q_dVf}_#se(KYsi;Cg6h@)SJoZ^Z4zdkc+vMzMd#O7a-Oz33DpCe-urNX5PwaYcfSsHB`zy+FszwAzem@|qOy_?` zBQ0O6fs7!ax70nyf#g8A(wT7n$vQ|M_kGUXUcY(s4B$>Qhb!p- z6J8YA!C!z>$bfN`1iY2{+h(*Vz0(@{0ni*q z7cY*MfMdIz@auaSGj!QC(`^Ijr-27T`2l8&9>zq0Rt9)v)u87Jsl95um@2lURbQ%UTEF2|sWDFXdPNhiQ)g zLFn~gzlomD2`z$lp5fxzjem0V-d zka-@`NsMX!+1d%ICk(^$xfF*Z99KzKFY`DjJ=hQns6Y3h@`sLqvfuBse{Sp!) ze|>^LcfJ_f{4B7GagNRPzY?=ezvG3NQS|q(8OS{tczJIEmi)J2RaQ~aFfl;`NTaLl z&7}dd3F^tvzMvNKq5k#j*PVmZ)YMz-?06v5dgbhlI0+OZi4yFWW5e^1FXk1LlptnE zhZ=7{3y+HG%Z(TOASLVX@Bg7Ab43q%+IyrKaxnIig@px$0#uy@1netU*P%x-z=?=m zo)LpE=IT{Ml!xer60H;g>WT~DCJ{iRU>Lk6NmiK*A=09kp|}|}=7{>$4J}8tz#IjGWcupC8P~KP1^^NI%Tq5gZS3W-4&6>-Zr$51mULyU#i8Y`u-P!Gc=mtbp zhm=}HQH!|ju!Bg(z+VvW30Hig#i)xU49`QFy4b>e`L4FtZA}>ARJ_1rozq*d9A{-} znNo|mP#c_`Lm9X&S;_&{aFcefrwQ-Y%PL(f+7n={kC;z*Dx8}nA1uc$9uOVJ|wKxFF&^`YG#oA9txTM?G`Vq2#G(10*09Ea4-T8O4<0<=I*2CYGClBm?Cp4?>WjyV_Uq?6RBrAbb=CHaSyM$f zjo41)nIn?w(etbi4PQU@q4`t&#VX=-=S#HZcp2IoOuQbuN+{>2atzUnD+pgcIYluB zUwsCc-0OTqQd|48^;GQ(x{k)bLoJLKXIK9&%p*m8Os>9+QYYiy^7)mM!wrq}!xMXg zKJL8dV@mqvKIqT#F%q7PZ|$_1Ap9Qis5Vo@mcCRmfVzI!qM)g@78@08o0fCT<^_9WbLhW zlWXG>lr#I+O>dEYxq`x{6L~WgK?AYx8a4F$!x{sfbGUl?)Xp9{dXpE(7kwk9s9W^(D2N_V#`3$-B$j~9xTb3n_+Ao+W2RRWl2wA4pEK6jT44P1bmQ4U z#|!NWGorY%N|WWcn=0BY;)EDk7cv(NV zjxDVX5%v7&obHaC+HT35+a6)wHF^F#l+H&#m;H35c$HAG3G3XAmgxz3*m>}K;GhaN zr7w?mIrmn2@Qi{uUMpAfX`eSnwEc2_-AUtZ|6qX!L!vuP#E}EvM|55BuWFAw)WJDOZK!-4&>2FbTn+X#=X&Q<^nksyeO^6C?*UD|^`Vpv9{pDBOGwo?(9-Ha6(TZYn zTE1dXm(A{tIF9m=-QbX5<(1-&C6i7|6YxHu9xbwYAGB*>y0BN8e>ikr_R%S|;jp5} z`Tz>wyn+(RCFb4xz6YLdzkj!!2UEc%jBZ(p7;i$U63imY5hF!X@agj!sS( z=;_6Ubh^j~Li|J*Qi<{kikg6ipG%Q3GVU9U7a$|cT|d#tP(L~~!@Y*Lgnp{)0>vZ! zD-|)&Hq7lrXF?;h{%nN%zL~KY)JM~QwW-*vzRWKC855j8I(G4cwS7?dvvnxev$eT| z?pi7f(%*)Vq+4#udRicfy7I5)sn(SfTr5SSeF2Jancvl?&l99}%^wt5G6e<&Jv`Z8 z1`dochQlaG`Lv|%cc*M`v^B~PGyMfH)dV%`W6^CX-*!WQRmtJlpI#iJ{X|N-G*W%f z(8rz}dmw1u&?wQx_7%rL)xrMAuv@=lPT0wQyV3Tq+7yD$mX;Tng^6K85gwiU3PrEz zm~VtmFZR)1N+%B533+pnims1Yz06q|Ob^s#|ALOv|GL`Ho^rjjxmoMTP;BEQTo3sK z#(?0uhH>f=K0fl{T7p@Q+khUgpmuh4xXOHAf||uz?^lF%U&d8xYatXW&chwxp}twW zBkTSMsKsF;$WVTjdZsAxVBf9*=(FVPuguifO3C?N>=RU+xJstH*}ruow7cRt4$uBh zlUNVeyx~&@sqUhVeHtUaJ?XO9h@NO>0IRC1s=(ZC?eEJ-Ncfi&+r6`rj;XBnX0M`p z0PSQ7`6{QYkF;_SA|bChzrN_hFBLLU$y7Cy<4D=W&! zkEPqXy5tI5E4ad3M?~d4L-?|Ft&GM-MjE;fFSE^CTPs}ubaW)C-)$GhToiP6?j0Q+ zriaFhrsgNhiGn*yEng*{b}+cNuAK1zNYKkmiZ>Aqy!*k#^0{wQcZQ(HWnn}IX2=xk1Y+WLqMz0#@vjUf!>a9tOdwvOMjz>5WK7H^dB06eK1J-Hm}E4QP;3h;aP z4j1L8ZG-LUdFrsL*ADDuW$gE*+Hf_UJs+*Tk%IgD!N;{xp&cD>-^kj84YaD;V5b&X z20XLUrMwZvF;|Kn?DV^|n6Hyd%%i5fqQWZBNK*0&)L!?T^|$RE`T6++`?Cw)9{NyL zQWACZuC1^4{OZDtKl8f(fRiq)R{Jfws$5U4a*yMC9P=)gVvX3Z4rIUtzV6`+7iXTr zM?yeJ{EWQk=bWg{e)U5KESA$i<156~D;$v@tNP>YUtYea$+J6WsuFe(==>TcwMkYH z6DQZaXcD025r5Cj#N_=#L7D&=6@eTk=52$Tw>_NrxmyAt+j>tk$|$&it6OaOrb#h| z>tLSjo<^FYhy{<83SG~Su7*@Yk>SzdB>R+WqvtD<6NW(zl4wjvm%R5@s|SO3rf6v+ zf9`3z+cQ0{nutEJiFUBjNu&d!UbQi>XEn&~=3r=BHv;sisBn^&@;O{x53wyOtUraY zC&)Qd-8V)xG&bI&#_oO>OGZLM4_XEgJ%JjWZ&dTdacbV@Qi8Qcuaef?{aA2}ovlN) ztDM8Zao54Vt^vEd6&bP(v8T*;6K%A}O4W+?X1pAYoZNV2?%2BT z{S}stDPI+nbHSpQVZ%o_AtJuCcq^4jb`yfpf}Fl$bhq^@UIUjr-P82MQz;rbOEAKj z{@B8;-2oa`->u<39D+W&hRGVupw0ccuhcY=@$A9E%yO0MljoR(p^p{zuBgjsi0aL! z&;1P%0+HbuZJNbLK{3C!ZXoH4jY_^P=WyhnitzGkoR(3ditHvv>F?!%*7lZwfc9yX zr_Ni~LXfOkS55&#uDkB+K`VTSHc?+gYBy0HcylUOYBseUh>5!MQ-W9bS6rLoYeP!1 z!z!99UH4ljr|_pYs!vtY`vpAK1W4cbgjQ8~2?+ML07d$JygIn*%xmq~R*Xd9>Vx)U zW0#G7A_#g7%}t6Q+8y)mG2F;s4xJo(#_ za)}4S6#1C8x}|KpQo23vN5>_N=a>Y9`=?xOjt*O`iN2 zR%O~wWL!l$4Ye2V-zcBI^{;6Bt&#Y_Dy!&k%$bM;7!7@}hDoEt z6z?yCqjp=&s?lAV?jBC-@1nSV5c%Fh1B4Axa3-qRXnJShpI!8jgg3J|%|O_ifCl~! z>AOcyp2z^PUt&9!*0;m^cg`gG`U(^hg3b!^@^zpyakdkD_Y2IH13FW?6NGC3T7B@x z0it(wc!*aKD= zduwk*B2Pa!&9fpf@8eMGsu!V<^Ikm!#GZ81;0L?uOTvE(D4DY(xHY};N=gz6iF-Kf@d%jq` zP;4?RvhJ(ss3^7E2uBZ&m_9G3o16G>cWdWWaB=ZX-4e@d<@$!Rk=!q1$u_=!pRU%~ zMWGr4uGQ~OEzY!i=F(X_dltZNNE4PV)WGG~DF;9R$zr%T9H&H5-s*b^PM59^^q&{o z^x!sL!8Gj~q-p#8sWHCS_;6SGMfvVBjC!X|nl#FIQFe0Y%r5$sTHHP_! zhVNNuV~hOo(q*8G%%j^ie-fWx+Td{m2WNjiF*p~L@N-1 zE)gtj4qB;qH2t986j)hV>C&Ok8f{fs!h13z2_n~qjx1RX_rZ|hAGmix{vZ2gWdEq{kvt?A}rqAW2g z>S?NGKp)2D4~l-daLVRfRb5|K-A zQHfDV9o0F$l<7K0sEmwqNPbAqa^2cA-sD2~--*0HR@(mO4@S6i!ndEr2muxQ6(%tx zEGmc*vO!wb|36XD7E$Y2h{Noil^s$$l1T}21Q3dPmS>8sI~p``}YkWQQMit#+Us-)I1>h zcR26CmH(P~`hUzN`qd{&aq4O_!JBd%O=2(ezBS(*?=FaqF$}v$NTfPX&XXkO@iDCW zG$P4fN(*=8Frc0+?Z={)hb$A&R;`oga`(%Ol&?86e6up|<~TeGdt^D@eG@*2qT_N7 z_M^V*2RkKyR>V zcgEN#%<*nW2(Dk@f6?CgpR{x?AAug9oZpW6#*G^aYdCm#&CvcL1feoeHx?>F=M-n{ zItcG2hp@_sjQQI)5G7?7z64GL+WKfHptBl=h7NVqRXK5&y8J`Y?=Rby_{$0k! zu4ayY=+crUP+fx|#`ygoI1WJ`nxYuPai>D0Gf^x;Gh0_fk;3xgnNwl z?-SaN7D<2(Gv8+90nCQ2UjWB>6=tiXf$!d)4da{z73+W+$ml&zyu7^;arN}{w1q*m zLM9O!4GQEdKpC6ooz;Tw`~mvONTJ1cJtm#;Y*Q#QJ%O;<$Pf~U8BuRrOhnK3o>rZ1 zRDyI>y4L3$Q7V4_@q;R>2BuO4ppXVxU(d1o|9BQA48gKq-oG^=h)~=HySUTw0_P0BXUtvC`ar50C-Q!t9q6>;so& zH~m*3S0xKyeSK;}_xYPeFQ;fPE-pa#A`0qg7;i;Hk;r6-;4+LB27@f}2C&|A-g`ta zwD1m8>&Bo*6o4hnb3OopEef=NTrO+c@rfX?7hAQ8&TPThgYNz_&?p}LjZ#KLc+Y%I zOl~nLC%l6|HV2JlMD4vXRT}~Q=qo7McjW${vzn>gtU*Vy8P!n3CbxnpJJ09b1GKhC zt5v(e>``cyUXi80MBp_v6oy0{hy#%MOPB&fp*Zx*{NUhLsQcig4G0UMGnv09mmxvnc@@$s?WCh07)?pCFO}Y|9M)#mD5^!E2 zd4o$4KqKTb4NYONWyFjPy|!gwN$9N68EQiUFbz66IXQpPkswm3<_^)rOhQ6JFxNm| zU*Yjr&&mGJejHd=kQp~&w=ERthS>5i;ZbGoyG$^khz8RXPz5sHzKsDT3rNwBk{J|d zh}M@{*o_bwRY6qWS~Mm_L5`(b>*MXTK6-PpD-ly=@0O6)QC`X7 zEfD*HsvX3)pqBd2Bt7@|54i*c$U#QS;pnTPLMSOEbuXHXNc9OH=)-T{zHR9X-kosz z%bwTjQ)O!E9rHhNL7*W_0vi-OwVSHJi&h8%;Pgpg1KjtgQLQK?pG^qpgJwX5P>*Qw zW@o=?9fP`C28Ni3$jJV+wrBZeO$J}z&||^2+|54+FLD_vHnp8IbrcKvK*MN zaj+R*^k~RMy#%0thqRPXC>RA)cq=s91IY=2Qh`!;TM=Q0EIk6kk>HA3!|~cjc725I$Uf`2J!DYs0_Wfo5{$z&EIv} zoc(sIO6@dOlD_0kPEJn67dio^Mp*bvM=MvImm>+i4%8g^uA7GOTr1#Aw}gbK;0y-r z+F`oudJz{F7vge!FlGbQfr6NB38*5yV4zNL?DmaNJ{H(YYUmaSo`MVLtuQ*nN5I}o zI5-rzj3Hw)wTYlt2T3TopwrKiOkoZVCFTeqi_Tzlbhz4+U*_(^q5rN00DW9AjPP1^ z@q-`%X%)Vs;D(8|_rt^5`V~&;YKzBi6ktx~_n8?|900?qX$30+aXw<`W%tw`M$Cf= z==j`3GQY_>ms|7Ljgy0(vhMB8dqrb${4d`lt^mOg(M*_FS-pkH7{)tyu7ajUPC^20 zp(`;0W=E6ZUl?Pkhe5(T&qKTardOxtw;LB%Qo@IMXy@P7(3(X0vtXFtK=_R~X9IsU;if;1~X7^H3P;#_5IhO+-0B)CcWa{XxTrAU3;Nf-fLxs zLxX}~iVNNlZwo0gNG)9&4z33V1z}ivrk%4E1BEE-;W^}7&oEHNFh>fNMI%fQp`k#O z+SHq>xD8{J(JYxTgMjo10b>S>dY>4BE|narb7Tw}$R~W7Ef|O~-Cr3X7k0a^lpqXD z?NM@*^uzG(ZWZ88UitInmy7)nAf8QKJd@HY!US~LCq@$RTF zDE(kI5c$USl5)pI$!yJ(ms2%Jmsm5`FdW2v(WCpy(tAcckV+uxgBZ*j-35BUe;ppe z*kVTf_bi=TIYo4T!s~XCzZpUz5j|(B2B-AeK5O*B7Y(tQ34Uhv^k?cd&`_d=>5chL z1z*E$M+xaJH6UbK-qU0nWYVDE_@OJ4iZ=)d<|YTz+}xaLUhL*clWsWW$oz#-nmVif zY}0i}4F*3l6QEn#3hE##KAY}qh;rR#I8WloJk5<8SD?nR69vJ0$ouzvPR{qj(W>82 zhj#lm-{roL;IX9(K$jMe9gF)gSf~8(x%;8t^lclWa?NyI#Qq>ISbZjxb)oY~K zoYikKiZrg1^#@#2?D4?spES()wy%jMF;4j8gUIQF)y;@kEx*i|Vq-hZ{)y^3-H+3H z;P`3L+3-io@ZsUZ03rv2vndl>7SgtZH0c3;q68-6a(2Gs+(y<#(O%|Icq-_0ZLf z#V>0LbfOO3M^|^#g&Pc}P7apYe>6rG6|j?r9e5ce6z!s8MTld!wU(TCZ+{w0igdzChic>jq%0=D&N_DIIR#W~`8Ce;hZqLsz{M_WKHY*&dkU2(; zB2UT6?@7%T64f+Kxwkbs!+4YR(mWA67*9jfToyQi?98F}28ksszL)-itkirw=~C#Z z8^Ii|^v#lu{oTV$z08T;k^KeLhPk50YhiiwLxTgWQC+Ug#a^gTsU-Bf>N*||?N_YMVPb_*h_lagcIJKhjk7mfI1-be8xJoLB>Sh72RWm%VB zybyHm__Z!d;CIAz7axTpP71>Ru98c8{JTT`<)J$psiJ=C{_@1VoSYMt!P}E#G~!NJ zPDx>TW9xV0vld#wI z_1KRTzWU*aPIe9n8Jh?@`^@~}{DQQBkNLHsH1v21fBf$s`erO0MfQ#Bhk}LT@t=P$ zefe1E&+@yx|J`Yw7z}f@ z40B7zJ`vFSfZxQ6Ki4Q0J@zW4q%!y?ZiCn7EXjXmgt1oYx0u&=$wc2{jlvyeVV_rz z4;3&!=z@!pjQLJ~C|MuAiS;!71+G_XPM7+{pNsD?wTr6`>%;pxVLPSk!>NsOtp6B_ z`ZdwR4OTWz%e$PlZ_B*9hUWhS@KMbBYLxKL9vCF9D_J2Y2afr(BqwKp%Q|-`^LNI| z_vop?a_}-rN~$PLc*reyNXEZ@V|LAoXE7%`Q(5;v?qi92WHF)>`{zh$D}?W-CB#Rkqn)2HIlF618QQ&Xc`x{A zernBH^TNIrUw$R{Ix18KJjoBt|APejQ%xV;IPTPW^ogLU%?OX$l7nJxwm%8PaK1F6 zYLOqBO|vvJl_*7d7UmAG4i(@>>@cN0{=;g=+&bk; z8>c(p&-RLnToTdmhiOX*k6$FS?{yEl2_UO^p(H119;uhT{paNqMa2#_j~|Ua8;&Rg z9iCg0344-Ts}-gZCr$ct^b(hLY#q-_aA`A5ITlcS51wzh&w$z3z|_O;f>M zwok(`E9MDM|$Zh6WY6Nfl}k^+dq5eBgf{V za^o|bi{F6XBvmk#C{Ko}Kh=Yn;or$Jc%NWmWA`}D`=zkHT?C~*t-JRxoNZ&k1xaIX z`8pblI|Ex=r2?yJdb06Lie$$uTAqhPNp$mpx;sr9g(oFiR<3|&C7qy!X^mwLf`rVqQ=GX&V{0=ml}`<_IZ~68CHD7~Mr=yz0$<6=h3) z@IKRv9B#T3(Ms&*Ry~=Qy=|%K(ok9jE)B}8YV%^<=Y=C?rDNy>^gW}x!>Pr;>|{Sv z(fzfi(%*4=dg+^Zc~|_NK1a;B-T&3zcSbeUZCyt!s62}05tOO|q9CBsBvi2?0@5`! z73mOK=uPa3fQAmzksgo^p{a-{kxr-yNQs1wbP~$9&U5dN_xK2%4UT*@9GS9~!( z*}Cmb&qAyb=9QQ{_OmG;h!2`XIFA+YLv)i6;2M~E}uD?4YtfkTx)F8 z=TekBk?=5gqDw&85O%{o%K3Kz$5_5l+}f|f()JS9-(eY*=~We9nnP8Ak8`=mv!_<7 zY24}ikBitwr+DTid4L^`gSUFLvG}9)D4n{Qf=9 z7aqcEON;VWyXN2@PJH>YS%igO=VTKa`frX&98F4}>4Vp-`PO_Y%%|)vaV^9U0%>Lh zgFe9<@0~of7Z?%6U0&AF>g^GR8!8R^d5(6k!8ZMpY^#6m+H;u0(LbInvQ{T3x+L3@ zUD#$-t-XhY+NJ5A)vHbw^F6>`b1bM^_%43#?);3rV|Sml#I6K0&$g95-rt7; z_kXR2OC$z9IX1+%ew-e+gVkeh`;8A>91&{Y=HM1N6Qp#4qKcJ&3c+pZ?C}SNXYs&H56U0`>1}dvHnHj|O%b z1W8eB^@p%SM`!waf91b3Wg~MtMhquqbkgsMe-u zm9pN2zl#KmSVJHbxgf3Iojoq5uvv+#%a_3He(LuvxsTe|bS3aH7Na9zY_rI^WNbGku}e%`ll zY2>jr&hArEo$yYTvO`>yA?&G#zDwm{ob(DWultubCi81vPx>O)ZM3)hf$U?d=W10# z+5n53RHv(ptJ~D4Kg?pXfF)6cNt9-ac{fDFb-24`GinlLZix zQ0W}L8eZj-q|24mCzTX}LC(aaT|`X0K%AJ@yO_ABjG&s84fpsb;vR4*=1)E6>O86c zil~-FKmLiUndyZm>!q>WFg~BOKNH+iNmTe1`Hn=Wyj;{rp}p|$=c-#{riV<~rfp@v zP^>=~>hny@c{e;p=FRTfTlK-x)+cq8)rqBYecg!F{)AJ=d+4Q)jmC%aF8}KthI|Gl z4jOyyc#Z{zq=|@%>VnNx^TmX!lNFos^bzCsK2y|$e3&?-CuU6`TXTTuMl z%#Z#!SQZr?p84_PZPxufH?Az9t4jw$n?<@3<uFp zHui>t_Ifx#|1gG5KM-Z=odrF6sjPgSDv;un{X|7XaD#p;^m20yrnSb2}UX1OsQpd2uR%z>3+Fn6&Gy0Pl3wDBi2pmU{WMG^TGVhRE7Z-Q#j zL(z83>ir3|SZTXRFs4vY8+5M*s|K5?o&rpjr*lx@Z28E36Q|ER=hu9jh|$nel7+ZQ zf>d80<{6N4iRM@7WF&ZJYsybc znfOeX^i_GeeqBkes`_VTfVoS$R$`v6rrcFB8Pd!$^M?J%tI)J?UEEB?*o5-df^rG; zt;K`SSD+tqcZ!RxmzzRF#l(;NHg zW6BD>LUEM_2M`lCvVNcg!E2#O)@{0^djh%Otc-;0oIK)9@KCfb)v{Aw0kS}aT@^ms z|4)$F4clHCU(+n@8K-Hcka{G&*D8^GmD40`)^|*vI8{i(Y{(_M?(SA)kLMY4x;TnM zZzs4xq3&nlqo?2Ia`F6;-8kIt#Fh-`5j6ufOglIe8Bu4U)4UT*=$3vxVV?jTpKRhm z{eZ_GqWa8M9}Hdat|ksW=PnM|@;`Fq$asXIY1?}_*Tt`gwdimayQfwv2RAgYUcJf) z-CAWQm{w!Dja`HJyhaa#XVJ~UwPugS2IWm{{36g=wqQNe)cF19&rWdfTLdE;S)b~f z8dJxbwRG{yslwDU+VL76Klo7N6)d_JjuM!8%&JzHpwlB0O=Oc6h(18#H*q8|ydG@QdgYS^E^Y9hq zA|c1njxaPc%SS%7wA282*H+0Eh1Be95#-mJ8Ir>-C%E>%xQtvJWOxa%eu9rlUIT!) z-L2as1Dp#d3L5x2)FrCZ;F9&h=&A_JqNZPtG2ljVB(XC3)5Dsr03R=XVUw_ijw0f8 zX@4<1w4eM58x+T?Ki8-(Br$xN$AH&$cBR#OK`tp9)y4hO-e3r)r>&i=ytUTiJxM6T zQJfpb^D1X_%n!}>J?klU+Y{I6tFiJ+&G}lH&s?{_i{;7IKtEoF<8FYGaJwPDgU%jn z#^Sg)I5RD6%m$b>@VMRz+CZGF0H4T{OKnAlLeVYx~ z@}bdaS>O(ePXqfpJ7_Fo!2BhH=coY~*m}bwAmzuvnYcDdp926^Q6{5tT3#hfjl7u<&R>K2Zksl;ZyaE1>2M3l; zU4H&oo0k84Saf55l~>Vzo{LGqjoL!2z^4JntTkJ`l8~L9jS-XJx*o#QCJ?G{XcYzC ze-~gcxB@#tRfzn|MKujE=E{JN7W7!*lEwt}K=cV=Bo%I*)!)5r(7zIzgOUR_7ZQPl zyA!AEF%nvs_EI_Zj=u!l!_q?HmcoGphNfO0WU!P>uyv!uV`0DI^WrPpjBV84^vAOP z${YT*kd&?a*RJ~q1jRv}&OtUX%q~sGR5KTKEe%Muyu5)b*Iy8qx{Q{(Yd7_QOxxS< zRt>bKS~~=TzNsZ780qNBI+d%G_1e#SS7U$^Qd*z8tgol{9dh*a^iv0_Ail*w6=L*e zXb@J7cJ~$pWo>`|8dHc}pS-{{L>~!Q=*`uUR3)vC;I(ucwxxYfa|D5@P=}7>ZXk99 zrGqbzjgBH)6p=BJ;|3Aj4(K;7Wq;qeF@8mF+)vsuDox3kv%UA&&}hBHd$&0eP{p>7-Y_N{J#Ov5^zEzP2bv z4wAr2N7`=s82_O+j3n2W#p#u4D&?%9AGk-x-F-+sQp;`?#*B3PP@ZNf-j1?b=zf+T z9ei-SwJjOM--|(J>#7hv>G0o507t*YX!7}UrEkbf{$kHT9YF<#VI!>D9X1^ zyb&zVIMFx%W<{mp}Yd?PT|1YU5PEi07emsL=`rL9>Sfwdv zK8IdMlcl94BvQn=(G2zUc6>>N@5Xn|h>x7nO}B=%!I-OKU#jOcgM~JUR~LUZX$(UJ zd_QsS3!5}>?i~G38gd{2rdd3cYU(3oWx;y% zzvp8uDoG&-a}Spz&%Ytq=5`fYkiK9;|HebG=l}|O3BHomG$%JVT;95A`pPOP&A48#_+bpAhn2 zBbgy7kr+`ocxEVIW74e2Gyn{1EJ`p&xNY1J)CHxvwFbb}6*ld#PZ={KA@Z8QQ6f<{ zmbVf*H>u7IyiKNd1ZiZmMuHS<%AMf6n!V60pMRJBtfOlU@iOKGNlgm0UP-W)`-Dx1Ec8T)s+XK|3G8`qjJJ>wD&wd6jY( z8VSPiMA;i;fW8_CWQk#Zl_(N%@6e{r6bkkG31nC${8Ro~Qf-~khQTQgyk8XtPW--U=dz|Uin zJz({Tc=e(V$duIZi}22I$fXR_)LtRkltj&{s+Q7Pnz6W{-Uz)Qa)mnUZwPKT-eBZh zVnO2YgZ~mCzQ>jLen>w*irCLuSXj(6H<0_>TrR7v*W=H!DKvw<3tKrYvoW}}kq98l zVxL|9IP70t!1@aC$pXEKY@J)H4a&G*pSBT?DR#R#C)&#huBkL$-(yB|=-Fh+!H$lO?b{p`kO_mhxVVU0^D`xr^|JOa z25PHA8%cFxPiHkPx^vchA}eFDe{jb;yUxBcd39v!Rn^p;4=?VS}n~fQd+76IE&=%Ifo#vdFY1PGZ9KLn?WFg+zt z9f6!8(HhhNM0n0E3hv-G*T(F?(F#e;ijlD3-tT}ZcyKjNc?HQvz@MTGq&Znd&1iKb zjVN*%MgrDBw3;}M$AsZN?=bgNGpPP#emD1S=C8`)HD9F)V{rhjysAyT6!_LQ{NV=# zTYBSV-X6c`Afb)H=&CEXV-^f@N_t(2AqnLOcq1uYvud0F{I9u}ZcLeS{**@sWr_hDnL2SDj`uFc$BVOJZU0FY;>Nok< zR%+X5jyvR`-d1_rrK)&m?x@ck*W5Mwt`{D30b`HKzdLCO2^{5pUr*PqauHw0|AD4- z6za>%&JC=+Buj6P<h zq)^O5q-;Z3zqs?Q`|^sNLxA~Ok9A`@VD~DIuh{y%V4HNxf58n&n5yGH_ry{nbB#~q z6Zgmzp=7b{1WeKmywf&H7YiYIO!Mu#Kvs92e+Y*L;f%TXZWOAxiRMBY$9?rRo(i1#NTMx& zH9mksS;vv4-*p^hHcla{hJFR0?GJ8O*c6+FZl}f}B*!syE(vhUAF~UjF}sarM^HD( zC?#qs)oQuNiTyS=-;WEbPkBFeOW&aTtMO43>Sb<9_BAiL-t&WK{nrcVMLsXN>>S72 z0_JdDir|%05`ppj8g0z7!OfS#MgmglGLxO})ru1eb>QLP=emjhN-Ii31227lrAb9^ z3|de7h{q5N1R9s710P!0Z_Y0-TWmMpT}834FvjYWJ4?r;P=NpGOP9F#C^V9O*mirJ z^{=g^c96l2O)#S)*>tU9TJZ=9Mg5j65CN~5@VJ%lo+x@EP+ToSUphNGOE+;qahQ0V z5A|p!rH$5A^W;TDR2X$8vf{*jcnvo6I$WXlwQIzA*TRRv=FVOy)X&DTg)F$urG3H3 z1y_Fid09xRb>EQ)a&~TB1lbnQmfNu%Co<~9Gdd1-*Mp`NC(V~{2*kK}+4W%YGGprW*5dMkPF(!{%*MJcNkO*Ygc8!0IwE-mF| zwGWMSU(5Kq*B6#*m=mR1Gewson^)UWt$U$t7Kk7h-X%1Wnl!)59lmfT&v)?B2RYt} zn5fIq@QPiqb`#brfXe8r+`9dsxp#oWd#&aP`qXDC9QlLegc*AwlHFOWmG2&(VG?Mn ztuFw4>(4jE?)ogSTypbjw6SHCCe&GHkBUkvUxgyy7ar6jchD$=O_{{Cf<3QCXJ4EPq#Lzeyfq;;l22saC5`RUZ zwqXQ1N#7xtjo8^T2e)bxz$)C5`QC527gOQ#0c4qJkX~qI#Jk5L?*cex$FdicC(>>c zdhsreXJQq+3OAXxTa{Pu0=m@!+VXq=sB{rT4Yx!#oJ`zWx4OrKfxs>ITG@g5Bbqr? z1ZYl5^nfTz#TMFvv*DZ<^{3u9S*nRd4Ctvl?^?wlaZW^v*JIba-wc8y{|s?bJlDQ;sW&R5fU&1Bi zfNGM2bVKSM9fAW4VxTWQ=PCK*Y|tiQl!4D-9}=$(7oz>OA5^ z_NN-*_fC)V%7^!==|B_0B2qHI2!{!709s}UXClm0&MNKWMeE@g;dG9P^@SF89>)?) z$%Fd6OXD5ap}N4Q!QhWE^0ycgh}}LiQ)fAXxVX4L<$4ww&hxcqs7IX_RQ+IPMb4ag zm!>J3o`6>=yAvB3BK@U8thcw9f%tfXqSz0rJK%)h_EU?`nnG<7q%sHx76CQg4A$IR9qM`48W6uUXl?78TIl@e0w`)pr6_U5?q-n z_mR3sg3|-lM&Q)c4p4qF$c=LVOhoW{%%A7b?P9%IfqJC*(>mN;=FFZ&fN8){UkzHr z;<3c>Q*!am9L%as#-s~6p7`rATQOLN$Ad`}f}OJTb8~T>Oc>nV40>}LXr~Y>1z;a$g)mzH0t;a?G`6seS&Os98R`j zR{*&(87ha5{Kvl>g9QoW4V^6=pX?Aw9iYSQEzsu{@$Ow)t`ICR#!I*DC>(IKHBLic z^bE6}g^Qh)v}pX>p||iVoC4B)o!>7_UA*E7K+=5xMj&MveA5IBf21Hnk4RK6;+0l^ zZRd6Uc^*^aTLEB}K-M_E0Mx;jV*s~yvHQ<$2WUPEdSMWnLeJDR5Bdq9bHE=d{8F+< zpbpE26TT3l0zt_k&npIRQA_h>=mY42@{a(8(p}`)T>>V64!+xZQ2dm*j%kuRI|b>y z+fiw%hPz$Q)Qi?5AAw%@DT#pE^mo_!-gQrs0S3=OD3)#$50hVoB>5fbh-pR+mtBavCR1=GU5n7`_W+yKVzsW8=U$kwNUf2qD%KWLH4%z4EGq z{5U)3X@%h3_4CVY0e{G*`;Hx@9)R9QTn0c4f8Ug*8xs zJWvu}R`KYeDH1c`Xuun10p`mPSPp6(woR_2Cj4vTb@fuXIr);qJGL%4mdNk?EUKAmLQ(@o>yR6b@;MY0L0hDNi@Da^hmURJ4?0o!7~O9d73 zUwu7RAn*2i{#jjE_;(j zm1XmKAr;1P`q!F4jx_qQzn^+RR`6`A(2waq)?1$i8e2%(mfl>S;X)2TA_h5~zMesj z<7~n-mn3^ctBR~1{I!s10LY_UZ_G_sG-!Lub-97m{=@K{_pGwTRp^`O3g@@vP^NOr zB{b|bbXZJm8GjG|@us;{km>)f*t~iJK7SmXk^U zLGk!8gUI5X)gv(5kl$Fgpr4hjv*}o>hCjQZ8QH$@kk`4uzD^=?K2+WL>b74-ko+K< zw4e=~A0~48^bP0Wd#6l9TSb?@FRWah-(aqNj0?WEGBa>?)@&;=*E}y`qpEU`J1Slk zuwcM!Sq9;x7ukC0$1%7Vm6d7A@fK0n56`pdp=&D(F7Q_-?P_62x!|jk?K=6z#d_e! z>-@`0Q!@nc=nQCR{JU%K^Y(U~YT$(e$7XAoc?hEi0+IBO2Is=Wotb)rwT7gH#+EOR zKjjTV>^9XS7ZobZR^P2NOJ7i%{MQZ_hQuU%#i-&TF=GiRMn087q5R$beI3dY1ge{u znE2S=5Xzr#gsr#=o6YR6*h_dY5l#W~M^?=5WU!+zzW15MU&*>mlb=p_ULn};CLgczI+b+{{QyJB%YFXfB7q6{W`9X;i|%+EpUa|}1u ziWilZVdt8p+dWJqp7n~5sVFSG0EXsyy`u@YN4^E?LgxyQ5p`IJ)2CaZw3C9;$a3x5 znaD`9kD$kcOS$lO`!>tw_r3N%6}VtbyCD(4>j^}gj8*TiexMaJ;~G$(knYGOBJjMz zqV=vua$>;yv-dH>HSDHu-z*%r1=GJ+8HZRfwoC(=1;>4*d!JBnOPAr_p$6@OLkLbL z01Hh37%bf{k*8V=%AU&y3DQci&C=Ty1OZcyKFxJIjMj7+~%I=$Utyf|=% zT9Hh%%O4c(9x)&F_PzCW#NLV`s5U>lIr#GM=$CkI0#FF1Jq3Mx4xggG5>9A^6(bD? zt-xtKw~#x5?@B?>f~7oCXkIbwUL4-Tb{QFu#zut0{-US`YX^@vZ>x6egXQikz5e`l z{z)@pq=$Wy`T%oTw;+-GAdICZ9EWxr{MrR=pm9({OpJ`QJL&2oCq|CH7R|e@rluA* zG7g!!J#ynf!Kqu44?b^Gzu+-r91O(=Df0YZ5jUo7EIL%R&Vu$8vitxHidce2uDyWxyZi`)GQr-^W_QDSzBMI(vH61FHZxMlDeypq z+PVgoJMvTv4?loqYz_U&+N|aGfop)ZoC5O^p4JyT2q(OmCmgT>M@4H6E~sQgL_~CK zY_foo|GbL6WeyhE44Onh7AzXt=qNqLDxvL6#`}|5XMV!-izS%Vn&PD(&lbZJ-{1)P z&}1&3quH;@&L`lp=~-<*Xx7SjSX%sEWsvSxB7zjq7##XN{qQV5R}KuC#`}xsr>dSogZei=(Y21e!=iubbNSm>g1Y*o`)~%RB+&B}u zDqp(txX(~}g*Khs+}|V%96>uoRnCX(D{iMsG{1G5lN%B)qVbAO{&IcD?Me{*!JH*G zee0>?wHueeP~j$f#$4yUb5<{uM93mT((tfT8trhfY6&>!s(4_bVf*;cU^_B2xknW; z;xuwE^M12^=uq-S{pQVbgX;J`Nt*)2hLj2@yeFzx26Vl=Dxf(&Zo`zFOX>#TJT_gl z0kCMz44KYFJ0uy+hlXugCoyY#PdP?oT_75{tb6+DlGaae%``PF@A0v3-F#^Rory)x zJrfhQuuwA7(yqV)3RLexZt}rnt=tn&=Rmr|S>7D*>CrZby*e5i8a;k+eHjR{0P+QG z!rALd#abu5FRtE>IBJ#XS32N1vd;nf6``#&oVw{S3aV9PjUX}tTU%S8^^-oWdKopi z8^o7B?>fjyV$zh2s0~VPcY~ZtLn@a0_c#;Ya~DW{seo++>fF7RPH&vm^aR_)bzgS{ zA3cBaqf+Jh9Xc3H-_!;isn!PUsy=w}mltvJXX0~Uj!zi=g*3RrSyT@nKVa#Zc84kt zJtYGOBlIWcKnwDD{{Ca|RF?&p3x2G!6O8mv#Z+-LVWwreTtkD-mtH@eVOow|fR^x` zr??ID^NqQNL8&K(P zn{4cGIf-4V+T4nb43w7AYh%c|G!LqaM#(4p#1 zqAk%h>{)Sh3c5rZ+L?FfQbR)SS9KTc@JZvINOJhbjL(c1coTPYTiZmZhmmBlo7SRr zk3@iK*ZGdadZ{y6+1WQiO{fj)wZ}+-%Vhj>6hSTJYQh8LAK`yrdnW;dfg*I@(>2&w zFpJ+&^mXEuBy|mfBkZ;q%Kj1!8@WO)6Ato2xlcdAQXm-uv(%)+vGWhE+&f7{9uT0H zA?%zBN!S5fm7TNA5SYf6U)p~towS1}nDro3!ErOa-a%iWAfzVU=I48?JL-&qo?hoL zz7)v-V3XF+4!$P?8P2{VKBKT(jOW?xiwKO%yTb?x|0g?g?)YG{L++7g8nif{b451# zr*em~?REj1W1X&RRtms#3N!}(PiUY2!T|mA :not([slot]) { ion-toolbar h1 img.core-bar-button-image, ion-toolbar h1 .core-bar-button-image img { padding: 4px; + --userpicture-padding: 4px; width: var(--core-header-toolbar-button-image-size); height: var(--core-header-toolbar-button-image-size); max-width: var(--core-header-toolbar-button-image-size);