Merge pull request #6933 from element-hq/feature/bma/filePreviewImprovement

[Media viewer] File preview improvement
This commit is contained in:
Benoit Marty
2026-06-02 15:19:09 +02:00
committed by GitHub
55 changed files with 181 additions and 128 deletions
@@ -103,6 +103,30 @@ fun aPdfMediaInfo(
duration = null,
)
fun aZipMediaInfo(
filename: String = "a zip file.zip",
caption: String? = null,
formattedCaption: CharSequence? = null,
senderName: String? = null,
dateSent: String? = null,
dateSentFull: String? = null,
): MediaInfo = MediaInfo(
filename = filename,
fileSize = 12 * 1024 * 1024,
caption = caption,
formattedCaption = formattedCaption,
mimeType = MimeTypes.Pdf,
formattedFileSize = "45MB",
fileExtension = "zip",
senderId = UserId("@alice:server.org"),
senderName = senderName,
senderAvatar = null,
dateSent = dateSent,
dateSentFull = dateSentFull,
waveform = null,
duration = null,
)
fun anApkMediaInfo(
senderId: UserId? = UserId("@alice:server.org"),
senderName: String? = null,
@@ -12,8 +12,8 @@ fun formatFileExtensionAndSize(extension: String, size: String?): String {
return buildString {
append(extension.uppercase())
if (size != null) {
append(' ')
append("($size)")
append("")
append(size)
}
}
}
@@ -41,6 +41,7 @@ class DefaultLocalMediaRenderer(
textFileViewer = textFileViewer,
audioFocus = audioFocus,
onClick = {},
onOpenWith = null,
)
}
}
@@ -31,6 +31,7 @@ fun LocalMediaView(
bottomPaddingInPixels: Int,
audioFocus: AudioFocus?,
onClick: () -> Unit,
onOpenWith: (() -> Unit)?,
textFileViewer: TextFileViewer,
modifier: Modifier = Modifier,
isDisplayed: Boolean = true,
@@ -80,7 +81,7 @@ fun LocalMediaView(
uri = localMedia?.uri,
info = mediaInfo,
modifier = modifier,
onClick = onClick,
onOpenWith = onOpenWith,
)
}
}
@@ -9,23 +9,16 @@
package io.element.android.libraries.mediaviewer.impl.local.file
import android.net.Uri
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
@@ -33,55 +26,54 @@ import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.core.bool.orFalse
import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAudio
import io.element.android.libraries.designsystem.components.BigIcon
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.ButtonSize
import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.OutlinedButton
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.mediaviewer.api.MediaInfo
import io.element.android.libraries.mediaviewer.api.helper.formatFileExtensionAndSize
import io.element.android.libraries.mediaviewer.impl.R
import io.element.android.libraries.mediaviewer.impl.local.LocalMediaViewState
import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaViewState
import io.element.android.libraries.ui.strings.CommonStrings
/**
* Ref: https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=3361-16623
*/
@Composable
fun MediaFileView(
localMediaViewState: LocalMediaViewState,
uri: Uri?,
info: MediaInfo?,
onClick: () -> Unit,
onOpenWith: (() -> Unit)?,
modifier: Modifier = Modifier,
) {
val isAudio = info?.mimeType.isMimeTypeAudio().orFalse()
localMediaViewState.isReady = uri != null
val interactionSource = remember { MutableInteractionSource() }
Box(
modifier = modifier
.padding(horizontal = 8.dp)
.clickable(
onClick = onClick,
interactionSource = interactionSource,
indication = null
),
.padding(horizontal = 8.dp),
contentAlignment = Alignment.Center
) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Box(
modifier = Modifier
.size(72.dp)
.clip(CircleShape)
.background(ElementTheme.colors.iconPrimary),
contentAlignment = Alignment.Center,
) {
Icon(
imageVector = if (isAudio) CompoundIcons.Audio() else CompoundIcons.Attachment(),
contentDescription = null,
tint = ElementTheme.colors.iconOnSolidPrimary,
modifier = Modifier
.size(32.dp)
.rotate(if (isAudio) 0f else -45f),
)
val isApk = info?.mimeType == MimeTypes.Apk
val icon = when {
isAudio -> CompoundIcons.Audio()
isApk -> CompoundIcons.Bug()
else -> CompoundIcons.Files()
}
BigIcon(
modifier = Modifier.align(Alignment.CenterHorizontally),
style = BigIcon.Style.Default(
vectorIcon = icon,
usePrimaryTint = true,
),
)
if (info != null) {
Spacer(modifier = Modifier.height(20.dp))
Text(
@@ -100,6 +92,20 @@ fun MediaFileView(
overflow = TextOverflow.Ellipsis,
color = ElementTheme.colors.textPrimary
)
if (onOpenWith != null) {
val (icon, textResId) = if (isApk) {
IconSource.Resource(R.drawable.ic_apk_install) to CommonStrings.common_install_apk_android
} else {
IconSource.Vector(CompoundIcons.PopOut()) to CommonStrings.action_open_with
}
OutlinedButton(
modifier = Modifier.padding(top = 24.dp),
size = ButtonSize.Small,
leadingIcon = icon,
onClick = onOpenWith,
text = stringResource(id = textResId),
)
}
}
}
}
@@ -115,6 +121,6 @@ internal fun MediaFileViewPreview(
localMediaViewState = rememberLocalMediaViewState(),
uri = null,
info = info,
onClick = {},
onOpenWith = {},
)
}
@@ -10,11 +10,15 @@ package io.element.android.libraries.mediaviewer.impl.local.file
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.mediaviewer.api.MediaInfo
import io.element.android.libraries.mediaviewer.api.aPdfMediaInfo
import io.element.android.libraries.mediaviewer.api.aZipMediaInfo
import io.element.android.libraries.mediaviewer.api.anApkMediaInfo
import io.element.android.libraries.mediaviewer.api.anAudioMediaInfo
open class MediaInfoFileProvider : PreviewParameterProvider<MediaInfo> {
override val values: Sequence<MediaInfo>
get() = sequenceOf(
aPdfMediaInfo(),
aZipMediaInfo(),
anAudioMediaInfo(),
anApkMediaInfo(),
)
}
@@ -106,7 +106,7 @@ import me.saket.telephoto.zoomable.OverzoomEffect
import me.saket.telephoto.zoomable.ZoomSpec
import me.saket.telephoto.zoomable.rememberZoomableState
val topAppBarHeight = 88.dp
val topAppBarHeight = 112.dp
/**
* Ref: https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=3361-16623
@@ -239,6 +239,9 @@ fun MediaViewerView(
onRetry = {
state.eventSink(MediaViewerEvent.LoadMedia(dataForPage))
},
onOpenWith = {
state.eventSink(MediaViewerEvent.OpenWith(dataForPage))
},
onDismissError = {
state.eventSink(MediaViewerEvent.ClearLoadingError(dataForPage))
},
@@ -333,6 +336,7 @@ private fun MediaViewerPage(
isUserSelected: Boolean,
onDismiss: () -> Unit,
onRetry: () -> Unit,
onOpenWith: () -> Unit,
onDismissError: () -> Unit,
onShowOverlayChange: (Boolean) -> Unit,
audioFocus: AudioFocus?,
@@ -387,6 +391,7 @@ private fun MediaViewerPage(
currentOnShowOverlayChange(!currentShowOverlay)
}
},
onOpenWith = onOpenWith,
isUserSelected = isUserSelected,
audioFocus = audioFocus,
)
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:70b06a4411aaf9fccb7dbb68878ee4a01b0987fe592a1aef6fe474dd555dbd0b
size 42536
oid sha256:e28b5fb8181f780a372aa944291ef23349f4acc3460786ee152d8e281e85b866
size 41993
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1ed9d6c254ac362f84b9be0761f0bbd7aecb14343a131d54da4b2be0ad033f87
size 41165
oid sha256:d20f6311164e291ae60542c2316cb4d438058322fca1b0db0980f0579874f9c6
size 40650
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dcd8208f3737b5b5949af591d2417d16f2da18609f3770201f2e87577b250b2e
size 8947
oid sha256:45b2370c78dd907e5bf7c5df18b98df636e1099cd1de5b54923f7beb9bd17ccc
size 8680
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7d114f04976fbce895cc53c2c57df8af1e968067d4ed451c4a11b00ea008e14e
size 11127
oid sha256:cbbbc103c2a7b5e8d942e0af113568c28dd62863ba0cd1dfb7a5dc9de56b3760
size 10863
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:36487e20168db4594c519e4a6901b18d0e10604aaf10f07f9aa95d44647bdbd6
size 20287
oid sha256:f758005da7c969bef056ccf52d27a099e3bc5e900643e50990be430d640edfce
size 20031
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3576dad3e0443c638112c329854fc4d8818f2045dd2e17fe3a0ccbe9a9b1394d
size 11048
oid sha256:c43d85e4658b9fb930ef76258479a876d5cde3b545bc4f4a76d86e4ef2d7a82f
size 10773
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b4dde4370b8bd6d2bcd8d3c9a877595661ee1b1296dec0f73b041fb556a3921
size 21282
oid sha256:c836c0a00fb5697138349028540d5e1cb4f1fddd2fd50d388cb5a1b55ccaa8f4
size 21023
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fc2da3562566b433c6fc5dba185c13127f86890b26644e41d9b5c88f1d130fb3
size 8671
oid sha256:3c5351b6f9f14198aec7bb4bd6353b43bbf9f487e192a5c927791756dc354ad9
size 8431
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0870cf3f791d9a1f5203e4d81c01fa986a03a5fa44589befa9f8163c834637e3
size 10799
oid sha256:92feff534e8ae02d574f5bddc927bf642e3199dc4f2d89a584d087058d18fc01
size 10565
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2031bd6ed35ec1de5a17d1f85aa52c4cb62278e56f1ec5df48c0afe2ddcade38
size 19216
oid sha256:2dee0c45a8848f8771bcb0b60f368ccfef29beb7528c227a1a9f07c71a0457dc
size 18940
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e9cac5229b5129b2bc21cae8ead0e7d19b58922056064f28bf0f59074b4e21e6
size 10742
oid sha256:9fa672f2cb7dbf0fff171d507e66d1ed8494cbcd93b48bef1ee1b9b75d6717e7
size 10499
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4b693ccea2549b9140beacbf2ffaa8ce409ae7c7f2f9cea0050e56527c2c03fe
size 20380
oid sha256:5735813e0f9c40e5d861ba0c35ba73689ff7ee41224829289ce017746323922c
size 20150
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:043671b3e2176b35ab9519be38ed5711f3eee99a8583583c6fde11f58250aa48
size 8251
oid sha256:e155260fd46cf1550c823e2b0a51f3f6529acfd131fc73a7e66dcaca24f3449e
size 7934
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cd96a7daf5c19176ef997fbc80a75c3eeb19d470519ae1d57027b5f388736b1c
size 10526
oid sha256:49a670d25e379b2385ae14a814cd4aca9a0bdff00c3d62d31b146139c2d0edbe
size 10210
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bba55beec2451cdd8eb5237e85ccaf37d98ff86435015ce019f8ef2f131fe31c
size 20520
oid sha256:d633e28eea9674914bb018b113313c2e3aed6463e2de5901243f5432087a3c1f
size 20237
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:207dd1bfa213f3153cf2096d6e961d4c1048664fb2bbaea546af843bb96769a4
size 10349
oid sha256:10b79226a4eb5c67afc1fc8ace8c6fb49429a69b1e1518b622dcfd20bc2820ea
size 10032
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:15a00a56cdb8156a78905fffd95dc5196f4267768a60a08416417322ec6c9801
size 20640
oid sha256:085310083c4150fb70e48087881e529f17005df69cc01dd53807a06266f4f4bb
size 20317
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e1b8818e2f1e5f822b9560ec30297460bab89f05d94e36a989aaee4277ae1216
size 8071
oid sha256:555333bf67a1f4460c0f0d71393c03914fc67cfe6f4e5161468aec1d95e587e2
size 7803
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1f3bbd229376c0f2731f93cda00e4580c45971e4ac07bac7b2578d45b48ba079
size 10220
oid sha256:36009b81c172786ab1d87834b05550af706b355f8d044d364b1f15e58097c8c7
size 9945
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d2e3ff1bf09d9e616862c74ef29f07c280bf07af8355eb282e51745e0f6927bb
size 19380
oid sha256:d40a8265e7bffd24954d6fa3194c8c8c65b600518c23d6089b540adabcb751e5
size 19141
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0aadd6c4d503ebf0224a941c798363e3302018fcc9e726bc31808ab7c5381504
size 10130
oid sha256:4ef1884c4cac3debea52affbab071110a49b40cebfd38b316693085464fcc440
size 9859
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f44732ffe4caa44b3fb62bac8a6da3e15a7917f0918314d0f1407b08c8b72da
size 19820
oid sha256:983620627af06dc1937b040fe21b3e12920e84116cc584fe76a7ef799473540c
size 19547
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:31b6fd539808d47a692e33948145732b530e465eed7356e3a47bf7da157dcb18
size 66920
oid sha256:80436cf3797f7fe641e3312074d29d5385d09e93cf58927702cd5a2d9bda6a40
size 65249
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea2bb433c696a382c2006381c987eae227b72a159d03d3e654397b00c909f203
size 82141
oid sha256:2928e30fe5c473b93644cced7f8826696b6a8018b10ab96d89152b76c835b006
size 80674
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:50307dd635bc606def8fe4b80068b7c209e17828718c7a5992127953226cd4e2
size 71172
oid sha256:bda29daa05fd2ca70ee96e430e887c02d6a05e62accd298b0206dd1c532a77d3
size 69548
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8f0a63b3877b4ce2e7613164e9103a9ba935d64886ccb18646f51e0fd9750885
size 100976
oid sha256:991669a0939c78b1d1238cdc5f0197e123e5e21229332c53a7e0d65ff5f11ab7
size 99624
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1bfcf8909d3414e517357d82c203c5464071b3f673d7623d4f75b6c18f25e22e
size 65742
oid sha256:08c51bcd425352f667189a6fdf98067322f90f76d506029f3d8db640c943654f
size 64109
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0d3d27b7a366ac20b287f7587866dba06dc5667ba8cd3b6dc040d8ee7e3adb94
size 80499
oid sha256:31b76164389481cbe53ea7caa1b1754202314274a0634b8737ad7023bed62a02
size 79065
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cdf2031afb6d849812555f8b38f6b0f1f65aa959f3cc9e468fdeece65c150858
size 69980
oid sha256:d9962689d7ea7eedd28c7dbec66244df0321bcf45238b47fb9beac50ee81b4cd
size 68585
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b0034ff36f0d58e30ac75b36f0869dc27f617d9f1dfb1cf00b88c9bf32d23986
size 98632
oid sha256:58d5217e29f95074a403572449d54a072d5969852d09c3a1ddacb43949f4a570
size 97346
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b918ce7162d95c873f0029a657ee07fca2e34926e4c3cdb39eaeb10123a08721
size 25340
oid sha256:2c2976543550c63540f3e4533685e342ef5775018a37f5e282bf889e42c199e6
size 24955
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d62cf7beeba92ee47193a871becad07f50d27e6f6fa0b85f6c620c3f1b04b6ce
size 24697
oid sha256:c8eb14a3df5edff4af450b39224e6af6efce20f0734119835e6fbec210491412
size 24251
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f520fc8eac5e100bc4e8b0bf0c84e615078dabbdf502411e6dca5a4d579cfcab
size 12255
oid sha256:71381d66fb321f01d6d874c025681489224626ad9700c0f15fe619f73f1a648e
size 12532
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb2ac4d88f51c8c1718a525a5abeccbe2bb19df75a100d504de0cb106ff3117c
size 13857
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a3eea2cd53364f9d0c85b803c8faa29f083f9db59123ba6e980a79bff7779402
size 14113
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:79fd6fba99568650dcbdac47a0ecfda6faa2cd893ded73d5ac4cbf852b59bd63
size 11889
oid sha256:d834acd383dfe8da50426e28e267a1076e5634fc2f96e1e7593cb6a05988600f
size 12074
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a14ccc9724a15a7ae3f477a8cda366be345acf10b7a98ce63c4889bc1708844b
size 13379
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:26e4aa8610c1dede0d1b637072e773b5c46fef24bc436b9e7444e26f3ba9814c
size 13689
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:94b71c47da614e247f1c9bbe6df50ae036c5587b964f4df460859927d4807d37
size 6154
oid sha256:db3ad4fbd7c140588ed40887455e3ee6b77968ca8682769826f0a447d867ac2f
size 6115
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e5d66ac02ac2d39125c26406f70880f2b58f3ffb88569f19b0e5104a03293034
size 6097
oid sha256:8b91198bf6f1cc53e13eea6c7092142800760c7103349c37ca931d722a549616
size 6064
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9e23aad00065523bf1ee0e26cd094eb6a9bdd73d65f0bd9cac62cb79e7876481
size 196533
oid sha256:515d5a47d530117ff21cb922d1cb2cb81b22d02c083c51bbff69964f92260bbe
size 197095
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d98ceaeb669342160d04783f07fbb21929d8be46d30181b60e0f09a99abfe79
size 197127
oid sha256:b9f402d6f56e6b9eb8d46add584ef28bf88d4a6c16ae050b7773895faafa8d38
size 197707
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:094c1de97c33431390f3ff71d73019d9af9a62ed57ba98c94e53f1f9680851fa
size 210728
oid sha256:2871bd26b6c21d31ca251761eb5a203468406b4d18c13662fa815c53f015b5e1
size 210297
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2a17d0f4bc47305b9c8a3866f70cdddb16fcb5ba10c8007c8739a329025e846a
size 211342
oid sha256:d9dadffc89e0a66b54a0e6b94006f392569e1907dda2c6d0b6134aad187ff84a
size 210913
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b9cd21b6d9a9d0a9ef656bf895d6d135ba76160695355ce034fe985991d6955b
size 123949
oid sha256:9fe5efbf527ef99de18a44e05edb9654b5bc58c17a2fd2d05f57567fbe27ef2c
size 125021
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2dce0794e50116043fde9f6eb76b0c05ca21fc9cee26bde01618024c24c154b2
size 14952
oid sha256:7ef585a08fc39f7038e861abe6bbb108c3147eab3445722e5500046deb8afe94
size 16190
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:43ab4873fc5fc812bf18af50cbe620c83b273ee70305b5ea06a7aeabdf8dbc93
size 137637
oid sha256:58e3353ce8aecff415158d146347206b1dbf167d15523301847f47c2e81b1c5b
size 137215
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:33048dafab286cf0e5c84040c034d93a42d69c234edd53132d918a4a1c135ece
size 137908
oid sha256:2a6b181d16c5ac2e77d11efa8cfb5a6ce7473deaa502502d97c232311878c46a
size 137497