diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8b3cef70..d22a04f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,18 +16,18 @@ android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/ic_launcher" + android:icon="@drawable/ic_moive_logo" android:label="@string/app_name" - android:roundIcon="@mipmap/ic_launcher_round" + android:roundIcon="@drawable/ic_moive_logo" android:supportsRtl="true" android:usesCleartextTraffic="true" - android:theme="@style/Theme.Moiveandroid"> + android:theme="@style/Theme.Moive"> + android:theme="@style/Theme.Moive"> diff --git a/app/src/main/java/com/moive/app/core/designsystem/component/image/UrlImage.kt b/app/src/main/java/com/moive/app/core/designsystem/component/image/UrlImage.kt index f71748d6..ef140e12 100644 --- a/app/src/main/java/com/moive/app/core/designsystem/component/image/UrlImage.kt +++ b/app/src/main/java/com/moive/app/core/designsystem/component/image/UrlImage.kt @@ -1,19 +1,21 @@ package com.moive.app.core.designsystem.component.image -import androidx.annotation.DrawableRes import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.painter.ColorPainter +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalInspectionMode -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage import com.moive.app.R +import com.moive.app.core.designsystem.theme.MoiveTheme.colors @Composable fun UrlImage( @@ -21,23 +23,23 @@ fun UrlImage( modifier: Modifier = Modifier, contentScale: ContentScale = ContentScale.Fit, contentDescription: String? = null, - @DrawableRes placeholder: Int = R.drawable.ic_launcher_background, + placeholder: Painter = ColorPainter(colors.background.default03), ) { if (LocalInspectionMode.current) { Image( imageVector = ImageVector.vectorResource(R.drawable.ic_launcher_background), contentDescription = contentDescription, contentScale = contentScale, - modifier = modifier + modifier = modifier, ) } else { AsyncImage( model = url, contentDescription = contentDescription, contentScale = contentScale, - placeholder = painterResource(placeholder), - error = painterResource(placeholder), - modifier = modifier + modifier = modifier.fillMaxSize(), + placeholder = placeholder, + error = placeholder, ) } } diff --git a/app/src/main/java/com/moive/app/core/designsystem/component/topbar/MoiveMainTopBar.kt b/app/src/main/java/com/moive/app/core/designsystem/component/topbar/MoiveMainTopBar.kt index 925b3a62..9d3bb1d1 100644 --- a/app/src/main/java/com/moive/app/core/designsystem/component/topbar/MoiveMainTopBar.kt +++ b/app/src/main/java/com/moive/app/core/designsystem/component/topbar/MoiveMainTopBar.kt @@ -2,6 +2,7 @@ package com.moive.app.core.designsystem.component.topbar import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -30,7 +31,6 @@ import com.moive.app.core.extensions.noRippleClickable @Composable fun MoiveMainTopBar( - title: String, isAlarmUnRead: Boolean, onNotificationClick: () -> Unit, modifier: Modifier = Modifier, @@ -43,26 +43,18 @@ fun MoiveMainTopBar( ) .padding(horizontal = 20.dp, vertical = 12.dp), verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, ) { Image( - painter = painterResource(R.drawable.ic_launcher_background), + painter = painterResource(R.drawable.img_moive_symbol_name), contentDescription = null, modifier = Modifier - .size(32.dp) - .clip( - shape = RoundedCornerShape(radius.circular), + .size( + width = 96.dp, + height = 32.dp, ) ) - Spacer(modifier = Modifier.width(8.dp)) - - Text( - text = title, - color = colors.text.default, - style = typography.title.lgB, - modifier = Modifier.weight(1f), - ) - Icon( imageVector = ImageVector.vectorResource( if (isAlarmUnRead) R.drawable.ic_bell_notification_24 else R.drawable.ic_bell_24 @@ -79,7 +71,6 @@ fun MoiveMainTopBar( private fun MoiveMainTopBarPreview() { MoiveTheme { MoiveMainTopBar( - title = "title", isAlarmUnRead = true, onNotificationClick = {}, ) diff --git a/app/src/main/java/com/moive/app/core/extensions/ContextExt.kt b/app/src/main/java/com/moive/app/core/extensions/ContextExt.kt index 2454d553..2ca4652b 100644 --- a/app/src/main/java/com/moive/app/core/extensions/ContextExt.kt +++ b/app/src/main/java/com/moive/app/core/extensions/ContextExt.kt @@ -22,19 +22,6 @@ fun Context.openUrl(url: String?): Boolean { }.isSuccess } -fun Context.openKakaoMapRoute( - startLatitude: Double, - startLongitude: Double, - endLatitude: Double, - endLongitude: Double, -): Boolean { - val query = "sp=$startLatitude,$startLongitude&ep=$endLatitude,$endLongitude&by=publictransit" - val appUrl = "kakaomap://route?$query" - val webUrl = "https://m.map.kakao.com/scheme/route?$query" - - return openUrl(appUrl) || openUrl(webUrl) -} - fun Context.isNotificationEnabled(): Boolean = NotificationManagerCompat.from(this).areNotificationsEnabled() diff --git a/app/src/main/java/com/moive/app/data/meeting/mapper/MeetingResultMapper.kt b/app/src/main/java/com/moive/app/data/meeting/mapper/MeetingResultMapper.kt index 404e08ea..77ca37d1 100644 --- a/app/src/main/java/com/moive/app/data/meeting/mapper/MeetingResultMapper.kt +++ b/app/src/main/java/com/moive/app/data/meeting/mapper/MeetingResultMapper.kt @@ -11,7 +11,7 @@ fun MeetingResultResponse.toModel(): MeetingResultModel = MeetingResultModel( place = place?.toModel(), meetingDate = meetingDate, - meetingTime = meetingTime, + meetingTime = meetingTime.take(5), participants = participants.mapIndexed { index, participant -> participant.toModel(id = index.toLong()) }, ) diff --git a/app/src/main/java/com/moive/app/presentation/home/HomeScreen.kt b/app/src/main/java/com/moive/app/presentation/home/HomeScreen.kt index 3e6b9aec..064d8877 100644 --- a/app/src/main/java/com/moive/app/presentation/home/HomeScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/home/HomeScreen.kt @@ -2,15 +2,16 @@ package com.moive.app.presentation.home import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape @@ -21,9 +22,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview @@ -41,9 +40,8 @@ import com.moive.app.core.designsystem.theme.MoiveTheme.colors import com.moive.app.core.designsystem.theme.MoiveTheme.radius import com.moive.app.core.designsystem.theme.MoiveTheme.typography import com.moive.app.core.extensions.noRippleClickable -import com.moive.app.presentation.common.component.TabChipList import com.moive.app.presentation.common.component.MyMeetingCardItem -import com.moive.app.presentation.home.component.HomeEmptyMeetingList +import com.moive.app.presentation.common.component.TabChipList import com.moive.app.presentation.home.component.ConfirmedMeetingPager import kotlinx.collections.immutable.persistentListOf @@ -107,7 +105,6 @@ private fun HomeScreen( .padding(innerPadding), ) { MoiveMainTopBar( - title = "MOIVE", isAlarmUnRead = uiState.isAlarmUnRead, onNotificationClick = onNotificationClick, ) @@ -126,25 +123,41 @@ private fun HomeScreen( } item { - if (uiState.upcomingMeetings.isEmpty()) { - Image( - painter = painterResource(R.drawable.ic_launcher_background), - contentDescription = null, - modifier = Modifier - .fillMaxWidth() - .aspectRatio(320f / 220f) - .padding(horizontal = 20.dp) - .clip( - shape = RoundedCornerShape(radius.xxl) - ), - contentScale = ContentScale.Crop, - ) - } else { - ConfirmedMeetingPager( - meetings = uiState.upcomingMeetings, - onMeetingClick = onMeetingClick, - onAddMeetingClick = onAddMeetingClick, - ) + when { + uiState.homeUiState is HomeUiState.Loading -> Unit + uiState.upcomingMeetings.isEmpty() -> { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp) + .background( + color = colors.fill.default06, + shape = RoundedCornerShape(radius.xxl) + ) + .padding(top = 26.dp, bottom = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + Image( + painter = painterResource(R.drawable.img_character_empty_home), + contentDescription = null, + modifier = Modifier.size(80.dp) + ) + + Text( + text = "아직 확정된 모임이 없어요.", + color = colors.text.tertiary, + style = typography.body.smNormalR, + ) + } + } + + else -> { + ConfirmedMeetingPager( + meetings = uiState.upcomingMeetings, + onMeetingClick = onMeetingClick, + ) + } } } @@ -192,29 +205,51 @@ private fun HomeScreen( Spacer(modifier = Modifier.height(10.dp)) } - if (uiState.displayedMyMeetingList.isEmpty()) { - item { - HomeEmptyMeetingList( - modifier = Modifier.padding(horizontal = 20.dp, vertical = 12.dp), - ) + when { + uiState.homeUiState is HomeUiState.Loading -> Unit + uiState.displayedMyMeetingList.isEmpty() -> { + item { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(top = 34.dp, bottom = 48.dp) + .padding(horizontal = 20.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + Image( + painter = painterResource(R.drawable.img_character_empty_default), + contentDescription = null, + modifier = Modifier.size(80.dp) + ) + + Text( + text = "아직 참여 중인 모임이 없어요.", + color = colors.text.subtle, + style = typography.body.smNormalR, + ) + } + } } - } else { - items( - items = uiState.displayedMyMeetingList, - key = { it.id }, - ) { meeting -> - MyMeetingCardItem( - title = meeting.title, - dateTime = meeting.dateTime ?: "일정 미정", - participantImageList = meeting.participantImageUrls, - extraCount = meeting.extraParticipantCount, - statusText = meeting.statusText, - statusLabelType = meeting.statusLabelType, - onCardClick = { onMyMeetingClick(meeting.id, meeting.statusLabelType) }, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp, vertical = 6.dp), - ) + + else -> { + items( + items = uiState.displayedMyMeetingList, + key = { it.id }, + ) { meeting -> + MyMeetingCardItem( + title = meeting.title, + dateTime = meeting.dateTime ?: "일정 미정", + participantImageList = meeting.participantImageUrls, + extraCount = meeting.extraParticipantCount, + statusText = meeting.statusText, + statusLabelType = meeting.statusLabelType, + onCardClick = { onMyMeetingClick(meeting.id, meeting.statusLabelType) }, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp, vertical = 6.dp), + ) + } } } } diff --git a/app/src/main/java/com/moive/app/presentation/home/component/AddMeetingCard.kt b/app/src/main/java/com/moive/app/presentation/home/component/AddMeetingCard.kt deleted file mode 100644 index b90af703..00000000 --- a/app/src/main/java/com/moive/app/presentation/home/component/AddMeetingCard.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.moive.app.presentation.home.component - -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.moive.app.R -import com.moive.app.core.designsystem.theme.MoiveTheme -import com.moive.app.core.designsystem.theme.MoiveTheme.colors -import com.moive.app.core.designsystem.theme.MoiveTheme.radius -import com.moive.app.core.designsystem.theme.MoiveTheme.typography -import com.moive.app.core.extensions.noRippleClickable - -@Composable -fun AddMeetingCard( - onAddClick: () -> Unit, - modifier: Modifier = Modifier, -) { - Column( - modifier = modifier - .fillMaxWidth() - .aspectRatio(252f / 220f) - .background( - color = colors.fill.default05, - shape = RoundedCornerShape(radius.xxl), - ) - .noRippleClickable(onClick = onAddClick), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(8.dp), - ) { - Spacer(modifier = Modifier.weight(1f)) - - Icon( - imageVector = ImageVector.vectorResource(R.drawable.ic_add_plus_24), - contentDescription = null, - tint = Color.Unspecified, - ) - - Text( - text = "모임을 추가해주세요", - color = colors.text.subtle, - style = typography.label.smM, - ) - - Spacer(modifier = Modifier.weight(1f)) - - } -} - -@Preview(showBackground = true) -@Composable -private fun AddMeetingCardPreview() { - MoiveTheme { - AddMeetingCard( - onAddClick = {}, - modifier = Modifier.padding(20.dp), - ) - } -} diff --git a/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingCardItem.kt b/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingCardItem.kt index c92f9cec..4d022f28 100644 --- a/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingCardItem.kt +++ b/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingCardItem.kt @@ -87,7 +87,7 @@ fun ConfirmedMeetingCardItem( Row( modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, + verticalAlignment = Alignment.Top, horizontalArrangement = Arrangement.spacedBy(4.dp), ) { Icon( diff --git a/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingPager.kt b/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingPager.kt index 2e0cc095..d2f02b52 100644 --- a/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingPager.kt +++ b/app/src/main/java/com/moive/app/presentation/home/component/ConfirmedMeetingPager.kt @@ -31,12 +31,12 @@ import kotlinx.collections.immutable.persistentListOf fun ConfirmedMeetingPager( meetings: ImmutableList, onMeetingClick: (Long) -> Unit, - onAddMeetingClick: () -> Unit, modifier: Modifier = Modifier, ) { - val pageCount = if (meetings.size == 1) 2 else meetings.size + val pageCount = meetings.size val pagerState = rememberPagerState(pageCount = { pageCount }) - val cardColors = persistentListOf(colors.primary.default, colors.secondary.default, colors.fill.default02) + val cardColors = + persistentListOf(colors.primary.default, colors.secondary.default, colors.fill.default02) Column( @@ -48,23 +48,20 @@ fun ConfirmedMeetingPager( contentPadding = PaddingValues(horizontal = 20.dp), pageSpacing = 12.dp, ) { page -> - if (page < meetings.size) { - val meeting = meetings[page] - val cardColor = cardColors[page % cardColors.size] - ConfirmedMeetingCardItem( - title = meeting.title, - dateTime = meeting.dateTime, - location = meeting.location, - participantImageList = meeting.participantImageList, - extraCount = meeting.extraCount, - dDayText = meeting.dDayText, - cardColor = cardColor, - onCardClick = { onMeetingClick(meeting.id) }, - ) - } else { - AddMeetingCard(onAddClick = onAddMeetingClick) - } + val meeting = meetings[page] + val cardColor = cardColors[page % cardColors.size] + + ConfirmedMeetingCardItem( + title = meeting.title, + dateTime = meeting.dateTime, + location = meeting.location, + participantImageList = meeting.participantImageList, + extraCount = meeting.extraCount, + dDayText = meeting.dDayText, + cardColor = cardColor, + onCardClick = { onMeetingClick(meeting.id) }, + ) } if (pageCount > 1) { @@ -149,7 +146,6 @@ private fun ConfirmedMeetingPagerPreview() { ), ), onMeetingClick = {}, - onAddMeetingClick = {}, modifier = Modifier.padding(vertical = 20.dp), ) } diff --git a/app/src/main/java/com/moive/app/presentation/home/component/HomeEmptyMeetingList.kt b/app/src/main/java/com/moive/app/presentation/home/component/HomeEmptyMeetingList.kt deleted file mode 100644 index d61b3ec3..00000000 --- a/app/src/main/java/com/moive/app/presentation/home/component/HomeEmptyMeetingList.kt +++ /dev/null @@ -1,72 +0,0 @@ -package com.moive.app.presentation.home.component - -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.moive.app.R -import com.moive.app.core.designsystem.theme.MoiveTheme -import com.moive.app.core.designsystem.theme.MoiveTheme.colors -import com.moive.app.core.designsystem.theme.MoiveTheme.radius -import com.moive.app.core.designsystem.theme.MoiveTheme.typography - -@Composable -fun HomeEmptyMeetingList( - modifier: Modifier = Modifier, -) { - Column( - modifier = modifier - .fillMaxWidth() - .border( - width = 1.dp, - color = colors.stroke.default04, - shape = RoundedCornerShape(radius.xxl), - ) - .background( - color = colors.background.default01, - shape = RoundedCornerShape(radius.xxl) - ) - .padding(vertical = 40.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(12.dp), - ) { - Image( - painter = painterResource(R.drawable.ic_launcher_background), - contentDescription = null, - modifier = Modifier - .size(64.dp) - .clip( - shape = RoundedCornerShape(radius.md), - ), - ) - - Text( - text = "아직 참여 중인 모임이 없어요.", - color = colors.text.subtle, - style = typography.body.smNormalR, - ) - } -} - -@Preview(showBackground = true) -@Composable -private fun HomeEmptyMeetingListPreview() { - MoiveTheme { - HomeEmptyMeetingList( - modifier = Modifier.padding(20.dp), - ) - } -} diff --git a/app/src/main/java/com/moive/app/presentation/login/LoginScreen.kt b/app/src/main/java/com/moive/app/presentation/login/LoginScreen.kt index 3d97a7d9..4cda2b41 100644 --- a/app/src/main/java/com/moive/app/presentation/login/LoginScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/login/LoginScreen.kt @@ -123,7 +123,7 @@ private fun LoginScreen( Spacer(modifier = Modifier.weight(140f)) Image( - painter = painterResource(R.drawable.ic_launcher_background), + painter = painterResource(R.drawable.img_logo_white_bg), contentDescription = null, modifier = Modifier.size(128.dp), ) diff --git a/app/src/main/java/com/moive/app/presentation/login/signup/SignUpCompleteScreen.kt b/app/src/main/java/com/moive/app/presentation/login/signup/SignUpCompleteScreen.kt index 3c574289..0ffad173 100644 --- a/app/src/main/java/com/moive/app/presentation/login/signup/SignUpCompleteScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/login/signup/SignUpCompleteScreen.kt @@ -59,7 +59,7 @@ private fun SignUpCompleteScreen( Spacer(modifier = Modifier.weight(184f)) Image( - painter = painterResource(R.drawable.ic_launcher_background), + painter = painterResource(R.drawable.img_character_congratulation), contentDescription = null, modifier = Modifier.size(240.dp), ) diff --git a/app/src/main/java/com/moive/app/presentation/main/MainNavHost.kt b/app/src/main/java/com/moive/app/presentation/main/MainNavHost.kt index 8eac2683..04bda80d 100644 --- a/app/src/main/java/com/moive/app/presentation/main/MainNavHost.kt +++ b/app/src/main/java/com/moive/app/presentation/main/MainNavHost.kt @@ -39,9 +39,7 @@ fun MainNavHost( popEnterTransition = { fadeIn(animationSpec = tween(NAV_TRANSITION_DURATION_MS)) }, popExitTransition = { fadeOut(animationSpec = tween(NAV_TRANSITION_DURATION_MS)) }, ) { - splashGraph( - navController = navController, - ) + splashGraph() loginGraph( navController = navController, diff --git a/app/src/main/java/com/moive/app/presentation/main/MainScreen.kt b/app/src/main/java/com/moive/app/presentation/main/MainScreen.kt index a48bc17d..0ab8c11b 100644 --- a/app/src/main/java/com/moive/app/presentation/main/MainScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/main/MainScreen.kt @@ -28,13 +28,18 @@ import com.moive.app.core.designsystem.component.toast.LocalToastTrigger import com.moive.app.core.designsystem.component.toast.MoiveSnackbarHost import com.moive.app.core.designsystem.component.toast.MoiveToastVisuals import com.moive.app.core.designsystem.component.toast.ToastType +import com.moive.app.core.extensions.clearBackStackNavOptions +import com.moive.app.presentation.home.navigation.navigateToHome +import com.moive.app.presentation.login.navigation.navigateToLogin import com.moive.app.presentation.main.component.MainBottomBar import com.moive.app.presentation.main.component.MainTab import com.moive.app.presentation.meeting.create.navigation.navigateToMeetingCreation +import com.moive.app.presentation.splash.SplashOverlay import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlin.time.Duration.Companion.milliseconds private const val TOAST_DURATION = 3000L @@ -59,7 +64,7 @@ fun MainScreen( snackbarHostState.currentSnackbarData?.dismiss() launch { - delay(TOAST_DURATION) + delay(TOAST_DURATION.milliseconds) snackbarHostState.currentSnackbarData?.dismiss() } @@ -122,6 +127,20 @@ fun MainScreen( ) .navigationBarsPadding(), ) + + SplashOverlay( + navigateToHome = { + appState.navController.navigateToHome( + navOptions = appState.navController.clearBackStackNavOptions(), + ) + }, + navigateToLogin = { + appState.navController.navigateToLogin( + navOptions = appState.navController.clearBackStackNavOptions(), + ) + }, + modifier = Modifier.fillMaxSize(), + ) } } } diff --git a/app/src/main/java/com/moive/app/presentation/meeting/complete/component/CompletedPlaceCard.kt b/app/src/main/java/com/moive/app/presentation/meeting/complete/component/CompletedPlaceCard.kt index 1f82a5bf..92186436 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/complete/component/CompletedPlaceCard.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/complete/component/CompletedPlaceCard.kt @@ -56,6 +56,7 @@ fun CompletedPlaceCard( ) { if (isPlaceConfirmed) { Row( + modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp), ) { @@ -65,6 +66,7 @@ fun CompletedPlaceCard( style = typography.title.mdSb, maxLines = 1, overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f, fill = false), ) MoiveLabelChip( @@ -74,6 +76,7 @@ fun CompletedPlaceCard( } Row( + modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp), ) { @@ -89,6 +92,7 @@ fun CompletedPlaceCard( style = typography.label.xsR, maxLines = 1, overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f, fill = false), ) } } else { @@ -106,6 +110,8 @@ fun CompletedPlaceCard( } } + Spacer(modifier = Modifier.width(24.dp)) + VerticalDivider( modifier = Modifier.height(44.dp), thickness = 1.dp, diff --git a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedContract.kt b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedContract.kt index 5c9619e5..cf2af5e7 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedContract.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedContract.kt @@ -14,7 +14,7 @@ interface MeetingConfirmedContract { val step: Step = Step.MAIN, val meetingResultUiState: MeetingResultUiState = MeetingResultUiState.Idle, val myProfileImageUrl: String = "", - val meetingLink: String = "", + val inviteUrl: String = "", val isPlaceConfirmed: Boolean = true, val placeName: String = "", val placeCategory: String = "", diff --git a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedScreen.kt b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedScreen.kt index d2a1128d..77b3e9e0 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/MeetingConfirmedScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -19,7 +18,6 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign @@ -67,7 +65,9 @@ fun MeetingConfirmedRoute( viewModel.onKakaoMapRouteOpened(opened) } }, - onShareClick = { context.shareText("모임에 참여해보세요!\n${uiState.meetingLink}") }, + onShareClick = { + context.shareText("새로운 모임에 초대되었어요!🎉 아래 링크에서 모임을 확인해보세요.\n${uiState.inviteUrl}") + }, modifier = modifier, ) } @@ -127,17 +127,18 @@ private fun MeetingConfirmedScreen( textAlign = TextAlign.Center, ) - Spacer(modifier = Modifier.height(12.dp)) - Image( - painter = painterResource(R.drawable.ic_launcher_background), + painter = painterResource( + if (uiState.isPlaceConfirmed) R.drawable.img_character_crop_congratulation + else R.drawable.img_character_congratulation + ), contentDescription = null, - contentScale = ContentScale.Crop, modifier = Modifier .fillMaxWidth() - .aspectRatio( - if (uiState.isPlaceConfirmed) 320f / 167f else 320f / 247f + .padding( + top = if (uiState.isPlaceConfirmed) 12.dp else 36.dp ) + .padding(horizontal = 20.dp) ) Spacer(modifier = Modifier.height(16.dp)) diff --git a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/component/PlaceTimeRow.kt b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/component/PlaceTimeRow.kt index a71ef385..c8dd1b65 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/confirmed/component/PlaceTimeRow.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/confirmed/component/PlaceTimeRow.kt @@ -59,6 +59,7 @@ fun PlaceTimeRow( verticalArrangement = Arrangement.spacedBy(4.dp), ) { Row( + modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp), ) { @@ -68,6 +69,7 @@ fun PlaceTimeRow( style = typography.title.mdSb, maxLines = 1, overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f, fill = false), ) if(isPlaceConfirmed){ @@ -80,7 +82,9 @@ fun PlaceTimeRow( if (isPlaceConfirmed){ Row( - modifier = Modifier.noRippleClickable(onClick = onPlaceClick), + modifier = Modifier + .fillMaxWidth() + .noRippleClickable(onClick = onPlaceClick), verticalAlignment = Alignment.CenterVertically, ) { Icon( @@ -97,6 +101,7 @@ fun PlaceTimeRow( style = typography.label.xsR, maxLines = 1, overflow = TextOverflow.Ellipsis, + modifier = Modifier.weight(1f, fill = false), ) Icon( @@ -114,6 +119,8 @@ fun PlaceTimeRow( } } + Spacer(modifier = Modifier.width(24.dp)) + VerticalDivider( modifier = Modifier.height(44.dp), thickness = 1.dp, diff --git a/app/src/main/java/com/moive/app/presentation/meeting/detail/MeetingDetailScreen.kt b/app/src/main/java/com/moive/app/presentation/meeting/detail/MeetingDetailScreen.kt index 964bf866..8c53d4f0 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/detail/MeetingDetailScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/detail/MeetingDetailScreen.kt @@ -86,7 +86,9 @@ fun MeetingDetailRoute( innerPadding = innerPadding, uiState = uiState, onBackClick = navigateBack, - onInviteFriendClick = { context.shareText(uiState.inviteUrl) }, + onInviteFriendClick = { + context.shareText("새로운 모임에 초대되었어요!🎉 아래 링크에서 모임을 확인해보세요.\n${uiState.inviteUrl}") + }, onActionButtonClick = { when (uiState.status) { MeetingStatus.CONDITION_INPUT -> navigateToCondition( diff --git a/app/src/main/java/com/moive/app/presentation/meeting/list/MeetingListScreen.kt b/app/src/main/java/com/moive/app/presentation/meeting/list/MeetingListScreen.kt index f33bff96..5343604a 100644 --- a/app/src/main/java/com/moive/app/presentation/meeting/list/MeetingListScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/meeting/list/MeetingListScreen.kt @@ -1,6 +1,8 @@ package com.moive.app.presentation.meeting.list +import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer @@ -8,17 +10,23 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.moive.app.R import com.moive.app.core.designsystem.component.chip.LabelType import com.moive.app.core.designsystem.component.topbar.MoiveSubTitleTopBar import com.moive.app.core.designsystem.theme.MoiveTheme import com.moive.app.core.designsystem.theme.MoiveTheme.colors +import com.moive.app.core.designsystem.theme.MoiveTheme.typography import com.moive.app.presentation.common.component.TabChipList import com.moive.app.presentation.meeting.list.component.MeetingCardList @@ -78,18 +86,49 @@ private fun MeetingListScreen( modifier = Modifier.padding(horizontal = 20.dp), ) - Spacer(modifier = Modifier.height(10.dp)) - MeetingCardList( - meetings = uiState.meetingList, - onMeetingClick = onMeetingClick, - isLoading = uiState.meetingListUiState is MeetingListUiState.Loading, - onLoadMore = onLoadMore, - modifier = Modifier - .fillMaxWidth() - .weight(1f) - .padding(horizontal = 20.dp), - ) + when { + uiState.meetingListUiState is MeetingListUiState.Loading && uiState.meetingList.isEmpty() -> Unit + + uiState.meetingList.isEmpty() -> { + Column( + modifier = Modifier + .fillMaxSize() + .padding(horizontal = 20.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + ) { + Image( + painter = painterResource(R.drawable.img_character_empty_default), + contentDescription = null, + modifier = Modifier.size(80.dp) + ) + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = "아직 참여 중인 모임이 없어요.", + color = colors.text.subtle, + style = typography.body.smNormalR, + ) + } + } + + else -> { + Spacer(modifier = Modifier.height(10.dp)) + + MeetingCardList( + meetings = uiState.meetingList, + onMeetingClick = onMeetingClick, + isLoading = uiState.meetingListUiState is MeetingListUiState.Loading, + onLoadMore = onLoadMore, + modifier = Modifier + .fillMaxWidth() + .weight(1f) + .padding(horizontal = 20.dp), + ) + } + } } } diff --git a/app/src/main/java/com/moive/app/presentation/mypage/component/ProfileCard.kt b/app/src/main/java/com/moive/app/presentation/mypage/component/ProfileCard.kt index 609e21e4..dd6e94d4 100644 --- a/app/src/main/java/com/moive/app/presentation/mypage/component/ProfileCard.kt +++ b/app/src/main/java/com/moive/app/presentation/mypage/component/ProfileCard.kt @@ -13,6 +13,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.moive.app.R import com.moive.app.core.designsystem.component.image.UrlImage @@ -38,7 +39,7 @@ fun ProfileCard( .size(52.dp) .clip(shape = RoundedCornerShape(radius.circular)), contentScale = ContentScale.Crop, - placeholder = R.drawable.img_avatar_placeholder, + placeholder = painterResource(R.drawable.img_avatar_placeholder), ) Column( diff --git a/app/src/main/java/com/moive/app/presentation/notification/NotificationScreen.kt b/app/src/main/java/com/moive/app/presentation/notification/NotificationScreen.kt index d780039b..d0b1782b 100644 --- a/app/src/main/java/com/moive/app/presentation/notification/NotificationScreen.kt +++ b/app/src/main/java/com/moive/app/presentation/notification/NotificationScreen.kt @@ -1,19 +1,25 @@ package com.moive.app.presentation.notification +import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues 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.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel @@ -21,16 +27,18 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.repeatOnLifecycle +import com.moive.app.R import com.moive.app.core.designsystem.component.topbar.MoiveSubTitleTopBar import com.moive.app.core.designsystem.theme.MoiveTheme import com.moive.app.core.designsystem.theme.MoiveTheme.colors +import com.moive.app.core.designsystem.theme.MoiveTheme.typography import com.moive.app.core.extensions.isNotificationEnabled import com.moive.app.core.extensions.navigateToAppNotificationSettings import com.moive.app.data.notification.model.NotificationItemModel -import com.moive.app.presentation.notification.component.EmptyNotificationContent import com.moive.app.presentation.notification.component.NotificationListItem import com.moive.app.presentation.notification.component.NotificationSettingButton import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf @Composable fun NotificationRoute( @@ -83,28 +91,39 @@ private fun NotificationScreen( backgroundColor = colors.background.default02, ) - LazyColumn( - modifier = Modifier, - contentPadding = PaddingValues(vertical = 24.dp, horizontal = 20.dp), - ) { - item { - NotificationSettingButton( - isNotificationPermissionGranted = isNotificationPermissionGranted, - onSettingClick = onNotificationSettingClick, + NotificationSettingButton( + isNotificationPermissionGranted = isNotificationPermissionGranted, + onSettingClick = onNotificationSettingClick, + modifier = Modifier.padding(bottom = 5.dp) + ) + + if (notifications.isEmpty()) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(horizontal = 20.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + ) { + Image( + painter = painterResource(R.drawable.img_character_empty_default), + contentDescription = null, + modifier = Modifier.size(80.dp) ) - } - if (notifications.isEmpty()) { - item { - EmptyNotificationContent( - modifier = Modifier.fillParentMaxHeight(), - ) - } - } else { - item { - Spacer(modifier = modifier.height(28.dp)) - } + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = "새로운 알림이 없어요.", + color = colors.text.tertiary, + style = typography.body.smNormalR, + ) + } + } else { + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(vertical = 23.dp, horizontal = 20.dp), + ) { items( items = notifications, key = { it.id }, diff --git a/app/src/main/java/com/moive/app/presentation/notification/component/EmptyNotificationContent.kt b/app/src/main/java/com/moive/app/presentation/notification/component/EmptyNotificationContent.kt deleted file mode 100644 index fdcac533..00000000 --- a/app/src/main/java/com/moive/app/presentation/notification/component/EmptyNotificationContent.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.moive.app.presentation.notification.component - -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.moive.app.R -import com.moive.app.core.designsystem.theme.MoiveTheme -import com.moive.app.core.designsystem.theme.MoiveTheme.colors -import com.moive.app.core.designsystem.theme.MoiveTheme.typography - -@Composable -fun EmptyNotificationContent( - modifier: Modifier = Modifier, -) { - Column( - modifier = modifier.fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - ) { - Image( - painter = painterResource(R.drawable.ic_launcher_background), - contentDescription = null, - modifier = Modifier.size(80.dp) - ) - - Spacer(modifier = Modifier.height(16.dp)) - - Text( - text = "새로운 알림이 없어요.", - color = colors.text.tertiary, - style = typography.body.smNormalR, - ) - - } -} - -@Preview(showBackground = true) -@Composable -private fun EmptyNotificationContentPreview() { - MoiveTheme { - EmptyNotificationContent() - } -} diff --git a/app/src/main/java/com/moive/app/presentation/notification/component/NotificationSettingButton.kt b/app/src/main/java/com/moive/app/presentation/notification/component/NotificationSettingButton.kt index 2c14daf8..003a973b 100644 --- a/app/src/main/java/com/moive/app/presentation/notification/component/NotificationSettingButton.kt +++ b/app/src/main/java/com/moive/app/presentation/notification/component/NotificationSettingButton.kt @@ -31,6 +31,7 @@ fun NotificationSettingButton( Row( modifier = modifier .fillMaxWidth() + .padding(horizontal = 20.dp) .background( color = colors.fill.default08, shape = RoundedCornerShape(radius.xl), diff --git a/app/src/main/java/com/moive/app/presentation/splash/SplashContract.kt b/app/src/main/java/com/moive/app/presentation/splash/SplashContract.kt index 908e59cd..cd58ad7b 100644 --- a/app/src/main/java/com/moive/app/presentation/splash/SplashContract.kt +++ b/app/src/main/java/com/moive/app/presentation/splash/SplashContract.kt @@ -1,10 +1,16 @@ package com.moive.app.presentation.splash +import androidx.compose.runtime.Immutable + interface SplashContract { + @Immutable + data class State( + val isSplashReady: Boolean = false, + ) + sealed interface SideEffect { - data object NavigateToHome: SideEffect - data object NavigateToLogin: SideEffect + data class NavigateToHome(val isAutoLoginSuccess: Boolean) : SideEffect } } diff --git a/app/src/main/java/com/moive/app/presentation/splash/SplashOverlay.kt b/app/src/main/java/com/moive/app/presentation/splash/SplashOverlay.kt new file mode 100644 index 00000000..c2defe74 --- /dev/null +++ b/app/src/main/java/com/moive/app/presentation/splash/SplashOverlay.kt @@ -0,0 +1,120 @@ +package com.moive.app.presentation.splash + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.tooling.preview.Preview +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.repeatOnLifecycle +import com.airbnb.lottie.compose.LottieAnimation +import com.airbnb.lottie.compose.LottieCompositionSpec +import com.airbnb.lottie.compose.animateLottieCompositionAsState +import com.airbnb.lottie.compose.rememberLottieComposition +import com.moive.app.R +import com.moive.app.core.designsystem.theme.MoiveTheme +import com.moive.app.core.designsystem.theme.MoiveTheme.colors +import com.moive.app.presentation.splash.SplashContract.SideEffect.NavigateToHome + +@Composable +fun SplashOverlay( + navigateToHome: () -> Unit, + navigateToLogin: () -> Unit, + modifier: Modifier = Modifier, + viewModel: SplashViewModel = hiltViewModel(), +) { + val lifeCycleOwner = LocalLifecycleOwner.current + val uiState by viewModel.uiState.collectAsStateWithLifecycle() + var isAnimationEnded by remember { mutableStateOf(false) } + + val lottieComposition by rememberLottieComposition( + LottieCompositionSpec.RawRes(R.raw.splash_animation) + ) + val lottieState by animateLottieCompositionAsState( + composition = lottieComposition, + isPlaying = uiState.isSplashReady, + restartOnPlay = true, + speed = 1f, + iterations = 1, + ) + + LaunchedEffect(lifeCycleOwner) { + lifeCycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.sideEffect.collect { sideEffect -> + when (sideEffect) { + is NavigateToHome -> { + if (sideEffect.isAutoLoginSuccess) navigateToHome() else navigateToLogin() + viewModel.onReady() + } + } + } + } + } + + LaunchedEffect(Unit) { + viewModel.tryAutoLogin() + } + + LaunchedEffect(uiState.isSplashReady, lottieState) { + if (uiState.isSplashReady && lottieState == 1f) { + isAnimationEnded = true + } + } + + when { + uiState.isSplashReady && isAnimationEnded -> Unit + uiState.isSplashReady -> { + LottieAnimation( + composition = lottieComposition, + progress = { lottieState }, + modifier = modifier.fillMaxSize(), + contentScale = ContentScale.Crop, + ) + } + + else -> { + Box( + modifier = modifier + .fillMaxSize() + .background(color = colors.primary.default), + ) + } + } +} + +@Preview(showBackground = true) +@Composable +private fun SplashAnimationPreview() { + MoiveTheme { + Box( + modifier = Modifier + .fillMaxSize() + .background(color = colors.primary.default), + ) { + val lottieComposition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.splash_animation)) + val lottieState by animateLottieCompositionAsState( + composition = lottieComposition, + restartOnPlay = true, + speed = 1f, + iterations = 1, + ) + + LottieAnimation( + composition = lottieComposition, + progress = { lottieState }, + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop, + ) + } + } +} diff --git a/app/src/main/java/com/moive/app/presentation/splash/SplashScreen.kt b/app/src/main/java/com/moive/app/presentation/splash/SplashScreen.kt deleted file mode 100644 index 743da382..00000000 --- a/app/src/main/java/com/moive/app/presentation/splash/SplashScreen.kt +++ /dev/null @@ -1,81 +0,0 @@ -package com.moive.app.presentation.splash - -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.size -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.compose.LocalLifecycleOwner -import androidx.lifecycle.repeatOnLifecycle -import com.moive.app.R -import com.moive.app.core.designsystem.theme.MoiveTheme.colors -import com.moive.app.presentation.splash.SplashContract.SideEffect.NavigateToHome -import com.moive.app.presentation.splash.SplashContract.SideEffect.NavigateToLogin - - -@Composable -fun SplashRoute( - navigateToLogin: () -> Unit, - navigateToHome: () -> Unit, - modifier: Modifier = Modifier, - viewModel: SplashViewModel = hiltViewModel() -) { - val lifeCycleOwner = LocalLifecycleOwner.current - - LaunchedEffect(lifeCycleOwner) { - lifeCycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { - viewModel.sideEffect.collect { sideEffect -> - when (sideEffect) { - NavigateToHome -> navigateToHome() - NavigateToLogin -> navigateToLogin() - } - } - } - } - - LaunchedEffect(Unit) { - viewModel.tryAutoLogin() - } - - SplashScreen( - modifier = modifier, - ) -} - -@Composable -private fun SplashScreen( - modifier: Modifier = Modifier, -) { - Column( - modifier = modifier - .fillMaxSize() - .background(color = colors.background.default00), - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally, - ) { - Image( - painter = painterResource(R.drawable.ic_launcher_foreground), - contentDescription = null, - modifier = Modifier - .size(260.dp) - .aspectRatio(1f), - ) - } -} - -@Preview(showBackground = true) -@Composable -private fun SplashScreenPreview() { - SplashScreen() -} diff --git a/app/src/main/java/com/moive/app/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/moive/app/presentation/splash/SplashViewModel.kt index 1be21205..b687fb7e 100644 --- a/app/src/main/java/com/moive/app/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/moive/app/presentation/splash/SplashViewModel.kt @@ -5,12 +5,14 @@ import androidx.lifecycle.viewModelScope import com.moive.app.core.utils.suspendRunCatching import com.moive.app.data.auth.repository.AuthRepository import com.moive.app.presentation.splash.SplashContract.SideEffect.NavigateToHome -import com.moive.app.presentation.splash.SplashContract.SideEffect.NavigateToLogin import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.async import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.receiveAsFlow +import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject @@ -21,9 +23,16 @@ class SplashViewModel @Inject constructor( private val authRepository: AuthRepository, ) : ViewModel() { + private val _uiState = MutableStateFlow(SplashContract.State()) + val uiState = _uiState.asStateFlow() + private val _sideEffect = Channel(Channel.BUFFERED) val sideEffect = _sideEffect.receiveAsFlow() + fun onReady() { + _uiState.update { it.copy(isSplashReady = true) } + } + fun tryAutoLogin() { viewModelScope.launch { val delayTime = async { @@ -35,15 +44,16 @@ class SplashViewModel @Inject constructor( } delayTime.await() - reissueToken.await() + val isAutoLoginSuccess = reissueToken.await() .onSuccess { Timber.tag(AUTHORIZATION).d(AUTO_LOGIN_SUCCESS_MESSAGE) - _sideEffect.send(NavigateToHome) } .onFailure { error -> Timber.tag(AUTHORIZATION).e("$AUTO_LOGIN_FAILURE_MESSAGE $error") - _sideEffect.send(NavigateToLogin) } + .isSuccess + + _sideEffect.send(NavigateToHome(isAutoLoginSuccess = isAutoLoginSuccess)) } } @@ -60,7 +70,7 @@ class SplashViewModel @Inject constructor( } companion object { - private const val SPLASH_DELAY = 2000L + private const val SPLASH_DELAY = 700L private const val AUTHORIZATION = "Authorization" private const val REISSUE_SUCCESS_MESSAGE = "토큰 재발급 성공" private const val REISSUE_FAILURE_MESSAGE = "토큰 재발급 실패" diff --git a/app/src/main/java/com/moive/app/presentation/splash/navigation/SplashNavigation.kt b/app/src/main/java/com/moive/app/presentation/splash/navigation/SplashNavigation.kt index 1d59416a..08303438 100644 --- a/app/src/main/java/com/moive/app/presentation/splash/navigation/SplashNavigation.kt +++ b/app/src/main/java/com/moive/app/presentation/splash/navigation/SplashNavigation.kt @@ -1,26 +1,21 @@ package com.moive.app.presentation.splash.navigation -import androidx.navigation.NavController +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.ui.Modifier import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import com.moive.app.core.extensions.clearBackStackNavOptions +import com.moive.app.core.designsystem.theme.MoiveTheme.colors import com.moive.app.core.navigation.Route -import com.moive.app.presentation.home.navigation.navigateToHome -import com.moive.app.presentation.login.navigation.navigateToLogin -import com.moive.app.presentation.splash.SplashRoute import kotlinx.serialization.Serializable -fun NavGraphBuilder.splashGraph( - navController: NavController, -) { +fun NavGraphBuilder.splashGraph() { composable { - SplashRoute( - navigateToLogin = navController::navigateToLogin, - navigateToHome = { - navController.navigateToHome( - navOptions = navController.clearBackStackNavOptions() - ) - }, + Box( + modifier = Modifier + .fillMaxSize() + .background(color = colors.primary.default), ) } } diff --git a/app/src/main/java/com/moive/app/presentation/voting/VotingViewModel.kt b/app/src/main/java/com/moive/app/presentation/voting/VotingViewModel.kt index 5e9a4956..1eae5292 100644 --- a/app/src/main/java/com/moive/app/presentation/voting/VotingViewModel.kt +++ b/app/src/main/java/com/moive/app/presentation/voting/VotingViewModel.kt @@ -9,6 +9,7 @@ import com.moive.app.data.voting.repository.VotingRepository import com.moive.app.presentation.voting.VotingContract.Step import com.moive.app.presentation.voting.navigation.Voting import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentSetOf import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toPersistentList @@ -81,7 +82,12 @@ class VotingViewModel @Inject constructor( } private fun getRecommendedPlaces(recommendedAreaId: Long) = viewModelScope.launch { - _uiState.update { it.copy(recommendedPlaceUiState = RecommendedPlaceUiState.Loading) } + _uiState.update { + it.copy( + recommendedPlaceUiState = RecommendedPlaceUiState.Loading, + placeList = persistentListOf(), + ) + } votingRepository.getRecommendedPlaces(meetingId, recommendedAreaId) .onSuccess { places -> diff --git a/app/src/main/res/drawable/ic_moive_logo.xml b/app/src/main/res/drawable/ic_moive_logo.xml new file mode 100644 index 00000000..c08614cf --- /dev/null +++ b/app/src/main/res/drawable/ic_moive_logo.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/img_character_congratulation.png b/app/src/main/res/drawable/img_character_congratulation.png new file mode 100644 index 00000000..730f7216 Binary files /dev/null and b/app/src/main/res/drawable/img_character_congratulation.png differ diff --git a/app/src/main/res/drawable/img_character_crop_congratulation.png b/app/src/main/res/drawable/img_character_crop_congratulation.png new file mode 100644 index 00000000..5a30df07 Binary files /dev/null and b/app/src/main/res/drawable/img_character_crop_congratulation.png differ diff --git a/app/src/main/res/drawable/img_character_empty_default.png b/app/src/main/res/drawable/img_character_empty_default.png new file mode 100644 index 00000000..4b101fa4 Binary files /dev/null and b/app/src/main/res/drawable/img_character_empty_default.png differ diff --git a/app/src/main/res/drawable/img_character_empty_home.png b/app/src/main/res/drawable/img_character_empty_home.png new file mode 100644 index 00000000..418c1036 Binary files /dev/null and b/app/src/main/res/drawable/img_character_empty_home.png differ diff --git a/app/src/main/res/drawable/img_logo_primary_bg.png b/app/src/main/res/drawable/img_logo_primary_bg.png new file mode 100644 index 00000000..2aa0ef71 Binary files /dev/null and b/app/src/main/res/drawable/img_logo_primary_bg.png differ diff --git a/app/src/main/res/drawable/img_logo_white_bg.png b/app/src/main/res/drawable/img_logo_white_bg.png new file mode 100644 index 00000000..c2ceec04 Binary files /dev/null and b/app/src/main/res/drawable/img_logo_white_bg.png differ diff --git a/app/src/main/res/drawable/img_moive_symbol_name.png b/app/src/main/res/drawable/img_moive_symbol_name.png new file mode 100644 index 00000000..fec98eb8 Binary files /dev/null and b/app/src/main/res/drawable/img_moive_symbol_name.png differ diff --git a/app/src/main/res/raw/splash_animation.json b/app/src/main/res/raw/splash_animation.json new file mode 100644 index 00000000..901ea271 --- /dev/null +++ b/app/src/main/res/raw/splash_animation.json @@ -0,0 +1 @@ +{"nm":"Main Scene","ddd":0,"h":800,"w":360,"meta":{"g":"@lottiefiles/creator@1.111.1"},"layers":[{"ty":4,"nm":"Shape Layer 4","sr":1,"st":-12,"op":70,"ip":41,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[179.99999867319443,400.00003419907665]},"s":{"a":1,"k":[{"o":{"x":0.55,"y":0.06},"i":{"x":0.32554572610294114,"y":1.0164295168130824},"s":[100,100],"t":41},{"s":[10000,10000],"t":66}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.36,"y":1},"s":[180.00003511842746,400.00003083301607],"t":42},{"o":{"x":0.65,"y":0},"i":{"x":0.36,"y":1},"s":[179.99984397337585,400.0000467617703],"t":46},{"o":{"x":0.65,"y":0},"i":{"x":1,"y":1},"s":[151.12717446877366,400.00024673694503],"t":48},{"s":[50.0913573062179,400.00145812130376],"t":50}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 8","np":3,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 2","np":4,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[360,800],[0,800],[0,0],[360,0],[360,800]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 4","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.8,-3.12],[0,0],[-3.12,-1.8],[-1.8,3.12],[0,0],[-1.56,0],[0,-2.52],[0,0],[0,-0.06],[-3.6,0],[0,3.6],[3.6,0],[1.02,-0.65],[0.77,0],[0,2.53],[-0.28,0.6],[0,0],[0,0],[3.12,1.8]],"o":[[-3.12,-1.8],[0,0],[-1.8,3.12],[3.12,1.8],[0,0],[0.82,-1.2],[2.52,0],[0,0],[0,0.06],[0,3.6],[3.6,0],[0,-3.6],[-1.3,0],[-0.64,0.34],[-2.53,0],[0,-0.71],[0,0],[0,0],[1.8,-3.12],[0,0]],"v":[[192.79,383.97],[183.87,386.36],[171.89,407.11],[174.28,416.03],[183.19,413.64],[186.67,407.61],[190.44,405.63],[195,410.2],[195,410.19],[195,410.38],[201.53,416.9],[208.06,410.38],[201.53,403.85],[198,404.89],[195.87,405.41],[191.29,400.83],[191.73,398.86],[191.79,398.74],[195.18,392.89],[192.79,383.97]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 5","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.8,-3.12],[0,0],[-3.12,-1.8],[-1.8,3.12],[0,0],[3.12,1.8]],"o":[[-3.12,-1.8],[0,0],[-1.8,3.12],[3.12,1.8],[0,0],[1.8,-3.12],[0,0]],"v":[[173.71,383.97],[164.8,386.36],[152.82,407.11],[155.21,416.03],[164.12,413.64],[176.1,392.89],[173.71,383.97]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.4706,0.2588,1]},"r":2,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":26.57},{"s":[100,100],"t":28.71}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":26.57},{"s":[0,0],"t":28.71}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":26.57},{"s":[100],"t":28.71}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 7","np":3,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 3","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 6","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-1.1],[0,0],[1.1,0],[0,0],[0,1.1],[0,0],[-1.1,0]],"o":[[0,0],[1.1,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0],[0,-1.1],[0,0]],"v":[[128,786],[232,786],[234,788],[234,788],[232,790],[128,790],[126,788],[126,788],[128,786]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":22.29},{"s":[100,100],"t":24.43}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":22.29},{"s":[0,0],"t":24.43}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":22.29},{"s":[100],"t":24.43}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 5","np":2,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 4","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 7","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[360,0],[360,24],[0,24]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":18},{"s":[100,100],"t":20.14}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":18},{"s":[0,0],"t":20.14}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":18},{"s":[100],"t":20.14}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":20.14},{"s":[100,100],"t":22.29}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":20.14},{"s":[0,776],"t":22.29}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20.14},{"s":[100],"t":22.29}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 6","np":14,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 8","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[5.85,-2.92],[0,0],[-0.92,1.89],[0,0],[0,0],[0,0],[-0.06,0.84],[0,0],[0,0],[0,0]],"o":[[0,4.8],[0,0],[2.75,-1.36],[0,0],[0,0],[0,0],[0.2,-0.74],[0,0],[0,0],[0,0],[0,0]],"v":[[152.98,731.24],[145.81,743.07],[144.74,741.59],[150.05,736.76],[145.11,737.23],[144.86,735.54],[150.65,735.18],[151.03,732.82],[145.69,732.82],[145.69,731.24],[152.98,731.24]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 9","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.17,729.67],[157.17,735.9],[159.52,735.9],[159.52,737.5],[157.17,737.5],[157.17,745.53],[155.22,745.53],[155.22,729.67],[157.17,729.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 10","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[5.85,-2.92],[0,0],[-0.92,1.89],[0,0],[0,0],[0,0],[-0.06,0.84],[0,0],[0,0],[0,0]],"o":[[0,4.8],[0,0],[2.75,-1.36],[0,0],[0,0],[0,0],[0.2,-0.74],[0,0],[0,0],[0,0],[0,0]],"v":[[168.54,731.24],[161.37,743.07],[160.3,741.59],[165.6,736.76],[160.66,737.23],[160.42,735.54],[166.2,735.18],[166.59,732.82],[161.24,732.82],[161.24,731.24],[168.54,731.24]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 11","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[172.72,729.67],[172.72,735.9],[175.08,735.9],[175.08,737.5],[172.72,737.5],[172.72,745.53],[170.77,745.53],[170.77,729.67],[172.72,729.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 12","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.58],[2.91,-0.28],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.02,2.38],[-3.39,0]],"o":[[3.41,0],[0,2.38],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.89,-0.28],[-0.02,-2.58],[0,0]],"v":[[183.06,730.57],[188.98,734.86],[184.03,739.11],[184.03,742.03],[190.35,742.03],[190.35,743.63],[175.84,743.63],[175.84,742.03],[182.09,742.03],[182.09,739.11],[177.17,734.86],[183.06,730.57]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 13","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-1.67],[-2.32,0],[0,1.72],[2.35,-0.02]],"o":[[-2.32,-0.02],[-0.02,1.72],[2.35,0],[0,-1.67],[0,0]],"v":[[183.06,732.15],[179.09,734.86],[183.06,737.6],[187.07,734.86],[183.06,732.15]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 14","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[210.18,742.1],[210.18,743.72],[195.66,743.72],[195.66,742.1],[201.92,742.1],[201.92,739.52],[197.39,739.52],[197.39,734.31],[206.53,734.31],[206.53,732.35],[197.35,732.35],[197.35,730.76],[208.46,730.76],[208.46,735.86],[199.34,735.86],[199.34,737.92],[208.83,737.92],[208.83,739.52],[203.85,739.52],[203.85,742.1],[210.18,742.1]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 15","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.58,-3.34],[0,0],[0,2.06],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,2.13],[0,0],[0.61,-3.13],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.86,731.22],[223.86,733],[223.28,740.68],[221.29,740.5],[221.91,733],[221.91,732.8],[212.75,732.8],[212.75,731.22],[223.86,731.22]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 16","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[225.7,741.78],[225.7,743.39],[211.22,743.39],[211.22,741.78],[225.7,741.78]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 17","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[240,729.69],[240,741.17],[238.04,741.17],[238.04,729.69],[240,729.69]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 18","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[240.45,743.67],[240.45,745.25],[229.5,745.25],[229.5,740],[231.47,740],[231.47,743.67],[240.45,743.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 19","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.3],[2.41,0],[0,2.36],[-2.43,0]],"o":[[2.41,0],[0,2.36],[-2.43,0],[0,-2.3],[0,0]],"v":[[231.35,730.73],[235.62,734.7],[231.35,738.69],[227.06,734.7],[231.35,730.73]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 20","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-1.37],[-1.35,0],[0,1.41],[1.32,0]],"o":[[-1.35,0],[-0.02,1.41],[1.32,0],[0,-1.37],[0,0]],"v":[[231.35,732.43],[228.97,734.7],[231.35,736.99],[233.7,734.7],[231.35,732.43]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0,0,0]},"r":1,"o":{"a":0,"k":85}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":15.86},{"s":[100,100],"t":18}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":15.86},{"s":[0,0],"t":18}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15.86},{"s":[100],"t":18}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":24.43},{"s":[100,100],"t":26.57}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":24.43},{"s":[0,0],"t":26.57}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":24.43},{"s":[100],"t":26.57}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":30.86},{"s":[100,100],"t":33}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":30.86},{"s":[0,0],"t":33}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30.86},{"s":[100],"t":33}]}}]}],"ind":1},{"ty":4,"nm":"logo 3","sr":1,"st":-13,"op":70,"ip":41,"hd":true,"ln":"logo 0","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[20.12,12.12]},"s":{"a":1,"k":[{"o":{"x":0.55,"y":0.06},"i":{"x":0.32957958574054624,"y":1.0164588188368484},"s":[0,0],"t":41},{"s":[10000,10000],"t":66}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":1,"y":1},"s":[179.99392196229553,399.9939112023839],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[179.99,400.64],"t":51},{"s":[75.04709877046605,400.63890897359965],"t":66}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 2","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[0,0],[0,-0.51],[-1.81,0],[-0.46,0.24],[-0.93,0],[0,-2.58],[2.58,0],[0,2.58],[0,0.04],[0,0],[1.81,0],[0.59,-0.86],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[0,0],[-0.2,0.43],[0,1.81],[0.55,0],[0.73,-0.47],[2.58,0],[0,2.58],[-2.58,0],[0,-0.04],[0,0],[0,-1.81],[-1.12,0],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[22.9,2.34],[29.29,0.63],[31.01,7.02],[28.58,11.22],[28.54,11.31],[28.22,12.72],[31.51,16.01],[33.04,15.63],[35.57,14.89],[40.25,19.57],[35.57,24.25],[30.89,19.57],[30.89,19.44],[30.89,19.44],[27.61,16.16],[24.91,17.58],[22.41,21.91],[16.02,23.62],[14.31,17.23],[22.9,2.34]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[9.22,2.34],[15.62,0.63],[17.33,7.02],[8.73,21.91],[2.34,23.62],[0.63,17.23],[9.22,2.34]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}}],"ind":2},{"ty":4,"nm":"logo 2","sr":1,"st":-13,"op":70,"ip":41,"hd":true,"ln":"logo 0","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[20.12,12.12]},"s":{"a":1,"k":[{"o":{"x":0.55,"y":0.06},"i":{"x":0.32957958574054624,"y":1.0164588188368484},"s":[0,0],"t":41},{"s":[10000,10000],"t":66}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":1,"y":1},"s":[179.99392196229553,399.9939112023839],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[179.99,400.64],"t":51},{"s":[75.04709877046605,400.63890897359965],"t":66}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 2","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[0,0],[0,-0.51],[-1.81,0],[-0.46,0.24],[-0.93,0],[0,-2.58],[2.58,0],[0,2.58],[0,0.04],[0,0],[1.81,0],[0.59,-0.86],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[0,0],[-0.2,0.43],[0,1.81],[0.55,0],[0.73,-0.47],[2.58,0],[0,2.58],[-2.58,0],[0,-0.04],[0,0],[0,-1.81],[-1.12,0],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[22.9,2.34],[29.29,0.63],[31.01,7.02],[28.58,11.22],[28.54,11.31],[28.22,12.72],[31.51,16.01],[33.04,15.63],[35.57,14.89],[40.25,19.57],[35.57,24.25],[30.89,19.57],[30.89,19.44],[30.89,19.44],[27.61,16.16],[24.91,17.58],[22.41,21.91],[16.02,23.62],[14.31,17.23],[22.9,2.34]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[9.22,2.34],[15.62,0.63],[17.33,7.02],[8.73,21.91],[2.34,23.62],[0.63,17.23],[9.22,2.34]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}}],"ind":3},{"ty":4,"nm":"logo 1","sr":1,"st":0,"op":41,"ip":0,"hd":false,"ln":"logo 0","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[20.12,12.12]},"s":{"a":1,"k":[{"o":{"x":0.55,"y":0.06},"i":{"x":0.36,"y":1},"s":[0,0],"t":0},{"o":{"x":0.65,"y":0},"i":{"x":0.36,"y":1},"s":[180,180],"t":12},{"o":{"x":0.32554572610294114,"y":0.003865500057444793},"i":{"x":0.6522686613707984,"y":0.007746242946390591},"s":[180,180],"t":23},{"s":[0,0],"t":41}]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[179.99392196229553,399.9939112023839]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.30941151851365545,"y":1.0768066534475118},"i":{"x":0.36,"y":1},"s":[0],"t":0},{"o":{"x":0.65,"y":0},"i":{"x":0.507058331144958,"y":1.0041882628753407},"s":[100],"t":12},{"o":{"x":0.4868902639180673,"y":-0.00016805183987655958},"i":{"x":0.36,"y":1},"s":[100],"t":32},{"s":[100],"t":41}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 2","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[0,0],[0,-0.51],[-1.81,0],[-0.46,0.24],[-0.93,0],[0,-2.58],[2.58,0],[0,2.58],[0,0.04],[0,0],[1.81,0],[0.59,-0.86],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[0,0],[-0.2,0.43],[0,1.81],[0.55,0],[0.73,-0.47],[2.58,0],[0,2.58],[-2.58,0],[0,-0.04],[0,0],[0,-1.81],[-1.12,0],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[22.9,2.34],[29.29,0.63],[31.01,7.02],[28.58,11.22],[28.54,11.31],[28.22,12.72],[31.51,16.01],[33.04,15.63],[35.57,14.89],[40.25,19.57],[35.57,24.25],[30.89,19.57],[30.89,19.44],[30.89,19.44],[27.61,16.16],[24.91,17.58],[22.41,21.91],[16.02,23.62],[14.31,17.23],[22.9,2.34]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[9.22,2.34],[15.62,0.63],[17.33,7.02],[8.73,21.91],[2.34,23.62],[0.63,17.23],[9.22,2.34]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}}],"ind":4},{"ty":4,"nm":"Splash Screen Bg 1","sr":1,"st":0,"op":41,"ip":0,"hd":false,"ln":"Splash Screen 0-bg","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[180,400]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[180,400]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[360,0.01],[360,799.99],[359.99,800],[0.01,800],[0,799.99],[0,0.01],[0.01,0],[359.99,0]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.4667,0.2588,0.9961]},"r":1,"o":{"a":0,"k":100}}],"ind":5},{"ty":4,"nm":"Splash Screen Bg 2","sr":1,"st":41,"op":70,"ip":41,"hd":false,"ln":"Splash Screen 0-bg","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[180,400]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[180,400]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"s":[0],"t":58}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[360,0.01],[360,799.99],[359.99,800],[0.01,800],[0,799.99],[0,0.01],[0.01,0],[359.99,0]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}}],"ind":6}],"v":"5.7.0","fr":30,"op":150,"ip":0,"assets":[{"nm":"[Asset] Splash Screen","id":"1_1_3a69d72f-ca61-49fc-9e13-2f9d2658c38b","fr":30,"layers":[{"ty":0,"nm":"Logo","sr":1,"st":0,"op":121,"ip":0,"hd":false,"ln":"Logo 0","ddd":0,"bm":0,"hasMask":true,"ao":0,"ks":{"a":{"a":0,"k":[25.2,25.2]},"s":{"a":1,"k":[{"o":{"x":0.34,"y":1.56},"i":{"x":0.64,"y":1},"s":[70,70],"t":0},{"o":{"x":0.65,"y":0},"i":{"x":0.35,"y":1},"s":[185,185],"t":12},{"o":{"x":0.65,"y":0},"i":{"x":0.35,"y":1},"s":[186,186],"t":26},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[180,180],"t":38},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[60,60],"t":55},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[2400,2400],"t":74},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[4000,4000],"t":80},{"s":[10000,10000],"t":89}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[180,400],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[180,400],"t":63},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[89.77,400],"t":78},{"s":[89.77,400],"t":94}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[0],"t":0},{"o":{"x":0.5,"y":0},"i":{"x":0.5,"y":1},"s":[100],"t":11},{"o":{"x":0.5,"y":0},"i":{"x":0.5,"y":1},"s":[100],"t":46},{"o":{"x":0.5,"y":0},"i":{"x":0.5,"y":1},"s":[0],"t":52},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":58},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[100],"t":63},{"s":[100],"t":94}]}},"masksProperties":[{"nm":"","inv":false,"mode":"a","x":{"a":0,"k":0},"o":{"a":0,"k":100},"pt":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[50.4,0.01],[50.4,50.39],[50.39,50.4],[0.01,50.4],[0,50.39],[0,0.01],[0.01,0],[50.39,0]]}}}],"w":360,"h":800,"refId":"2_1_10e25acf-fdda-48ea-8e2d-d600e51b0fdb","ind":1},{"ty":4,"nm":"Splash Screen Bg","sr":1,"st":0,"op":121,"ip":0,"hd":false,"ln":"Splash Screen 0-bg","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[180,400]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[180,400]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[360,0.01],[360,799.99],[359.99,800],[0.01,800],[0,799.99],[0,0.01],[0.01,0],[359.99,0]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.4667,0.2588,0.9961]},"r":1,"o":{"a":0,"k":100}}],"ind":2}]},{"nm":"[Asset] Logo","id":"2_1_10e25acf-fdda-48ea-8e2d-d600e51b0fdb","fr":30,"layers":[{"ty":4,"nm":"Logo Bg","sr":1,"st":0,"op":121,"ip":0,"hd":false,"ln":"Logo 0-bg","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[25.2,25.2]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[25.199999246903314,25.19999892551077]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 4","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[50.4,0.01],[50.4,50.39],[50.39,50.4],[0.01,50.4],[0,50.39],[0,0.01],[0.01,0],[50.39,0]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":0}}],"ind":1},{"ty":4,"nm":"logo","sr":1,"st":0,"op":121,"ip":0,"hd":false,"ln":"logo 0","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[20.12,12.12]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[25.2,25.2]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 2","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[0,0],[0,-0.51],[-1.81,0],[-0.46,0.24],[-0.93,0],[0,-2.58],[2.58,0],[0,2.58],[0,0.04],[0,0],[1.81,0],[0.59,-0.86],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[0,0],[-0.2,0.43],[0,1.81],[0.55,0],[0.73,-0.47],[2.58,0],[0,2.58],[-2.58,0],[0,-0.04],[0,0],[0,-1.81],[-1.12,0],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[22.9,2.34],[29.29,0.63],[31.01,7.02],[28.58,11.22],[28.54,11.31],[28.22,12.72],[31.51,16.01],[33.04,15.63],[35.57,14.89],[40.25,19.57],[35.57,24.25],[30.89,19.57],[30.89,19.44],[30.89,19.44],[27.61,16.16],[24.91,17.58],[22.41,21.91],[16.02,23.62],[14.31,17.23],[22.9,2.34]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.24,-1.29],[1.29,-2.24],[0,0],[2.24,1.29],[-1.29,2.24],[0,0]],"o":[[1.29,-2.24],[2.24,1.29],[0,0],[-1.29,2.24],[-2.24,-1.29],[0,0],[0,0]],"v":[[9.22,2.34],[15.62,0.63],[17.33,7.02],[8.73,21.91],[2.34,23.62],[0.63,17.23],[9.22,2.34]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}}],"ind":2}]},{"nm":"Splash Anim / 00","id":"precomp_Splash Anim / 00_hVkLMERgPY_3584e879-b0cd-409b-a8a0-cc53a23e232b","fr":30,"layers":[{"ty":0,"nm":"Splash Screen","sr":0.5,"st":0,"op":60.5,"ip":0,"hd":false,"ln":"Splash Screen 0","ddd":0,"bm":0,"hasMask":true,"ao":0,"ks":{"a":{"a":0,"k":[180,400]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[179.9999931293156,399.9999862055756]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0},{"o":{"x":0.32,"y":0},"i":{"x":0.67,"y":0},"s":[100],"t":31.5},{"s":[0],"t":47}]}},"masksProperties":[{"nm":"","inv":false,"mode":"a","x":{"a":0,"k":0},"o":{"a":0,"k":100},"pt":{"a":0,"k":{"c":true,"i":[[0,-0.01],[0,0],[0.01,0],[0,0],[0,0.01],[0,0],[-0.01,0],[0,0]],"o":[[0,0],[0,0.01],[0,0],[-0.01,0],[0,0],[0,-0.01],[0,0],[0.01,0]],"v":[[360,0.01],[360,799.99],[359.99,800],[0.01,800],[0,799.99],[0,0.01],[0.01,0],[359.99,0]]}}}],"w":360,"h":800,"refId":"1_1_3a69d72f-ca61-49fc-9e13-2f9d2658c38b","ind":1}]},{"nm":"newScene","id":"precomp_newScene_TNaw70teRe_aca39bab-bc3f-4582-9a95-372bee010c57","fr":30,"layers":[{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":57.5,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-0.000001080873573755525,-0.00003814354413706653]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 8","np":3,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 2","np":4,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[360,800],[0,800],[0,0],[360,0],[360,800]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 4","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.8,-3.12],[0,0],[-3.12,-1.8],[-1.8,3.12],[0,0],[-1.56,0],[0,-2.52],[0,0],[0,-0.06],[-3.6,0],[0,3.6],[3.6,0],[1.02,-0.65],[0.77,0],[0,2.53],[-0.28,0.6],[0,0],[0,0],[3.12,1.8]],"o":[[-3.12,-1.8],[0,0],[-1.8,3.12],[3.12,1.8],[0,0],[0.82,-1.2],[2.52,0],[0,0],[0,0.06],[0,3.6],[3.6,0],[0,-3.6],[-1.3,0],[-0.64,0.34],[-2.53,0],[0,-0.71],[0,0],[0,0],[1.8,-3.12],[0,0]],"v":[[192.79,383.97],[183.87,386.36],[171.89,407.11],[174.28,416.03],[183.19,413.64],[186.67,407.61],[190.44,405.63],[195,410.2],[195,410.19],[195,410.38],[201.53,416.9],[208.06,410.38],[201.53,403.85],[198,404.89],[195.87,405.41],[191.29,400.83],[191.73,398.86],[191.79,398.74],[195.18,392.89],[192.79,383.97]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 5","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.8,-3.12],[0,0],[-3.12,-1.8],[-1.8,3.12],[0,0],[3.12,1.8]],"o":[[-3.12,-1.8],[0,0],[-1.8,3.12],[3.12,1.8],[0,0],[1.8,-3.12],[0,0]],"v":[[173.71,383.97],[164.8,386.36],[152.82,407.11],[155.21,416.03],[164.12,413.64],[176.1,392.89],[173.71,383.97]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.4706,0.2588,1]},"r":2,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":38.57},{"s":[100,100],"t":40.71}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":38.57},{"s":[0,0],"t":40.71}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":38.57},{"s":[100],"t":40.71}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 7","np":3,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 3","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 6","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-1.1],[0,0],[1.1,0],[0,0],[0,1.1],[0,0],[-1.1,0]],"o":[[0,0],[1.1,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0],[0,-1.1],[0,0]],"v":[[128,786],[232,786],[234,788],[234,788],[232,790],[128,790],[126,788],[126,788],[128,786]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":34.29},{"s":[100,100],"t":36.43}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":34.29},{"s":[0,0],"t":36.43}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":34.29},{"s":[100],"t":36.43}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 5","np":2,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 4","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 7","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[360,0],[360,24],[0,24]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":30},{"s":[100,100],"t":32.14}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":30},{"s":[0,0],"t":32.14}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30},{"s":[100],"t":32.14}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":32.14},{"s":[100,100],"t":34.29}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":32.14},{"s":[0,776],"t":34.29}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32.14},{"s":[100],"t":34.29}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 6","np":14,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 8","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[5.85,-2.92],[0,0],[-0.92,1.89],[0,0],[0,0],[0,0],[-0.06,0.84],[0,0],[0,0],[0,0]],"o":[[0,4.8],[0,0],[2.75,-1.36],[0,0],[0,0],[0,0],[0.2,-0.74],[0,0],[0,0],[0,0],[0,0]],"v":[[152.98,731.24],[145.81,743.07],[144.74,741.59],[150.05,736.76],[145.11,737.23],[144.86,735.54],[150.65,735.18],[151.03,732.82],[145.69,732.82],[145.69,731.24],[152.98,731.24]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 9","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.17,729.67],[157.17,735.9],[159.52,735.9],[159.52,737.5],[157.17,737.5],[157.17,745.53],[155.22,745.53],[155.22,729.67],[157.17,729.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 10","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[5.85,-2.92],[0,0],[-0.92,1.89],[0,0],[0,0],[0,0],[-0.06,0.84],[0,0],[0,0],[0,0]],"o":[[0,4.8],[0,0],[2.75,-1.36],[0,0],[0,0],[0,0],[0.2,-0.74],[0,0],[0,0],[0,0],[0,0]],"v":[[168.54,731.24],[161.37,743.07],[160.3,741.59],[165.6,736.76],[160.66,737.23],[160.42,735.54],[166.2,735.18],[166.59,732.82],[161.24,732.82],[161.24,731.24],[168.54,731.24]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 11","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[172.72,729.67],[172.72,735.9],[175.08,735.9],[175.08,737.5],[172.72,737.5],[172.72,745.53],[170.77,745.53],[170.77,729.67],[172.72,729.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 12","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.58],[2.91,-0.28],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.02,2.38],[-3.39,0]],"o":[[3.41,0],[0,2.38],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.89,-0.28],[-0.02,-2.58],[0,0]],"v":[[183.06,730.57],[188.98,734.86],[184.03,739.11],[184.03,742.03],[190.35,742.03],[190.35,743.63],[175.84,743.63],[175.84,742.03],[182.09,742.03],[182.09,739.11],[177.17,734.86],[183.06,730.57]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 13","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-1.67],[-2.32,0],[0,1.72],[2.35,-0.02]],"o":[[-2.32,-0.02],[-0.02,1.72],[2.35,0],[0,-1.67],[0,0]],"v":[[183.06,732.15],[179.09,734.86],[183.06,737.6],[187.07,734.86],[183.06,732.15]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 14","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[210.18,742.1],[210.18,743.72],[195.66,743.72],[195.66,742.1],[201.92,742.1],[201.92,739.52],[197.39,739.52],[197.39,734.31],[206.53,734.31],[206.53,732.35],[197.35,732.35],[197.35,730.76],[208.46,730.76],[208.46,735.86],[199.34,735.86],[199.34,737.92],[208.83,737.92],[208.83,739.52],[203.85,739.52],[203.85,742.1],[210.18,742.1]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 15","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.58,-3.34],[0,0],[0,2.06],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,2.13],[0,0],[0.61,-3.13],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.86,731.22],[223.86,733],[223.28,740.68],[221.29,740.5],[221.91,733],[221.91,732.8],[212.75,732.8],[212.75,731.22],[223.86,731.22]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 16","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[225.7,741.78],[225.7,743.39],[211.22,743.39],[211.22,741.78],[225.7,741.78]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 17","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[240,729.69],[240,741.17],[238.04,741.17],[238.04,729.69],[240,729.69]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 18","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[240.45,743.67],[240.45,745.25],[229.5,745.25],[229.5,740],[231.47,740],[231.47,743.67],[240.45,743.67]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 19","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.3],[2.41,0],[0,2.36],[-2.43,0]],"o":[[2.41,0],[0,2.36],[-2.43,0],[0,-2.3],[0,0]],"v":[[231.35,730.73],[235.62,734.7],[231.35,738.69],[227.06,734.7],[231.35,730.73]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 20","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-1.37],[-1.35,0],[0,1.41],[1.32,0]],"o":[[-1.35,0],[-0.02,1.41],[1.32,0],[0,-1.37],[0,0]],"v":[[231.35,732.43],[228.97,734.7],[231.35,736.99],[233.7,734.7],[231.35,732.43]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0,0,0]},"r":1,"o":{"a":0,"k":85}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":27.86},{"s":[100,100],"t":30}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":27.86},{"s":[0,0],"t":30}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":27.86},{"s":[100],"t":30}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":36.43},{"s":[100,100],"t":38.57}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":36.43},{"s":[0,0],"t":38.57}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":36.43},{"s":[100],"t":38.57}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":42.86},{"s":[100,100],"t":45}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":42.86},{"s":[0,0],"t":45}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42.86},{"s":[100],"t":45}]}}]}],"ind":1},{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":57.5,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":true,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"masksProperties":[{"nm":"","inv":false,"mode":"a","x":{"a":0,"k":0},"o":{"a":0,"k":100},"pt":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[20,0],[20,20],[0,20]]}}},{"nm":"","inv":false,"mode":"i","x":{"a":0,"k":0},"o":{"a":0,"k":100},"pt":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[20,0],[20,20],[0,20]]}}}],"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 9","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 21","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-4.27],[-2.64,-1.39],[0,0],[-0.32,0.21],[0,0],[-0.42,0],[0,4.27],[5.52,0]],"o":[[-5.52,0],[0,2.65],[0,0],[-0.1,0.36],[0,0],[0.41,0.04],[5.52,0],[0,-4.27],[0,0]],"v":[[128,728.67],[118,736.39],[122.37,742.77],[121.26,746.83],[121.89,747.26],[126.75,744.05],[128,744.12],[138,736.39],[128,728.67]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0,0,0]},"r":2,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":25.71},{"s":[100,100],"t":27.86}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":25.71},{"s":[0,0],"t":27.86}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":25.71},{"s":[100],"t":27.86}]}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 3","sr":1,"st":0,"op":57.5,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 21","np":10,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 10","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 22","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-6.63,0],[0,0],[0,-6.63],[0,0],[6.63,0],[0,0],[0,6.63],[0,0]],"o":[[0,-6.63],[0,0],[6.63,0],[0,0],[0,6.63],[0,0],[-6.63,0],[0,0],[0,0]],"v":[[20,724],[32,712],[328,712],[340,724],[340,752],[328,764],[32,764],[20,752],[20,724]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,0.902,0]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":21.43},{"s":[100,100],"t":23.57}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":21.43},{"s":[0,0],"t":23.57}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21.43},{"s":[100],"t":23.57}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 12","np":2,"it":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 11","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 23","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[360,0],[360,76],[0,76]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":17.14},{"s":[100,100],"t":19.29}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":17.14},{"s":[0,0],"t":19.29}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17.14},{"s":[100],"t":19.29}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":19.29},{"s":[100,100],"t":21.43}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":19.29},{"s":[0,700],"t":21.43}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":19.29},{"s":[100],"t":21.43}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 13","np":45,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 24","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[108.56,345.83],[108.56,351.08],[111.44,351.08],[111.44,353.59],[108.56,353.59],[108.56,358.7],[105.56,358.7],[105.56,345.83],[108.56,345.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 25","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[108.56,359.63],[108.56,366.92],[94.61,366.92],[94.61,359.63],[108.56,359.63]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 26","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[97.56,361.98],[97.56,364.53],[105.6,364.53],[105.6,361.98],[97.56,361.98]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 27","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[104.29,347.75],[104.29,350.12],[91.63,350.12],[91.63,347.75],[96.48,347.75],[96.48,345.71],[99.46,345.71],[99.46,347.75],[104.29,347.75]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 28","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.25],[3.09,0],[0,2.32],[-3.14,0]],"o":[[3.09,0],[0,2.32],[-3.14,0],[0,-2.25],[0,0]],"v":[[97.96,350.77],[103.21,354.59],[97.96,358.46],[92.66,354.59],[97.96,350.77]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 29","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-1.01],[-1.43,0],[0,1.08],[1.43,0]],"o":[[-1.43,0],[-0.02,1.08],[1.43,0],[0,-1.01],[0,0]],"v":[[97.96,353.02],[95.59,354.59],[97.96,356.26],[100.38,354.59],[97.96,353.02]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 30","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[2.72,-4.22],[0,0],[-0.15,4.14],[0,0],[0,0],[0,0]],"o":[[-0.02,5.32],[0,0],[2.19,-3.32],[0,0],[0,0],[0,0],[0,0]],"v":[[117.63,348.27],[114.37,362.59],[112.05,361.37],[115.05,350.68],[112.75,350.68],[112.75,348.27],[117.63,348.27]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 31","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.16,-1.82],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.48,-2.31],[0,0],[-0.11,4.32],[0,0],[0,0],[0,0]],"o":[[-0.01,1.88],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.46,2.61],[0,0],[2.38,-3.63],[0,0],[0,0],[0,0],[0,0]],"v":[[122.41,348.27],[122.19,353.82],[124.02,353.82],[124.02,346.3],[126.84,346.3],[126.84,366.22],[124.02,366.22],[124.02,356.23],[121.89,356.23],[119.15,363.66],[116.88,362.4],[119.85,350.68],[118.23,350.68],[118.23,348.27],[122.41,348.27]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 32","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[131.03,345.83],[131.03,367.16],[128.17,367.16],[128.17,345.83],[131.03,345.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 33","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[149.52,347.59],[149.52,357.83],[139.28,357.83],[139.28,347.59],[149.52,347.59]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 34","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[142.23,349.98],[142.23,355.48],[146.57,355.48],[146.57,349.98],[142.23,349.98]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 35","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[155.57,345.83],[155.57,351.97],[158.45,351.97],[158.45,354.43],[155.57,354.43],[155.57,361.39],[152.57,361.39],[152.57,345.83],[155.57,345.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 36","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[156.34,364.39],[156.34,366.78],[141.74,366.78],[141.74,359.87],[144.72,359.87],[144.72,364.39],[156.34,364.39]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 37","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[179.24,353.91],[179.24,356.35],[176.22,356.35],[176.22,367.11],[173.22,367.11],[173.22,345.83],[176.22,345.83],[176.22,353.91],[179.24,353.91]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 38","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-3.08,0.62],[0,0],[3.14,0],[0,0],[0,0],[0,0]],"o":[[0,0],[2.73,-0.04],[0,0],[-3.56,0.73],[0,0],[0,0],[0,0],[0,0]],"v":[[163.05,347.87],[163.05,359.42],[171.79,358.51],[172.09,360.99],[161.92,361.91],[160.07,361.91],[160.07,347.87],[163.05,347.87]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 39","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[197.45,351.64],[197.45,353.98],[182.55,353.98],[182.55,346.58],[185.52,346.58],[185.52,351.64],[197.45,351.64]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 40","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[199.63,356.28],[199.63,358.63],[180.11,358.63],[180.11,356.28],[199.63,356.28]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 41","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[197.59,364.3],[197.59,366.69],[182.36,366.69],[182.36,360.36],[185.36,360.36],[185.36,364.3],[197.59,364.3]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 42","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.56,-3.54],[0,0],[-0.03,1.89],[0,0],[0,0],[0,0]],"o":[[0,0],[-0.02,2.02],[0,0],[0.48,-3.09],[0,0],[0,0],[0,0],[0,0]],"v":[[218.41,347.96],[218.41,349.67],[217.82,357.85],[214.87,357.62],[215.43,350.35],[207.34,350.35],[207.34,347.96],[218.41,347.96]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 43","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.96,0.26],[0,0],[3.73,0.02],[0,0],[-1.38,0.04],[0,0],[0,0]],"o":[[0,0],[2.1,-0.08],[0,0],[-4.38,0.75],[0,0],[1.2,-0.01],[0,0],[0,0],[0,0]],"v":[[213.09,354.08],[213.09,360.27],[219.27,359.77],[219.46,362],[206.5,362.8],[206.22,360.41],[210.13,360.36],[210.13,354.08],[213.09,354.08]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 44","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.3,345.83],[223.3,354.41],[226.21,354.41],[226.21,356.89],[223.3,356.89],[223.3,367.16],[220.28,367.16],[220.28,345.83],[223.3,345.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 45","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[245.13,345.83],[245.13,358.48],[242.15,358.48],[242.15,353.45],[238.82,353.45],[238.82,351.03],[242.15,351.03],[242.15,345.83],[245.13,345.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 46","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-2.6],[4.55,0],[0,2.58],[-4.55,0.02]],"o":[[4.55,0.02],[-0.02,2.58],[-4.55,0],[0,-2.6],[0,0]],"v":[[237.84,358.95],[245.2,363.08],[237.84,367.18],[230.5,363.08],[237.84,358.95]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 47","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-1.24],[-2.84,0],[0,1.22],[2.84,0]],"o":[[-2.84,0],[0,1.22],[2.84,0],[0,-1.24],[0,0]],"v":[[237.84,361.25],[233.48,363.08],[237.84,364.91],[242.22,363.08],[237.84,361.25]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 48","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-3.33,-1.1],[0,0],[0.93,1.93],[2.53,-0.87],[0,0],[-0.08,2.67],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0.07,2.48],[0,0],[-2.36,-0.76],[-0.95,2.18],[0,0],[3.5,-1.17],[0,0],[0,0],[0,0],[0,0]],"v":[[239.45,347.12],[239.45,349.51],[235.21,349.51],[240.11,355.6],[238.63,357.95],[233.73,353.7],[228.55,358.51],[227,356.14],[232.16,349.51],[227.88,349.51],[227.88,347.12],[239.45,347.12]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 49","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-2.34],[4.9,0],[0,2.37],[-4.92,0]],"o":[[4.9,0],[-0.02,2.37],[-4.92,0],[0,-2.34],[0,0]],"v":[[257.62,346.13],[265.38,349.77],[257.62,353.42],[249.84,349.77],[257.62,346.13]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 50","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.02,-0.94],[-3.14,0],[0,1.05],[3.16,0]],"o":[[-3.14,0],[-0.02,1.05],[3.16,0],[0,-0.94],[0,0]],"v":[[257.62,348.31],[252.98,349.77],[257.62,351.22],[262.28,349.77],[257.62,348.31]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 51","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[267.34,354.43],[267.34,356.8],[247.89,356.8],[247.89,354.43],[267.34,354.43]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 52","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[264.98,358.04],[264.98,363.48],[253.09,363.48],[253.09,364.77],[265.54,364.77],[265.54,367.02],[250.16,367.02],[250.16,361.39],[262.02,361.39],[262.02,360.22],[250.14,360.22],[250.14,358.04],[264.98,358.04]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 53","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-2.51,0.46],[0,0],[3.94,0.02],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[3.1,-0.04],[0,0],[-2.93,0.56],[0,0],[0,0],[0,0],[0,0]],"v":[[136.25,379.7],[136.25,382.14],[129.54,382.14],[129.54,391.61],[137.4,390.98],[137.7,393.39],[128.25,394.05],[126.52,394.05],[126.52,379.7],[136.25,379.7]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 54","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[143.54,377.83],[143.54,399.2],[140.56,399.2],[140.56,387.65],[135.19,387.65],[135.19,385.21],[140.56,385.21],[140.56,377.83],[143.54,377.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 55","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[168.71,377.83],[168.71,383.8],[171.59,383.8],[171.59,386.27],[168.71,386.27],[168.71,393.11],[165.68,393.11],[165.68,377.83],[168.71,377.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 56","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[6.4,-1.8],[0,0],[-0.49,2.99],[0,0],[0,0],[0,0]],"o":[[0,5.77],[0,0],[4.77,-1.34],[0,0],[0,0],[0,0],[0,0]],"v":[[162.9,379.42],[152.89,391.02],[151.65,388.66],[159.61,381.86],[152.58,381.86],[152.58,379.42],[162.9,379.42]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 57","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[169.43,396.39],[169.43,398.78],[154.83,398.78],[154.83,391.54],[157.85,391.54],[157.85,396.39],[169.43,396.39]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 58","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[190.5,377.83],[190.5,393.53],[187.53,393.53],[187.53,388.28],[184.81,388.28],[184.81,385.82],[187.53,385.82],[187.53,383.97],[184.81,383.97],[184.81,381.58],[187.53,381.58],[187.53,377.83],[190.5,377.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 59","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.67,0.07],[0,0],[3.38,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.72,-0.05],[0,0],[-3.98,0.66],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[184.43,379.35],[184.43,381.74],[182.68,381.74],[182.68,388.21],[184.76,388.02],[184.88,390.2],[172.83,390.95],[172.53,388.52],[174.8,388.49],[174.8,381.74],[173.07,381.74],[173.07,379.35],[184.43,379.35]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 60","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[191.02,396.39],[191.02,398.78],[176.32,398.78],[176.32,392.36],[179.32,392.36],[179.32,396.39],[191.02,396.39]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 61","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[177.68,388.45],[179.82,388.38],[179.82,381.74],[177.68,381.74],[177.68,388.45]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 62","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[210.1,377.83],[210.1,386.17],[213.24,386.17],[213.24,388.63],[210.1,388.63],[210.1,399.16],[207.15,399.16],[207.15,377.83],[210.1,377.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 63","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[205.69,381.02],[205.69,383.41],[193.15,383.41],[193.15,381.02],[197.98,381.02],[197.98,378.16],[200.98,378.16],[200.98,381.02],[205.69,381.02]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 64","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-2.98],[3.12,0],[0,2.98],[-3.14,0]],"o":[[3.12,0],[0,2.98],[-3.14,0],[0,-2.98],[0,0]],"v":[[199.48,384.6],[204.92,389.69],[199.48,394.77],[194.02,389.69],[199.48,384.6]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 65","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-1.64],[-1.5,0.02],[0,1.66],[1.5,0.02]],"o":[[-1.5,0.02],[0,1.66],[1.5,0.02],[0,-1.64],[0,0]],"v":[[199.48,387.02],[196.88,389.69],[199.48,392.31],[202.06,389.69],[199.48,387.02]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 66","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[232.5,377.83],[232.5,399.16],[229.69,399.16],[229.69,377.83],[232.5,377.83]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 67","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[3.04,-1.76],[0,0],[-0.41,4.18],[0,0],[0,0],[0,0],[0.5,-1.76],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-1.22,2.44],[0,0],[4.3,-2.55],[0,0],[0,0],[0,0],[-0.01,2.03],[0,0],[0,0],[0,0],[0,0]],"v":[[227.96,378.3],[227.96,398.22],[225.17,398.22],[225.17,388.42],[221.68,388.42],[215.44,394.73],[213.75,392.62],[220.36,382.77],[214.93,382.77],[214.93,380.36],[223.34,380.36],[222.61,386.05],[225.17,386.05],[225.17,378.3],[227.96,378.3]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.1294,0.149,0.1608]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":15},{"s":[100,100],"t":17.14}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":15},{"s":[0,0],"t":17.14}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15},{"s":[100],"t":17.14}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 14","np":3,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 68","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-4.73,-2.73],[2.73,-4.73],[0,0],[0,-1.13],[-3.83,0],[-0.97,0.51],[0,0],[-1.96,0],[0,-5.45],[5.46,0],[0,5.45],[0,0.1],[0,0],[3.82,0],[1.25,-1.8],[0,0],[4.73,2.73],[-2.73,4.73],[0,0]],"o":[[2.73,-4.73],[4.73,2.73],[0,0],[-0.48,0.94],[0,3.83],[1.18,0],[0,0],[1.54,-0.99],[5.46,0],[0,5.45],[-5.46,0],[0,-0.1],[0,0],[0,-3.82],[-2.36,0],[0,0],[-2.73,4.73],[-4.73,-2.73],[0,0],[0,0]],"v":[[185.37,223.36],[198.87,219.74],[202.49,233.23],[197.35,242.13],[196.6,245.26],[203.54,252.19],[206.79,251.39],[206.79,251.39],[212.12,249.83],[222,259.7],[212.12,269.58],[202.23,259.7],[202.24,259.42],[202.23,259.43],[195.31,252.52],[189.62,255.5],[184.34,264.64],[170.84,268.26],[167.22,254.76],[185.37,223.36]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 69","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-4.73,-2.73],[2.73,-4.73],[0,0],[4.73,2.73],[-2.73,4.73],[0,0]],"o":[[2.73,-4.73],[4.73,2.73],[0,0],[-2.73,4.73],[-4.73,-2.73],[0,0],[0,0]],"v":[[156.47,223.36],[169.98,219.74],[173.59,233.23],[155.45,264.64],[141.94,268.26],[138.33,254.76],[156.47,223.36]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.4706,0.2588,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":12.86},{"s":[100,100],"t":15}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":12.86},{"s":[0,0],"t":15}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12.86},{"s":[100],"t":15}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 15","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 70","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-6.63],[0,0],[6.63,0],[0,0],[0,6.63],[0,0],[-6.63,0]],"o":[[0,0],[6.63,0],[0,0],[0,6.63],[0,0],[-6.63,0],[0,0],[0,-6.63],[0,0]],"v":[[180,8],[180,8],[192,20],[192,20],[180,32],[180,32],[168,20],[168,20],[180,8]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.1804,0.1804,0.1804]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":10.71},{"s":[100,100],"t":12.86}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":10.71},{"s":[0,0],"t":12.86}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":10.71},{"s":[100],"t":12.86}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 16","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 71","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,-0.59],[0,0],[-0.59,0],[0,0],[0,0.59],[0,0],[0.59,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[-0.59,0],[0,0],[0,0.59],[0,0],[0.59,0],[0,0],[0,-0.59],[0,0],[0,0],[0,0]],"v":[[337.59,12.92],[334.41,12.92],[334.41,14.33],[332.81,14.33],[331.75,15.4],[331.75,26.02],[332.81,27.08],[339.19,27.08],[340.25,26.02],[340.25,15.4],[339.19,14.33],[337.59,14.33],[337.59,12.92]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":8.57},{"s":[100,100],"t":10.71}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":8.57},{"s":[0,0],"t":10.71}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.57},{"s":[100],"t":10.71}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 17","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 72","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[326.67,13.33],[313.33,26.67],[326.67,26.67],[326.67,13.33]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":6.43},{"s":[100,100],"t":8.57}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":6.43},{"s":[0,0],"t":8.57}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6.43},{"s":[100],"t":8.57}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 18","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 73","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[4.05,-4.05]],"o":[[0,0],[0,0],[-4.05,-4.05],[0,0]],"v":[[298.67,18],[306,25.33],[313.33,18],[298.67,18]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":4.29},{"s":[100,100],"t":6.43}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":4.29},{"s":[0,0],"t":6.43}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4.29},{"s":[100],"t":6.43}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 19","np":8,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 74","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-0.46,0.21],[-0.25,0.35],[-0.09,0.43],[0,0.46],[0,0],[0.1,0.35],[0.18,0.24],[0.23,0.12],[0.26,0],[0.23,-0.12],[0.16,-0.21],[0.08,-0.28],[0,-0.33],[-0.07,-0.28],[-0.15,-0.22],[-0.22,-0.13],[-0.31,0],[-0.25,0.11],[-0.19,0.19],[-0.11,0.25],[-0.02,0.27],[0,0],[0.15,-0.37],[0.26,-0.3],[0.36,-0.18],[0.42,0],[0.36,0.19],[0.23,0.32],[0.11,0.39],[0,0.41],[-0.13,0.41],[-0.26,0.31],[-0.38,0.18],[-0.51,0],[-0.4,-0.23],[-0.25,-0.38],[-0.12,-0.48],[0,-0.51],[0,0],[0.07,-0.53],[0.19,-0.48],[0.35,-0.38],[0.57,-0.22],[0.82,0],[0,0],[0,0]],"o":[[0,0],[0.73,0],[0.46,-0.21],[0.25,-0.35],[0.09,-0.44],[0,0],[0,-0.45],[-0.1,-0.35],[-0.18,-0.24],[-0.23,-0.12],[-0.29,0],[-0.23,0.11],[-0.15,0.21],[-0.08,0.28],[0,0.3],[0.07,0.28],[0.15,0.22],[0.23,0.13],[0.28,0],[0.25,-0.11],[0.2,-0.2],[0.12,-0.25],[0,0],[0,0.38],[-0.15,0.36],[-0.26,0.3],[-0.36,0.18],[-0.49,0],[-0.36,-0.19],[-0.23,-0.32],[-0.11,-0.4],[0,-0.47],[0.13,-0.41],[0.26,-0.32],[0.39,-0.18],[0.57,0],[0.4,0.23],[0.26,0.38],[0.12,0.48],[0,0],[0,0.51],[-0.06,0.53],[-0.18,0.48],[-0.35,0.38],[-0.56,0.22],[0,0],[0,0],[0,0]],"v":[[18.08,23.94],[18.21,23.94],[19.99,23.63],[21.04,22.81],[21.55,21.64],[21.69,20.29],[21.69,18.77],[21.53,17.56],[21.11,16.68],[20.5,16.14],[19.77,15.96],[18.99,16.13],[18.41,16.62],[18.05,17.36],[17.93,18.28],[18.04,19.14],[18.37,19.89],[18.93,20.43],[19.73,20.62],[20.53,20.45],[21.19,20],[21.65,19.33],[21.86,18.56],[22.46,18.56],[22.23,19.68],[21.62,20.68],[20.69,21.4],[19.53,21.67],[18.25,21.38],[17.36,20.62],[16.85,19.55],[16.68,18.35],[16.88,17.02],[17.47,15.92],[18.43,15.18],[19.77,14.91],[21.23,15.25],[22.21,16.17],[22.77,17.46],[22.95,18.94],[22.95,19.39],[22.84,20.97],[22.47,22.48],[21.67,23.78],[20.29,24.69],[18.21,25.01],[18.08,25.01],[18.08,23.94]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 75","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.13,0.15],[-0.26,0],[-0.13,-0.15],[0,-0.21],[0.14,-0.15],[0.26,0],[0.14,0.15],[0,0.21]],"o":[[0,-0.21],[0.14,-0.15],[0.26,0],[0.14,0.15],[0,0.21],[-0.13,0.15],[-0.26,0],[-0.13,-0.15],[0,0]],"v":[[25.03,24.33],[25.23,23.79],[25.82,23.56],[26.4,23.79],[26.61,24.33],[26.4,24.86],[25.82,25.08],[25.23,24.86],[25.03,24.33]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 76","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.13,0.15],[-0.26,0],[-0.13,-0.15],[0,-0.21],[0.14,-0.15],[0.26,0],[0.14,0.15],[0,0.21]],"o":[[0,-0.21],[0.14,-0.15],[0.26,0],[0.14,0.15],[0,0.21],[-0.13,0.15],[-0.26,0],[-0.13,-0.15],[0,0]],"v":[[25.04,18.29],[25.24,17.75],[25.83,17.53],[26.41,17.75],[26.61,18.29],[26.41,18.83],[25.83,19.05],[25.24,18.83],[25.04,18.29]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 77","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-0.29,0.15],[-0.14,0.26],[0,0.32],[0.13,0.26],[0.26,0.13],[0.39,0],[0.27,-0.14],[0.15,-0.26],[0,-0.35],[0,0],[-0.26,0.41],[-0.46,0.25],[-0.61,0],[-0.45,-0.21],[-0.25,-0.42],[0,-0.62],[0.12,-0.29],[0.25,-0.25],[0.39,-0.16],[0.54,0],[0,0],[0,0]],"o":[[0,0],[0.44,0],[0.29,-0.15],[0.15,-0.26],[0,-0.38],[-0.13,-0.26],[-0.26,-0.13],[-0.36,0],[-0.27,0.14],[-0.15,0.26],[0,0],[0,-0.51],[0.26,-0.41],[0.46,-0.25],[0.6,0],[0.45,0.21],[0.25,0.41],[0,0.25],[-0.11,0.28],[-0.24,0.25],[-0.39,0.15],[0,0],[0,0],[0,0]],"v":[[30.44,19.4],[31.34,19.4],[32.43,19.18],[33.08,18.57],[33.3,17.7],[33.11,16.74],[32.54,16.15],[31.57,15.95],[30.62,16.16],[29.99,16.75],[29.76,17.65],[28.5,17.65],[28.88,16.27],[29.95,15.28],[31.57,14.91],[33.15,15.23],[34.2,16.17],[34.57,17.73],[34.4,18.53],[33.86,19.33],[32.91,19.93],[31.52,20.17],[30.44,20.17],[30.44,19.4]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 78","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-0.41,-0.15],[-0.24,-0.25],[-0.1,-0.3],[0,-0.3],[0.16,-0.36],[0.29,-0.25],[0.38,-0.13],[0.45,0],[0.38,0.12],[0.29,0.23],[0.16,0.34],[0,0.44],[0,0],[-0.15,-0.26],[-0.28,-0.15],[-0.39,0],[-0.28,0.13],[-0.15,0.27],[0,0.41],[0.17,0.26],[0.32,0.13],[0.43,0],[0,0]],"o":[[0,0],[0,0],[0.63,0],[0.41,0.15],[0.24,0.25],[0.1,0.3],[0,0.46],[-0.16,0.36],[-0.28,0.25],[-0.38,0.13],[-0.43,0],[-0.38,-0.12],[-0.29,-0.24],[-0.16,-0.35],[0,0],[0,0.35],[0.15,0.26],[0.29,0.14],[0.39,0],[0.28,-0.14],[0.16,-0.27],[0,-0.41],[-0.17,-0.27],[-0.31,-0.13],[0,0],[0,0]],"v":[[30.44,20.44],[30.44,19.68],[31.52,19.68],[33.09,19.91],[34.07,20.51],[34.57,21.34],[34.72,22.22],[34.49,23.46],[33.82,24.38],[32.82,24.95],[31.57,25.14],[30.35,24.95],[29.34,24.42],[28.66,23.55],[28.42,22.37],[29.68,22.37],[29.91,23.28],[30.56,23.89],[31.57,24.1],[32.57,23.9],[33.22,23.28],[33.45,22.25],[33.19,21.23],[32.46,20.64],[31.34,20.44],[30.44,20.44]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 79","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.15,-0.56],[0.27,-0.34],[0.39,-0.15],[0.48,0],[0.32,0.1],[0.26,0.21],[0.18,0.34],[0.1,0.49],[0,0.65],[0,0],[-0.15,0.55],[-0.27,0.33],[-0.38,0.15],[-0.48,0],[-0.32,-0.1],[-0.26,-0.2],[-0.18,-0.34],[-0.1,-0.48],[0,-0.65]],"o":[[0,0],[0,0.82],[-0.15,0.56],[-0.27,0.34],[-0.38,0.15],[-0.38,0],[-0.32,-0.1],[-0.26,-0.21],[-0.18,-0.34],[-0.1,-0.49],[0,0],[0,-0.82],[0.15,-0.55],[0.27,-0.34],[0.39,-0.15],[0.39,0],[0.33,0.09],[0.26,0.2],[0.18,0.33],[0.1,0.48],[0,0]],"v":[[42.97,19.23],[42.97,20.75],[42.75,22.81],[42.12,24.17],[41.13,24.91],[39.83,25.14],[38.77,24.99],[37.89,24.54],[37.24,23.7],[36.82,22.46],[36.68,20.75],[36.68,19.23],[36.9,17.18],[37.53,15.85],[38.52,15.13],[39.81,14.91],[40.88,15.05],[41.76,15.5],[42.41,16.3],[42.82,17.53],[42.97,19.23]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 80","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.05,0.34],[0.1,0.24],[0.16,0.15],[0.2,0.07],[0.25,0],[0.23,-0.11],[0.16,-0.24],[0.08,-0.39],[0,-0.56],[0,0],[-0.05,-0.34],[-0.1,-0.25],[-0.15,-0.16],[-0.2,-0.08],[-0.24,0],[-0.23,0.12],[-0.15,0.25],[-0.08,0.4],[0,0.56]],"o":[[0,0],[0,-0.45],[-0.05,-0.34],[-0.1,-0.24],[-0.15,-0.15],[-0.2,-0.07],[-0.3,0],[-0.23,0.11],[-0.15,0.24],[-0.08,0.39],[0,0],[0,0.45],[0.05,0.34],[0.1,0.25],[0.15,0.16],[0.2,0.07],[0.31,0],[0.23,-0.12],[0.16,-0.26],[0.08,-0.4],[0,0]],"v":[[41.69,20.95],[41.69,19.02],[41.61,17.84],[41.39,16.97],[41,16.38],[40.48,16.05],[39.81,15.94],[39,16.11],[38.43,16.64],[38.07,17.59],[37.95,19.02],[37.95,20.95],[38.02,22.14],[38.26,23.02],[38.65,23.63],[39.17,23.99],[39.83,24.1],[40.64,23.92],[41.22,23.37],[41.58,22.39],[41.69,20.95]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[0.0902,0.1098,0.1098]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":2.14},{"s":[100,100],"t":4.29}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":2.14},{"s":[0,0],"t":4.29}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":2.14},{"s":[100],"t":4.29}]}}]},{"ty":"gr","bm":0,"hd":false,"nm":"Group 20","np":2,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 81","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[360,0],[360,800],[0,800]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":0},{"s":[100,100],"t":2.14}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":0},{"s":[0,0],"t":2.14}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"s":[100],"t":2.14}]}}]},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[0,0],"t":23.57},{"s":[100,100],"t":25.71}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.24,"y":0.75},"i":{"x":0.35,"y":0.55},"s":[180,400],"t":23.57},{"s":[0,0],"t":25.71}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":23.57},{"s":[100],"t":25.71}]}}]}],"ind":3}]}]} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b130c766..69304061 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - moive-android - \ No newline at end of file + MOIVE + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 388bfa39..9edde7ea 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,7 +1,7 @@ -