Merge pull request #6456 from element-hq/feature/bma/iterateOnSpaceHeader

Iterate on space header
This commit is contained in:
Benoit Marty 2026-03-24 17:54:02 +01:00 committed by GitHub
commit aa5b1f5a07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
85 changed files with 239 additions and 275 deletions

View file

@ -53,6 +53,9 @@ import io.element.android.libraries.matrix.ui.components.AvatarPickerView
import io.element.android.libraries.permissions.api.PermissionsView
import io.element.android.libraries.ui.strings.CommonStrings
/**
* https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=3182-36115&t=U1vS3px9HzlzWYd7-4
*/
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun EditUserProfileView(
@ -125,7 +128,7 @@ fun EditUserProfileView(
style = ElementTheme.typography.fontBodyLgRegular,
textAlign = TextAlign.Center,
)
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(32.dp))
TextField(
label = stringResource(R.string.screen_edit_profile_display_name),
value = state.displayName,

View file

@ -51,6 +51,12 @@ import io.element.android.libraries.matrix.ui.components.AvatarPickerView
import io.element.android.libraries.permissions.api.PermissionsView
import io.element.android.libraries.ui.strings.CommonStrings
/**
* For space:
* https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=2216-110711
* For room:
* https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=3187-47342
*/
@Composable
fun RoomDetailsEditView(
state: RoomDetailsEditState,
@ -102,11 +108,11 @@ fun RoomDetailsEditView(
) {
Spacer(modifier = Modifier.height(24.dp))
val avatarPickerState = remember(state.roomAvatarUrl, state.roomRawName) {
val size = AvatarSize.EditRoomDetails
val size = if (state.isSpace) AvatarSize.EditSpaceDetails else AvatarSize.EditRoomDetails
val type = if (state.isSpace) AvatarType.Space() else AvatarType.Room()
AvatarPickerState.Selected(
avatarData = AvatarData(id = state.roomId.value, name = state.roomRawName, size = size, url = state.roomAvatarUrl),
type = type
type = type,
)
}
AvatarPickerView(

View file

@ -46,7 +46,8 @@ enum class AvatarSize(val dp: Dp) {
RoomInviteItem(52.dp),
InviteSender(16.dp),
EditRoomDetails(68.dp),
EditRoomDetails(64.dp),
EditSpaceDetails(96.dp),
RoomListManageUser(96.dp),
NotificationsOptIn(32.dp),

View file

@ -61,8 +61,16 @@ import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag
import io.element.android.libraries.ui.strings.CommonStrings
private val editIconContainerSize = 30.dp
private val editIconContainerRadius = editIconContainerSize / 2
private val editIconContainerPadding = 4.dp
private val editIconSize = 20.dp
private val editIconOffset = 8.dp
/**
* Avatar picker view, based on https://www.figma.com/design/kcnHxunG1LDWXsJhaNuiHz/ER-145--Spaces-on-Element-X?node-id=5918-97417&t=JYDQysgjS33AZb74-4
* Avatar picker view.
*
* https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=1949-1384
*
* It takes a [state], which can be [AvatarPickerState.Pick] for displaying the 'pick avatar' button, or [AvatarPickerState.Selected] when an avatar has
* already been selected.
@ -96,7 +104,6 @@ fun AvatarPickerView(
fun eraseBackgroundModifier(
parentWidth: Dp,
editIconRadius: Dp,
) = Modifier
.graphicsLayer {
compositingStrategy = CompositingStrategy.Offscreen
@ -107,13 +114,13 @@ fun AvatarPickerView(
color = Color.Black,
center = Offset(
x = if (layoutDirection == LayoutDirection.Ltr) {
parentWidth.toPx() - editIconRadius.toPx() * 0.48f
(parentWidth - editIconContainerRadius + editIconOffset).toPx()
} else {
editIconRadius.toPx() * 0.48f
(editIconContainerRadius - editIconOffset).toPx()
},
y = size.height - editIconRadius.toPx(),
y = size.height - editIconContainerRadius.toPx(),
),
radius = editIconRadius.toPx() * 1.2f,
radius = (editIconContainerRadius + editIconContainerPadding).toPx(),
blendMode = BlendMode.Clear,
)
}
@ -132,7 +139,7 @@ fun AvatarPickerView(
is AvatarPickerState.Selected -> {
Box(modifier = modifier) {
val backgroundModifier = if (enabled) {
eraseBackgroundModifier(state.avatarData.size.dp, state.avatarData.size.dp * 0.225f)
eraseBackgroundModifier(state.avatarData.size.dp)
} else {
Modifier
}
@ -143,7 +150,6 @@ fun AvatarPickerView(
)
if (enabled) {
OverlayEditButton(
editButtonSize = state.avatarData.size.dp * 0.44f,
onClick = onClick,
interactionSource = interactionSource
)
@ -179,15 +185,14 @@ private fun PickButton(
@Composable
private fun BoxScope.OverlayEditButton(
editButtonSize: Dp,
onClick: () -> Unit,
interactionSource: MutableInteractionSource
) {
Box(
modifier = Modifier
.align(Alignment.BottomEnd)
.size(editButtonSize)
.offset(x = editButtonSize * 0.266f)
.size(editIconContainerSize)
.offset(x = editIconOffset)
.clip(CircleShape)
.clickable(interactionSource = interactionSource, onClick = onClick, indication = null)
.background(ElementTheme.colors.bgCanvasDefault)
@ -195,7 +200,7 @@ private fun BoxScope.OverlayEditButton(
contentAlignment = Alignment.Center,
) {
Icon(
modifier = Modifier.size(editButtonSize * 0.66f),
modifier = Modifier.size(editIconSize),
imageVector = CompoundIcons.Edit(),
contentDescription = null,
)
@ -234,97 +239,45 @@ internal fun AvatarPickerViewRtlPreview() = CompositionLocalProvider(
@PreviewsDayNight
@Composable
internal fun AvatarPickerSizesPreview() = ElementPreview {
Column {
Row {
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 24.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 32.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 48.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 64.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 96.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
// Size used across the codebase
val sizes = listOf(
AvatarSize.EditRoomDetails,
AvatarSize.EditProfileDetails,
)
Column(
modifier = Modifier.padding(12.dp)
) {
Row(verticalAlignment = Alignment.CenterVertically) {
sizes.forEach {
AvatarPickerView(
state = AvatarPickerState.Pick(buttonSize = it.dp, externalPadding = PaddingValues(6.dp)),
onClick = {},
)
}
}
Row {
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.TimelineThreadLatestEventSender),
type = AvatarType.User
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.ReadReceiptList),
type = AvatarType.User
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.SelectedUser),
type = AvatarType.User
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.EditRoomDetails),
type = AvatarType.User
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.RoomListManageUser),
type = AvatarType.User
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
Row(verticalAlignment = Alignment.CenterVertically) {
sizes.forEach {
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = it),
type = AvatarType.User,
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
}
}
Row {
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.TimelineThreadLatestEventSender),
type = AvatarType.Space()
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.ReadReceiptList),
type = AvatarType.Space()
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.SelectedUser),
type = AvatarType.Space()
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.EditRoomDetails),
type = AvatarType.Space()
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.RoomListManageUser),
type = AvatarType.Space()
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
Row(verticalAlignment = Alignment.CenterVertically) {
sizes.forEach {
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = it),
type = AvatarType.Space(),
),
onClick = {},
modifier = Modifier.padding(6.dp)
)
}
}
}
}
@ -335,8 +288,9 @@ private fun PreviewContent() {
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
val size = AvatarSize.EditRoomDetails
Text("Pick image")
AvatarPickerView(AvatarPickerState.Pick(buttonSize = 48.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
AvatarPickerView(AvatarPickerState.Pick(buttonSize = size.dp, externalPadding = PaddingValues(6.dp)), onClick = {})
HorizontalDivider()
Text("User avatar")
@ -345,7 +299,7 @@ private fun PreviewContent() {
Text("No url")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", null, size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("@user:example.com", "User", null, size = size),
type = AvatarType.User
),
onClick = {},
@ -356,7 +310,7 @@ private fun PreviewContent() {
Text("Local")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "content://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("@user:example.com", "User", "content://test", size = size),
type = AvatarType.User
),
onClick = {},
@ -367,7 +321,7 @@ private fun PreviewContent() {
Text("MXC")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("@user:example.com", "User", "mxc://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("@user:example.com", "User", "mxc://test", size = size),
type = AvatarType.User
),
onClick = {},
@ -383,7 +337,7 @@ private fun PreviewContent() {
Text("No url")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Room", null, size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Room", null, size = size),
type = AvatarType.Room()
),
onClick = {},
@ -394,7 +348,7 @@ private fun PreviewContent() {
Text("Local")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Room", "content://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Room", "content://test", size = size),
type = AvatarType.Room()
),
onClick = {},
@ -405,7 +359,7 @@ private fun PreviewContent() {
Text("MXC")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Room", "mxc://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Room", "mxc://test", size = size),
type = AvatarType.Room()
),
onClick = {},
@ -421,7 +375,7 @@ private fun PreviewContent() {
Text("No url")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Space", null, size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Space", null, size = size),
type = AvatarType.Space()
),
onClick = {},
@ -432,7 +386,7 @@ private fun PreviewContent() {
Text("Local")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Space", "content://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Space", "content://test", size = size),
type = AvatarType.Space()
),
onClick = {},
@ -443,7 +397,7 @@ private fun PreviewContent() {
Text("MXC")
AvatarPickerView(
AvatarPickerState.Selected(
avatarData = AvatarData("!room:example.com", "Space", "mxc://test", size = AvatarSize.EditRoomDetails),
avatarData = AvatarData("!room:example.com", "Space", "mxc://test", size = size),
type = AvatarType.Space()
),
onClick = {},

View file

@ -48,7 +48,7 @@ fun SpaceInfoRow(
) {
if (iconVector != null) {
Icon(
modifier = Modifier.size(20.dp),
modifier = Modifier.size(16.dp),
imageVector = iconVector,
contentDescription = null,
tint = ElementTheme.colors.iconTertiary,
@ -61,7 +61,7 @@ fun SpaceInfoRow(
}
Text(
text = text,
style = ElementTheme.typography.fontBodyLgRegular,
style = ElementTheme.typography.fontBodyMdRegular,
color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.Center,
)

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c04d4a82a3c99ad51ebb98ba01f84bb99682c0f0a2fc7e37f8f475b420008d08
size 29419
oid sha256:cf9aa6f47084124e7c774ae78bc98404d960805bb1338784f3641251e33ac7c6
size 29426

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8ee76b66215dc883a7caa499031713ff1bf9bbe9108ae75e010230f9a10d5564
size 34088
oid sha256:0d40447ece02c06d429d52138550c73e559f89dfd99f6dff7a92cfc3103f2dbe
size 34093

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:379cd97eb39c693a22f362b065b28be829065620cd46a1ac86bdda1ae96e07e0
size 41537
oid sha256:654d8e0acd3b3bbfb856414b5e5ca5615f3febacd8bebaa9af5a1e4d96c5d035
size 41543

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8e91d96e6399867fd1fd18053318067d52663c59f5d4f3c8b0bbbd74fbaed450
size 42508
oid sha256:ea98589cd86e69ae6d57566b205b4dab70f5f4b5c8b0fee09c7e690cafa7f914
size 42514

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adc7703893dcdaf363d823ae3806622b0945adb49eda895aed2687f24a9208f2
size 44221
oid sha256:37ffab3c3805f0bdafaca9035af6e4f706286f45a05a761ba7e7c160d45463c1
size 44226

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:379cd97eb39c693a22f362b065b28be829065620cd46a1ac86bdda1ae96e07e0
size 41537
oid sha256:654d8e0acd3b3bbfb856414b5e5ca5615f3febacd8bebaa9af5a1e4d96c5d035
size 41543

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:08fdc74dc7a84894c7c44d2ed8d0dab8a39e3d1f0bd9d5ab0c40c334d3fb95e3
size 42473
oid sha256:c20f293ba37e9af3e9f045de2ff1746af5e265d5dcf5bce5dc396da5c29387a6
size 42482

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:785e9c2d9d7760ed98d7c33a56dd5778c3c2c652ee62675fda8e22c0b7aec1e5
size 37453
oid sha256:fea7e63fd1d31db6500c4b110b9c05190da7b7201e1029177f8b5a61e728e100
size 37458

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4d2125380275b921562692b6308aa8086682e45443edf235c5f06916c77aed76
size 40418
oid sha256:edc093b514b7e648d176a17b0c368fbed82e9c46d3f584fdb9c6094a6e5aba55
size 40420

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1374e31224ac28a10b25f9b4f7fe1c5bfd321b2d3f71f847cbd9f446dc988546
size 30468
oid sha256:7e4dfa9c766681c750383863450aff0052f3083d495fcea1be74446ceed1cc4b
size 30462

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f086a534df766b627a3b17194c053b49215fecb2887a02eb4e9120fca8ada3d6
size 35330
oid sha256:49309d3b55bf7a4313ab100d54f2d13b741b5bace7fec7d03e8e30765d8e100b
size 35329

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:029abfce9e6ee628296c7edf48d1d437c9273225101b2327744982ea31b68521
size 43122
oid sha256:ea38acc7ef6fb8307b83453eae80ec7c3154a80d0591c4f1fc1a87aa581a7926
size 43124

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a100d8b0987fe7c0fb5ec28f8e4182b57d50992c779520eb22d09ac6ff8bf979
oid sha256:7fd71e26763fb648a7b6ac898f2b354056354d1deee3d3712786a0c36e0cf476
size 44168

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2dcb3b3487ce7ff3a8fab6cc6dbba7868d096883830d8cb6c3632151dcd84b56
oid sha256:7d355371ce78c9a78900a6d76899289844c687b794c2afe127580a7c50b25935
size 45949

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:029abfce9e6ee628296c7edf48d1d437c9273225101b2327744982ea31b68521
size 43122
oid sha256:ea38acc7ef6fb8307b83453eae80ec7c3154a80d0591c4f1fc1a87aa581a7926
size 43124

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5259600e107074fc9658f33a0861b7ffd5fc385c2f60f98334b2e91765534c95
size 44213
oid sha256:1c73b89404caa0fda5233c7dfed5810276a5cb1c1efd5843484b80c7f859b99a
size 44209

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b92a72ae6b5976b728901c363ac14c04905a5399cf6be5542a7eb33e5fa6e0cd
size 38888
oid sha256:005c6520e884641ca1ca4e1248627937806328fc4ae527b811c65ee933a5616e
size 38889

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9495c93e50452de78efc30a041cf834150a166b0690dd3caee9ccc4565f68241
size 42063
oid sha256:4fac6f85109de1b6beb4cff51a91dec8e34ed8ed50820829b63584226e611d5d
size 42064

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f3ac57efcab393ce13794dde2ad7e0d60757c0ef7fd0b09ff0a3c338de9a9edd
size 85467
oid sha256:35c1709b912da1102a50aaa4f8470cbf05a75b03669aec51b90354ccb2b09ba9
size 85336

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f0567c1fe44efb4f9e188252a6840c228eb03e8d7954c95b79c693ac31451cd2
size 38840
oid sha256:2d69d687090971ab7e9b87f959521109fbed48413ef217e1be3da8d7d985038b
size 38751

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f0567c1fe44efb4f9e188252a6840c228eb03e8d7954c95b79c693ac31451cd2
size 38840
oid sha256:2d69d687090971ab7e9b87f959521109fbed48413ef217e1be3da8d7d985038b
size 38751

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0f8a54913bd0c207088cec3c0fff9bcab4dca084884493a32a615fa728c40625
size 83659
oid sha256:2f60372df2ed22a4c52624e16324f7da1f6000eafdd519f84d42a29acec016ee
size 83600

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:949b1843a373b86fde0bb5a0a0637f938e87aeb3d36b8c146052e99874dfb4dd
size 37667
oid sha256:d2a6a7f3188eb9635ade7c0bbc2239257cfbe3166f4a6fb7917a1e5578f51d9e
size 37436

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:949b1843a373b86fde0bb5a0a0637f938e87aeb3d36b8c146052e99874dfb4dd
size 37667
oid sha256:d2a6a7f3188eb9635ade7c0bbc2239257cfbe3166f4a6fb7917a1e5578f51d9e
size 37436

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:303d13645d55db4f9dcb31d68e49d21254778c500daa887694a6d402735ceac2
size 57175
oid sha256:e64f044d19a709056de64976c6902baba7821885f35cd88873d5462fd52c3e4c
size 57343

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f38bf5504ece28cfe2bdaf5e958ecf8af30a1a3e97b3b2d9c43924c362673402
size 52181
oid sha256:1d923c6e3503af723269dbe5c03f1024e7e3fb6ba746fb979f7735c0ad3b8e32
size 52322

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d5a1e1666e42d8d70c978e36db2e4b09c1eae52e625622f10aa3d4be2a26d8c3
size 34940
oid sha256:9b65479f88eeda454ea14ca7d77a0a61b7c9ff219d4dee6ce6567fbff6b56a5e
size 34631

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:68694cdbb914ddac55745505f628d9cbccd01260cc042af16b02465aef068ba2
size 34427
oid sha256:b9a0a40ee3125a292e31024d6e653ac289841403266830339efe40a183f7d4c1
size 34174

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8090f48828c00e9503b9c1d8cf2d25bee2cd0dc212893b233d16e48f63024ad9
size 21590
oid sha256:586a7b5e6beec2d88b0d10582629286c13581ed5387b84d6b249c40fffaa2d34
size 20770

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:53095caca53a83fee3b8189733744b9f9025fb77e9781c7d81c7396d190162ec
size 63152
oid sha256:c722a89bae7665b070dd56de6d0c126fec2f5a94dc00898ff2376f5a83707d72
size 67672

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c62d879f9145956fb00cc9160fb371dc38396326d3539918a453a068a96c2578
size 30252
oid sha256:a869fac21796ec8df3690ab4247de9d93fc56e799d2651565ffbf9c1890f5871
size 29533

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a0316a59f6e64c2f019941fcbc91100ba0723763a3206a7b133475041f8ae40a
size 21765
oid sha256:0d5b8083d08321c3e28c4ffabd69a92e8814bd3c9f4280ca053b82c512a726ca
size 20943

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8b20a582075b176bbc4ed43727c7ee1c492bc10049d8697fb01d66e74c63e8d3
size 62101
oid sha256:ef92f484c434661efe6d4bc12a9e9d1cc34f22af5be7f21c2ef7ff21d1d297dd
size 66367

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a8042eb469d5d472c65713e16aefe8aae28423a6db310eb1416f12370eff8079
size 29442
oid sha256:8673ca44146ce3857044c97bfb1433589049b94700a9a8dc67c67010aefd0332
size 28757

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2305e3cf0adb93983a666216f8cbfdd1472417ad50027a778393713817d26a26
size 27953
oid sha256:951b83b0bfd170a3ba4971dc6949dbccde3036566a7195a7bd54fbf39651fae8
size 27882

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f5bff337898c06fcaee56cd16dc99355b04b3263cb120874f8ba0ef4d83ca060
size 21703
oid sha256:1803b6697e92d06a14cf45cd6f00c75048bd04b137e9a9e33c27baed3df2a4f9
size 21726

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e075cfc4eb49a633af66630da7e90f6901f1ee56981d64a890b1136dc33a6388
size 29373
oid sha256:34e0bfac23207fec8ef658bbc5bfd5d409b2e10153a96890143ecb8ba5a65107
size 29261

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9bd49a06d4771b906fe053e274c32e9e69723d1f1610e4697a2961c880b5a9e6
size 50810
oid sha256:d696e56868273dda3c28b73db40b23ffcf040190a39345b79e8f2379fcf079f8
size 47576

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:079e9546687a722023859f5ed08e58cbccf4c8c914695276330045617ad066db
size 47949
oid sha256:045964005f4c6a30f47a757d7667e417265037575614d880bf403538868698b0
size 75800

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:658f129a4bff6bf2df9d43cbbf49f8010582950258a066ce6d661e69f59eb121
size 28013
oid sha256:bfb25905d1408481cff158a95fe92d30cf5fb5f41e881189846aa4ac4aa6e7c0
size 27945

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5a68e4455a825e96d2b9d64e5bdf76bbbc87dc215348f9b7d8d5c503f147089b
size 26068
oid sha256:4e5b8edf83eeeea54b8bc6208d0be4eb3cc9e3506409e0645eda4c3b28eb11d0
size 25937

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9b61b245117e58eb7b7bd1c10bd7d75b1ed30f3aa80b26cc1a4ef4f0e48c70bc
size 24864
oid sha256:1bd48eb9751d287a8f0177fa143c4933188d401ce0edbcc10c964b094c8347b4
size 24949

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b84017e195f8e117b460387144ce5ac55522bd62839c8ca5f59d657a6f672a63
size 26045
oid sha256:60f30e9fb44614969c54cb3413fe7a3cc808a761ef6ad3699754cf6dd86ff438
size 26041

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:12312b5c8987fdb2328cd81b8a6a831d83191794346d48e2ab5f8940cb8ba7ce
size 28948
oid sha256:cd5ea2bec707ca4af076b00e5baa6491a6bcc9336bb710ffaadb5a2f7f92bbb0
size 29117

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:68edaca4978294e4dc361e4aca5656401da342ade4249d098cd5e63f3dd34444
size 27204
oid sha256:fbc3e7d76dbd4e3b4a6f8301252ce2bdaecdf81eeeb14e5b65cbddd55efef782
size 27285

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:11143b6cac2bc3159a53efb0db1638343f0595917ac1077818813693cf766b32
size 21311
oid sha256:96f77d742b750a9231ed9869d2f9e777aee820119756ad14b178344d65d88fe3
size 21356

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df64c0479b09e64ab64c6201db972490763606b6a2a409d1beb5dbb237131e6a
size 28772
oid sha256:b534bfcb56d1115bd0ade1855c90fba54a1b855e416bf8fa27181e6afb72ac0d
size 28763

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7c47caf5847c6a3bcc4242e4d5df1e5b12a2570e264aaeb7771fd78ec3195138
size 49343
oid sha256:069a87a2ed3d0db5c8d7c11d964a59a6547b109c9bcc0bb0c7acb23e14e4ba06
size 46287

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7cbf8b1fa588108daeb18ff713a4cccd2750d2e49c76d0fafec19273531c6983
size 47074
oid sha256:71c0dbacffcaa89facd5eb285ebde2f9e87bcad38893d0f41fca99c8e567878c
size 74526

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0d82e60104ef09cc5c0751b913aa33e60da584264fae59b73d38614ea00c8a80
size 27254
oid sha256:d2ce39e48f12e57a8a0d57c6c7f6de829ba8e4bb839ed837c081651587c9b2ee
size 27262

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:97eec12d7b4669cedc42a9de07dbfcb7aff1bb41ddef4f69a82881900b9f50f1
size 25253
oid sha256:60ad790a2a4131d9e833585746787a9f4b182b89b836327c4861dc8121e73f25
size 25359

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:029774c8659b0928a45d4b03c47b19ae5532adf77a97a37974721ac25a89d714
size 24263
oid sha256:197b5d107cb9fe04f527e42907c8e59238a6f30d72a70854939ee24625df8a16
size 24281

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5c3f6164cc6de13c1ac92d1b0bb1cdb3ab2f785d3f42660fb3b12069da892e6e
size 24671
oid sha256:d1775ee8969ebc8755686b142f9e13fca28936d2f18b01d8c6cac1e3704313cb
size 24561

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ca5770f0d97d4ce5936c3ed40ee98874a19f4efcbd0dddbe0209046f1036e0e
size 27583
oid sha256:8178051267f0eda8dae95ae44aaf05ec40902e7d1b2e93ca8259beedc408fde5
size 27608

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:deb53bb9c200815d92744962dbd4c512e982acbb1ee1f7f5049c60961dac69b3
size 46859
oid sha256:73608be44121b6125f14e3186ee533a5e479e30124e4276d342a25b476c00fb7
size 46960

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5848d60e57866920c956603d9a7b73ebde571aa410ff8fc4f423478d1a601edd
size 46984
oid sha256:6ea33f7c49c55c81f976111bf79bdee21eb58f3394c8135a0324f6a503dc6fad
size 47044

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:17f534cedbd3aa614327e66db670e4015a0b241e7c764b4654cc2b537a66bad9
size 48837
oid sha256:ed108284075a1fc2523ac38d63dbff3176dbeb97942995d4b83aa4f0bc3de240
size 48636

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2bc7d4ed3af1798332d32494ff810ca0b2a3405dc1aa4c14235a9ebefcca2a2b
size 59450
oid sha256:cb31f13ac29f7ebbbe18d2314bfaccfd20f87c308edda618ba36a6f968e2fe33
size 59929

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:be63f80b133292a6d998fc7786f3a885af188ec63e50776dc42d3c794c97c04f
size 60116
oid sha256:1ddc1a68ff028108928942a2ceb6df4caa3ce4322bea836b409e9a7ddf991194
size 60567

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c6e4ac872b497e115985a4d9535c3720d3d9189537cfffcd3f3b30033db636b
size 57156
oid sha256:0322da022d57cbd3b167f939d00bffdba69758c6508256f1251826cf5621b18b
size 56970

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0ee7e4717d580472984c27b52edbc94e3c11d414df2e1921338e293f037cf10
size 45272
oid sha256:e9b3bc80e39daf9809464a771089e431be993e8faba40431784990f61e7c2a4f
size 45233

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:00e4005c9b8c964169657d4866ba4525683802f60fad963f9937c42a3af3aac9
size 45378
oid sha256:aa6f0b045b83a4bd8b1f2ff9727964ec82ce7781f575ee6c1e306eeecd7da63b
size 45319

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ba87e5bdf17fa152aa19d7b82375f72d94921befc193e3a2d16789c95184670
size 47109
oid sha256:471ed0a332d92a41a82536c5ac2204909391730b811d44f54d8b308fb03447f9
size 46791

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c68a6a0247bcbcca56f1a0d93b888bae5a7ac23edd86bea2fa764e852429cbd
size 57656
oid sha256:325ef5fb725ea61c382eec96668b4fbfca9eee08e1503eb72e298b4d62d684e1
size 58256

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d51605bbf9d50ec062ad631f7e59b4df2ad33b5c0a5802a9213222b3831c93b1
size 58233
oid sha256:fd73b018c8fd459eab5849c942e4f992357abbb4d0e0ba1cc5847e0985ff335d
size 58836

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:70898c5044adbc7bb5a318bf218a551daeb62390d767eb0457774900f52d401a
size 55072
oid sha256:57cd29c2032d425f94551a0fda528ec5dbaa467900f6235fb40aa6009ee22bec
size 54897

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5726a43d99a6c7b12b89280eec24a35015800bba0b6311d25dfa5b0657436bf2
size 218639
oid sha256:f35a413408b92d441fa785469de5560db87ba0efb94db94afa7d46a3751c5bef
size 165369

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:37e3e9bfe4305f741b897430b3fdc3b8a8b0f80c0877589fad69743750d530dc
size 213898
oid sha256:e9ecd308fd5ce7b9fd25204d696fcdad835e41ff41b00d2b8635981b290da02a
size 162184

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aefedd3be6c0b57cebd07f7f008a7d46c1b6c9e35233047cdae9056d64e1be3a
size 184665
oid sha256:806e56c218a0ad1c69dd997089cc8362e30624377fdceffeefadc523c712203b
size 173137

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:14c46d22d1b75881d26a0eaf88ef2e551f5e9b9a2a146f0255e93c0540562c73
size 181483
oid sha256:e25f6630680dcdf1e685235fc551dd6ea853b0902f30234e5fb9d4050f584450
size 169862

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b67f065531858f105c25d07a7943ea0e32d6294fad408c0b7f1fbe062367115e
size 182058
oid sha256:8185dee1ad113c2b32a74de58c440abb366337accd1dea12047a85d323eff9eb
size 171610

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f41b7f0ce1524f287f31376dfb91d8c54d91ea3ad7dac7493f0168f3324c5d14
size 179341
oid sha256:a13dd8a9228c1526482f0c7fd5e0347c8fa4998849507b759a0c9548455adfe7
size 167957

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bcee923854778a24a3043060aca26ea0a408b23facb4b4694798907e22b7c500
size 42033
oid sha256:d19701e98fb988c19f7c4862f48ba192c4b5faf400c224a013189e3f2c489f78
size 41519

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:10cfbc2475a36f3f75973113b8dc1282d19ee7dccaa502a5dee5c95c4901842f
size 41513
oid sha256:9ca98f8662d66b7d9c4484e5c5b0a6b9c9fa5ea1cdd7e430dbc071249390287d
size 40957

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:de4639ba342b268d5de55627a4d17f8d84174f2b9ae83e3a1543738fd20d0196
size 17146
oid sha256:53ec492b0a46d3add165e01c7ce540f304574791d10232a825e28cd15ae22248
size 16903

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:23e90312791319d6318cf5971235be55531baf13da7e7c969bd15774d3140df6
size 16161
oid sha256:938b51a3e4e4466056da464fabd34066b716fbf55622b179f799181ff900819f
size 15978

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ddd8149f9d7cb4867bdf5f12276d778d2ed56963051961e949f4feb470308fc4
size 63636
oid sha256:7853b79eda8a4b82cc49d553f78f545af62bc44b708a20a5bb5e4582ed07bc22
size 63262

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6794c0d21a221b47c9c808339e7eae1195af9504d4ea3f68bede59f3d77cf1c4
size 62497
oid sha256:7daff199310c41900d0ca650f38ad2561c8db8542a4d48161a5a88f7fe976318
size 61899

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d3ac61279d8534d3ce201f175563ac9cffc533bd89c9e183666d6aa2d04dbbaa
size 20424
oid sha256:8be1c1e7f13fa92b9d435b067d6cfe60fff26c79fc2eaf0277593fb26a92dd68
size 18248

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3fe106b1528e558785aaff67c8a7c4531c95f1354de65c1337d2414dd4650f0d
size 19357
oid sha256:302d45fff4a8c7efe00656ba1f001e6991dcd18883cd06d752b350e1dd4682f7
size 17129