commit 9a62f55c3cddeff69c9fd23ce4ad7b9079582fc4
parent 9dd7422b9fc905230f52e7fe1dbef2219228b19d
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Mon,  3 Jun 2024 00:50:02 +0200

refactor: quick actions
- more translations

Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>

Diffstat:
Aapp/src/main/kotlin/me/rhunk/snapenhance/action/EnumQuickActions.kt | 25+++++++++++++++++++++++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeRoot.kt | 248++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt | 4++--
Mcommon/src/main/assets/lang/en_US.json | 19++++++++++++++++++-
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/ui/ComposeIcons.kt | 648+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
5 files changed, 775 insertions(+), 169 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/action/EnumQuickActions.kt b/app/src/main/kotlin/me/rhunk/snapenhance/action/EnumQuickActions.kt @@ -0,0 +1,24 @@ +package me.rhunk.snapenhance.action + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.FolderOpen +import androidx.compose.material.icons.filled.History +import androidx.compose.material.icons.filled.PersonSearch +import androidx.compose.ui.graphics.vector.ImageVector +import me.rhunk.snapenhance.ui.manager.Routes + +enum class EnumQuickActions( + val key: String, + val icon: ImageVector, + val action: Routes.() -> Unit +) { + FILE_IMPORTS("file_imports", Icons.Default.FolderOpen, { + fileImports.navigateReset() + }), + FRIEND_TRACKER("friend_tracker", Icons.Default.PersonSearch, { + friendTracker.navigateReset() + }), + LOGGER_HISTORY("logger_history", Icons.Default.History, { + loggerHistory.navigateReset() + }), +}+ \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeRoot.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeRoot.kt @@ -2,14 +2,16 @@ package me.rhunk.snapenhance.ui.manager.pages.home import android.content.Intent import android.net.Uri -import androidx.compose.foundation.ScrollState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Help -import androidx.compose.material.icons.filled.* +import androidx.compose.material.icons.filled.BugReport +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -31,11 +33,13 @@ import androidx.compose.ui.unit.sp import androidx.navigation.NavBackStackEntry import kotlinx.coroutines.launch import me.rhunk.snapenhance.R +import me.rhunk.snapenhance.action.EnumQuickActions import me.rhunk.snapenhance.common.BuildConfig import me.rhunk.snapenhance.common.Constants import me.rhunk.snapenhance.common.action.EnumAction import me.rhunk.snapenhance.common.ui.rememberAsyncMutableState import me.rhunk.snapenhance.common.ui.rememberAsyncMutableStateList +import me.rhunk.snapenhance.core.ui.Snapenhance import me.rhunk.snapenhance.storage.getQuickTiles import me.rhunk.snapenhance.storage.setQuickTiles import me.rhunk.snapenhance.ui.manager.Routes @@ -51,23 +55,19 @@ class HomeRoot : Routes.Route() { private lateinit var activityLauncherHelper: ActivityLauncherHelper private fun launchActionIntent(action: EnumAction) { - val intent = context.androidContext.packageManager.getLaunchIntentForPackage(Constants.SNAPCHAT_PACKAGE_NAME) + val intent = context.androidContext.packageManager.getLaunchIntentForPackage( + Constants.SNAPCHAT_PACKAGE_NAME + ) intent?.putExtra(EnumAction.ACTION_PARAMETER, action.key) context.androidContext.startActivity(intent) } private val cards by lazy { - mapOf( - ("File Imports" to Icons.Default.FolderOpen) to { - routes.fileImports.navigateReset() - }, - ("Friend Tracker" to Icons.Default.PersonSearch) to { - routes.friendTracker.navigateReset() - }, - ("Logger History" to Icons.Default.History) to { - routes.loggerHistory.navigateReset() - }, - ).toMutableMap().apply { + EnumQuickActions.entries.map { + (context.translation["actions.${it.key}.name"] to it.icon) to it.action + }.associate { + it.first to it.second + }.toMutableMap().apply { EnumAction.entries.forEach { action -> this[context.translation["actions.${action.key}.name"] to action.icon] = { launchActionIntent(action) @@ -76,25 +76,31 @@ class HomeRoot : Routes.Route() { } } - override val init: () -> Unit = { - activityLauncherHelper = ActivityLauncherHelper(context.activity !!) - } - - override val topBarActions: @Composable (RowScope.() -> Unit) = { - IconButton(onClick = { - routes.homeLogs.navigate() - }) { - Icon(Icons.Filled.BugReport, contentDescription = null) - } - IconButton(onClick = { - routes.settings.navigate() - }) { - Icon(Icons.Filled.Settings, contentDescription = null) + @Composable + private fun InfoCard( + content: @Composable ColumnScope.() -> Unit, + ) { + OutlinedCard( + modifier = Modifier + .padding(all = cardMargin) + .fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant, + contentColor = MaterialTheme.colorScheme.onSurfaceVariant + ) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(all = 15.dp) + ) { + content() + } } } @Composable - fun LinkIcon( + fun ExternalLinkIcon( modifier: Modifier = Modifier, size: Dp = 32.dp, imageVector: ImageVector, @@ -110,10 +116,7 @@ class HomeRoot : Routes.Route() { .clickable { context.activity?.startActivity(Intent(Intent.ACTION_VIEW).apply { data = Uri.parse( - dataArray - .map { it.toChar() } - .joinToString("") - .reversed() + dataArray.reversed().map { (-it xor BuildConfig.APPLICATION_ID.hashCode()).toChar() }.joinToString("") ) flags = Intent.FLAG_ACTIVITY_NEW_TASK }) @@ -121,58 +124,52 @@ class HomeRoot : Routes.Route() { ) } - @Composable - private fun InfoCard( - content: @Composable ColumnScope.() -> Unit, - ) { - OutlinedCard( - modifier = Modifier - .padding(all = cardMargin) - .fillMaxWidth(), - colors = CardDefaults.cardColors( - containerColor = MaterialTheme.colorScheme.surfaceVariant, - contentColor = MaterialTheme.colorScheme.onSurfaceVariant - ) - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(all = 15.dp) - ) { - content() - } + + override val init: () -> Unit = { + activityLauncherHelper = ActivityLauncherHelper(context.activity!!) + } + + override val topBarActions: @Composable (RowScope.() -> Unit) = { + IconButton(onClick = { + routes.homeLogs.navigate() + }) { + Icon(Icons.Filled.BugReport, contentDescription = null) + } + IconButton(onClick = { + routes.settings.navigate() + }) { + Icon(Icons.Filled.Settings, contentDescription = null) } } - @OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class) + @OptIn(ExperimentalLayoutApi::class) override val content: @Composable (NavBackStackEntry) -> Unit = { - val avenirNextFontFamily = remember { - FontFamily( - Font(R.font.avenir_next_medium, FontWeight.Medium) - ) - } - Column( modifier = Modifier .fillMaxSize() - .verticalScroll(ScrollState(0)) + .verticalScroll(rememberScrollState()) ) { - Text( - text = remember { - intArrayOf( - 101, 99, 110, 97, 104, 110, 69, 112, 97, 110, 83 - ).map { it.toChar() }.joinToString("").reversed() - }, - fontSize = 30.sp, - fontFamily = avenirNextFontFamily, - modifier = Modifier.align(Alignment.CenterHorizontally), + Icon( + imageVector = Snapenhance, contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .padding(all = 8.dp) + .align(Alignment.CenterHorizontally), + tint = MaterialTheme.colorScheme.onSurfaceVariant, ) Text( - text = "v" + BuildConfig.VERSION_NAME + " \u00b7 by rhunk", + text = translation.format( + "version_title", + "versionName" to BuildConfig.VERSION_NAME + ), fontSize = 12.sp, - fontFamily = avenirNextFontFamily, + fontFamily = remember { + FontFamily( + Font(R.font.avenir_next_medium, FontWeight.Medium) + ) + }, modifier = Modifier.align(Alignment.CenterHorizontally), ) @@ -183,31 +180,42 @@ class HomeRoot : Routes.Route() { .fillMaxWidth() .padding(all = 10.dp) ) { - LinkIcon( - imageVector = ImageVector.vectorResource(id = R.drawable.ic_github), + ExternalLinkIcon( + imageVector = ImageVector.vectorResource(id = R.drawable.ic_telegram), + // https://t.me/snapenhance dataArray = intArrayOf( - 101, 99, 110, 97, 104, 110, 69, 112, 97, 110, 83, 47, 107, 110, - 117, 104, 114, 47, 109, 111, 99, 46, 98, 117, 104, 116, 105, - 103, 47, 58, 115, 112, 116, 116, 104 + 0xe4f8b47, 0xe4f8b41, 0xe4f8b4e, 0xe4f8b43, 0xe4f8b4c, 0xe4f8b4e, 0xe4f8b47, + 0xe4f8b54, 0xe4f8b43, 0xe4f8b4e, 0xe4f8b51, 0xe4f8b0d, 0xe4f8b47, 0xe4f8b4f, + 0xe4f8b0e, 0xe4f8b58, 0xe4f8b0d, 0xe4f8b0d, 0xe4f8b1a, 0xe4f8b51, 0xe4f8b54, + 0xe4f8b58, 0xe4f8b58, 0xe4f8b4c ) ) - LinkIcon( - imageVector = ImageVector.vectorResource(id = R.drawable.ic_telegram), + ExternalLinkIcon( + imageVector = ImageVector.vectorResource(id = R.drawable.ic_github), + // https://github.com/rhunk/SnapEnhance dataArray = intArrayOf( - 101, 99, 110, 97, 104, 110, 101, 112, 97, 110, 115, 47, 101, - 109, 46, 116, 47, 47, 58, 115, 112, 116, 116, 104 + 0xe4f8b47, 0xe4f8b41, 0xe4f8b4e, 0xe4f8b43, 0xe4f8b4c, 0xe4f8b4e, 0xe4f8b67, + 0xe4f8b54, 0xe4f8b43, 0xe4f8b4e, 0xe4f8b71, 0xe4f8b0d, 0xe4f8b49, 0xe4f8b4e, + 0xe4f8b57, 0xe4f8b4c, 0xe4f8b52, 0xe4f8b0d, 0xe4f8b4f, 0xe4f8b4d, 0xe4f8b41, + 0xe4f8b0e, 0xe4f8b42, 0xe4f8b57, 0xe4f8b4c, 0xe4f8b58, 0xe4f8b4b, 0xe4f8b45, + 0xe4f8b0d, 0xe4f8b0d, 0xe4f8b1a, 0xe4f8b51, 0xe4f8b54, 0xe4f8b58, 0xe4f8b58, + 0xe4f8b4c ) ) - LinkIcon( + ExternalLinkIcon( size = 36.dp, modifier = Modifier.offset(y = (-2).dp), imageVector = Icons.AutoMirrored.Default.Help, + // https://github.com/rhunk/SnapEnhance/wiki dataArray = intArrayOf( - 105, 107, 105, 119, 47, 101, 99, 110, 97, 104, 110, 69, 112, 97, - 110, 83, 47, 107, 110, 117, 104, 114, 47, 109, 111, 99, 46, 98, - 117, 104, 116, 105, 103, 47, 47, 58, 115, 112, 116, 116, 104 + 0xe4f8b4b, 0xe4f8b49, 0xe4f8b4b, 0xe4f8b55, 0xe4f8b0d, 0xe4f8b47, 0xe4f8b41, + 0xe4f8b4e, 0xe4f8b43, 0xe4f8b4c, 0xe4f8b4e, 0xe4f8b67, 0xe4f8b54, 0xe4f8b43, + 0xe4f8b4e, 0xe4f8b71, 0xe4f8b0d, 0xe4f8b49, 0xe4f8b4e, 0xe4f8b57, 0xe4f8b4c, + 0xe4f8b52, 0xe4f8b0d, 0xe4f8b4f, 0xe4f8b4d, 0xe4f8b41, 0xe4f8b0e, 0xe4f8b42, + 0xe4f8b57, 0xe4f8b4c, 0xe4f8b58, 0xe4f8b4b, 0xe4f8b45, 0xe4f8b0d, 0xe4f8b0d, + 0xe4f8b1a, 0xe4f8b51, 0xe4f8b54, 0xe4f8b58, 0xe4f8b58, 0xe4f8b4c ) ) } @@ -256,23 +264,39 @@ class HomeRoot : Routes.Route() { Spacer(modifier = Modifier.height(10.dp)) InfoCard { Text( - text = "You are running a debug build of SnapEnhance", + text = translation["debug_build_summary_title"], fontSize = 14.sp, fontWeight = FontWeight.Bold, ) val buildSummary = buildAnnotatedString { - withStyle(style = SpanStyle(fontSize = 13.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, fontWeight = FontWeight.Light)) { - append("Version ") - append(BuildConfig.VERSION_NAME) - append(" (") - append(BuildConfig.VERSION_CODE.toString()) - append(") - ") + withStyle( + style = SpanStyle( + fontSize = 13.sp, + color = MaterialTheme.colorScheme.onSurfaceVariant, + fontWeight = FontWeight.Light + ) + ) { + append( + remember { + translation.format( + "debug_build_summary_content", + "versionName" to BuildConfig.VERSION_NAME, + "versionCode" to BuildConfig.VERSION_CODE.toString(), + ) + } + ) + append(" - ") } pushStringAnnotation( tag = "git_hash", annotation = BuildConfig.GIT_HASH ) - withStyle(style = SpanStyle(fontSize = 13.sp, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary)) { + withStyle( + style = SpanStyle( + fontSize = 13.sp, fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.primary + ) + ) { append(BuildConfig.GIT_HASH.substring(0, 7)) } pop() @@ -280,18 +304,29 @@ class HomeRoot : Routes.Route() { ClickableText( text = buildSummary, onClick = { offset -> - buildSummary.getStringAnnotations(tag = "git_hash", start = offset, end = offset) + buildSummary.getStringAnnotations( + tag = "git_hash", start = offset, end = offset + ) .firstOrNull()?.let { - context.activity?.startActivity(Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse("https://github.com/rhunk/SnapEnhance/commit/${it.item}") - }) + context.activity?.startActivity( + Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse( + "https://github.com/rhunk/SnapEnhance/commit/${it.item}" + ) + }) } } ) Text( fontSize = 12.sp, text = remember { - "Build date: " + DateFormat.getDateTimeInstance().format(BuildConfig.BUILD_TIMESTAMP) + " (${((System.currentTimeMillis() - BuildConfig.BUILD_TIMESTAMP) / 86400000).toInt()} days ago)" + translation.format( + "debug_build_summary_date", + "date" to DateFormat.getDateTimeInstance() + .format(BuildConfig.BUILD_TIMESTAMP), + "days" to ((System.currentTimeMillis() - BuildConfig.BUILD_TIMESTAMP) / 86400000).toInt() + .toString() + ) }, lineHeight = 20.sp, fontWeight = FontWeight.Light @@ -307,7 +342,10 @@ class HomeRoot : Routes.Route() { .padding(start = 20.dp, end = 10.dp, top = 20.dp), verticalAlignment = Alignment.CenterVertically ) { - Text("Quick Actions", fontSize = 20.sp, modifier = Modifier.weight(1f)) + Text( + translation["quick_actions_title"], fontSize = 20.sp, + modifier = Modifier.weight(1f) + ) Box { IconButton( onClick = { showQuickActionsMenu = !showQuickActionsMenu }, @@ -360,14 +398,16 @@ class HomeRoot : Routes.Route() { remember { (context.androidContext.resources.displayMetrics.widthPixels / 3).toDp() - cardMargin / 2 } } - remember(selectedTiles.size, context.translation.loadedLocale) { selectedTiles.mapNotNull { - cards.entries.find { entry -> entry.key.first == it } - } }.forEach { (card, action) -> + remember(selectedTiles.size, context.translation.loadedLocale) { + selectedTiles.mapNotNull { + cards.entries.find { entry -> entry.key.first == it } + } + }.forEach { (card, action) -> ElevatedCard( modifier = Modifier .height(tileHeight) .weight(1f) - .clickable { action() } + .clickable { action(routes) } .padding(all = 6.dp), ) { Column( @@ -385,7 +425,7 @@ class HomeRoot : Routes.Route() { Text( text = card.first, lineHeight = 16.sp, - fontSize = 11.sp, + fontSize = 14.sp, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center, overflow = TextOverflow.Ellipsis, diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt @@ -1,9 +1,9 @@ package me.rhunk.snapenhance.ui.manager.pages.home import android.content.SharedPreferences -import androidx.compose.foundation.ScrollState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.OpenInNew @@ -146,7 +146,7 @@ class HomeSettings : Routes.Route() { Column( modifier = Modifier .fillMaxSize() - .verticalScroll(ScrollState(0)) + .verticalScroll(rememberScrollState()) ) { RowTitle(title = translation["actions_title"]) EnumAction.entries.forEach { enumAction -> diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -44,9 +44,14 @@ }, "sections": { "home": { + "version_title": "v{versionName} ยท by rhunk", "update_title": "SnapEnhance Update", "update_content": "Version {version} is available!", - "update_button": "Download" + "update_button": "Download", + "debug_build_summary_title": "You are running a debug build of SnapEnhance", + "debug_build_summary_content": "Version {versionName} ({versionCode})", + "debug_build_summary_date": "Build date: {date} ({days} days ago)", + "quick_actions_title": "Quick Actions" }, "home_logs": { "no_logs_hint": "No logs available", @@ -283,6 +288,18 @@ "change_language": { "name": "Change Language", "description": "Change the language of SnapEnhance" + }, + "file_imports": { + "name": "File Imports", + "description": "Import files for use in Snapchat" + }, + "friend_tracker": { + "name": "Friend Tracker", + "description": "Track your friends on Snapchat" + }, + "logger_history": { + "name": "Logger History", + "description": "View the history of logged messages" } }, diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ComposeIcons.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ComposeIcons.kt @@ -11,67 +11,591 @@ import androidx.compose.ui.graphics.vector.path import androidx.compose.ui.unit.dp -val AppleLogo: ImageVector - get() { - return ImageVector.Builder( - defaultWidth = 800.dp, - defaultHeight = 800.dp, - viewportWidth = 27f, - viewportHeight = 27f, - ).apply { - group { - path( - fill = SolidColor(Color(0xFF000000)), - fillAlpha = 1.0f, - stroke = null, - strokeAlpha = 1.0f, - strokeLineWidth = 1.0f, - strokeLineCap = StrokeCap.Butt, - strokeLineJoin = StrokeJoin.Miter, - strokeLineMiter = 1.0f, - pathFillType = PathFillType.NonZero - ) { - moveTo(15.769f, 0f) - curveToRelative(0.053f, 0f, 0.106f, 0f, 0.162f, 0f) - curveToRelative(0.13f, 1.606f, -0.483f, 2.806f, -1.228f, 3.675f) - curveToRelative(-0.731f, 0.863f, -1.732f, 1.7f, -3.351f, 1.573f) - curveToRelative(-0.108f, -1.583f, 0.506f, -2.694f, 1.25f, -3.561f) - curveTo(13.292f, 0.879f, 14.557f, 0.16f, 15.769f, 0f) - close() - } - path( - fill = SolidColor(Color(0xFF000000)), - fillAlpha = 1.0f, - stroke = null, - strokeAlpha = 1.0f, - strokeLineWidth = 1.0f, - strokeLineCap = StrokeCap.Butt, - strokeLineJoin = StrokeJoin.Miter, - strokeLineMiter = 1.0f, - pathFillType = PathFillType.NonZero - ) { - moveTo(20.67f, 16.716f) - curveToRelative(0f, 0.016f, 0f, 0.03f, 0f, 0.045f) - curveToRelative(-0.455f, 1.378f, -1.104f, 2.559f, -1.896f, 3.655f) - curveToRelative(-0.723f, 0.995f, -1.609f, 2.334f, -3.191f, 2.334f) - curveToRelative(-1.367f, 0f, -2.275f, -0.879f, -3.676f, -0.903f) - curveToRelative(-1.482f, -0.024f, -2.297f, 0.735f, -3.652f, 0.926f) - curveToRelative(-0.155f, 0f, -0.31f, 0f, -0.462f, 0f) - curveToRelative(-0.995f, -0.144f, -1.798f, -0.932f, -2.383f, -1.642f) - curveToRelative(-1.725f, -2.098f, -3.058f, -4.808f, -3.306f, -8.276f) - curveToRelative(0f, -0.34f, 0f, -0.679f, 0f, -1.019f) - curveToRelative(0.105f, -2.482f, 1.311f, -4.5f, 2.914f, -5.478f) - curveToRelative(0.846f, -0.52f, 2.009f, -0.963f, 3.304f, -0.765f) - curveToRelative(0.555f, 0.086f, 1.122f, 0.276f, 1.619f, 0.464f) - curveToRelative(0.471f, 0.181f, 1.06f, 0.502f, 1.618f, 0.485f) - curveToRelative(0.378f, -0.011f, 0.754f, -0.208f, 1.135f, -0.347f) - curveToRelative(1.116f, -0.403f, 2.21f, -0.865f, 3.652f, -0.648f) - curveToRelative(1.733f, 0.262f, 2.963f, 1.032f, 3.723f, 2.22f) - curveToRelative(-1.466f, 0.933f, -2.625f, 2.339f, -2.427f, 4.74f) - curveTo(17.818f, 14.688f, 19.086f, 15.964f, 20.67f, 16.716f) - close() - } +val AppleLogo by lazy { + ImageVector.Builder( + defaultWidth = 800.dp, + defaultHeight = 800.dp, + viewportWidth = 27f, + viewportHeight = 27f, + ).apply { + group { + path( + fill = SolidColor(Color(0xFF000000)), + fillAlpha = 1.0f, + stroke = null, + strokeAlpha = 1.0f, + strokeLineWidth = 1.0f, + strokeLineCap = StrokeCap.Butt, + strokeLineJoin = StrokeJoin.Miter, + strokeLineMiter = 1.0f, + pathFillType = PathFillType.NonZero + ) { + moveTo(15.769f, 0f) + curveToRelative(0.053f, 0f, 0.106f, 0f, 0.162f, 0f) + curveToRelative(0.13f, 1.606f, -0.483f, 2.806f, -1.228f, 3.675f) + curveToRelative(-0.731f, 0.863f, -1.732f, 1.7f, -3.351f, 1.573f) + curveToRelative(-0.108f, -1.583f, 0.506f, -2.694f, 1.25f, -3.561f) + curveTo(13.292f, 0.879f, 14.557f, 0.16f, 15.769f, 0f) + close() } - }.build() - } + path( + fill = SolidColor(Color(0xFF000000)), + fillAlpha = 1.0f, + stroke = null, + strokeAlpha = 1.0f, + strokeLineWidth = 1.0f, + strokeLineCap = StrokeCap.Butt, + strokeLineJoin = StrokeJoin.Miter, + strokeLineMiter = 1.0f, + pathFillType = PathFillType.NonZero + ) { + moveTo(20.67f, 16.716f) + curveToRelative(0f, 0.016f, 0f, 0.03f, 0f, 0.045f) + curveToRelative(-0.455f, 1.378f, -1.104f, 2.559f, -1.896f, 3.655f) + curveToRelative(-0.723f, 0.995f, -1.609f, 2.334f, -3.191f, 2.334f) + curveToRelative(-1.367f, 0f, -2.275f, -0.879f, -3.676f, -0.903f) + curveToRelative(-1.482f, -0.024f, -2.297f, 0.735f, -3.652f, 0.926f) + curveToRelative(-0.155f, 0f, -0.31f, 0f, -0.462f, 0f) + curveToRelative(-0.995f, -0.144f, -1.798f, -0.932f, -2.383f, -1.642f) + curveToRelative(-1.725f, -2.098f, -3.058f, -4.808f, -3.306f, -8.276f) + curveToRelative(0f, -0.34f, 0f, -0.679f, 0f, -1.019f) + curveToRelative(0.105f, -2.482f, 1.311f, -4.5f, 2.914f, -5.478f) + curveToRelative(0.846f, -0.52f, 2.009f, -0.963f, 3.304f, -0.765f) + curveToRelative(0.555f, 0.086f, 1.122f, 0.276f, 1.619f, 0.464f) + curveToRelative(0.471f, 0.181f, 1.06f, 0.502f, 1.618f, 0.485f) + curveToRelative(0.378f, -0.011f, 0.754f, -0.208f, 1.135f, -0.347f) + curveToRelative(1.116f, -0.403f, 2.21f, -0.865f, 3.652f, -0.648f) + curveToRelative(1.733f, 0.262f, 2.963f, 1.032f, 3.723f, 2.22f) + curveToRelative(-1.466f, 0.933f, -2.625f, 2.339f, -2.427f, 4.74f) + curveTo(17.818f, 14.688f, 19.086f, 15.964f, 20.67f, 16.716f) + close() + } + } + }.build() +} + +val Snapenhance by lazy { + ImageVector.Builder( + name = "SnapEnhance", + defaultWidth = 247.92.dp, + defaultHeight = 39.84.dp, + viewportWidth = 247.92f, + viewportHeight = 39.84f + ).apply { + group { + path( + fill = SolidColor(Color(0xFF000000)), + fillAlpha = 1.0f, + stroke = SolidColor(Color(0xFF000000)), + strokeAlpha = 1.0f, + strokeLineWidth = 0.25f, + strokeLineCap = StrokeCap.Round, + strokeLineJoin = StrokeJoin.Miter, + strokeLineMiter = 1.0f, + pathFillType = PathFillType.EvenOdd + ) { + moveTo(99f, 17.28f) + lineTo(99f, 26.72f) + lineTo(113.8f, 26.72f) + lineTo(113.8f, 30.24f) + lineTo(95.04f, 30.24f) + lineTo(95.04f, 1.92f) + lineTo(113.2f, 1.92f) + lineTo(113.2f, 5.4f) + lineTo(99f, 5.4f) + lineTo(99f, 13.88f) + lineTo(112.36f, 13.88f) + lineTo(112.36f, 17.28f) + lineTo(99f, 17.28f) + close() + moveTo(18.84f, 4.44f) + lineTo(16.04f, 7.16f) + arcTo(5.999f, 5.999f, 0f, isMoreThanHalf = false, isPositiveArc = false, 14.483f, 5.683f) + arcTo(7.469f, 7.469f, 0f, isMoreThanHalf = false, isPositiveArc = false, 13.76f, 5.26f) + quadTo(12.32f, 4.52f, 10.52f, 4.52f) + arcTo(7.531f, 7.531f, 0f, isMoreThanHalf = false, isPositiveArc = false, 8.611f, 4.772f) + arcTo(8.316f, 8.316f, 0f, isMoreThanHalf = false, isPositiveArc = false, 8.58f, 4.78f) + quadTo(7.6f, 5.04f, 6.8f, 5.62f) + quadTo(6f, 6.2f, 5.5f, 7.06f) + arcTo(3.609f, 3.609f, 0f, isMoreThanHalf = false, isPositiveArc = false, 5.076f, 8.234f) + arcTo(4.917f, 4.917f, 0f, isMoreThanHalf = false, isPositiveArc = false, 5f, 9.12f) + quadTo(5f, 10.28f, 5.46f, 11.06f) + quadTo(5.92f, 11.84f, 6.7f, 12.38f) + arcTo(7.064f, 7.064f, 0f, isMoreThanHalf = false, isPositiveArc = false, 7.666f, 12.937f) + arcTo(9.17f, 9.17f, 0f, isMoreThanHalf = false, isPositiveArc = false, 8.54f, 13.3f) + quadTo(9.6f, 13.68f, 10.8f, 14.08f) + quadTo(12.24f, 14.52f, 13.72f, 15.08f) + quadTo(15.2f, 15.64f, 16.4f, 16.56f) + quadTo(17.6f, 17.48f, 18.36f, 18.86f) + arcTo(5.688f, 5.688f, 0f, isMoreThanHalf = false, isPositiveArc = true, 18.906f, 20.316f) + quadTo(19.063f, 20.99f, 19.105f, 21.776f) + arcTo(10.986f, 10.986f, 0f, isMoreThanHalf = false, isPositiveArc = true, 19.12f, 22.36f) + arcTo(9.947f, 9.947f, 0f, isMoreThanHalf = false, isPositiveArc = true, 18.952f, 24.235f) + arcTo(7.349f, 7.349f, 0f, isMoreThanHalf = false, isPositiveArc = true, 18.3f, 26.18f) + quadTo(17.48f, 27.8f, 16.12f, 28.86f) + arcTo(9.162f, 9.162f, 0f, isMoreThanHalf = false, isPositiveArc = true, 13.364f, 30.32f) + arcTo(10.579f, 10.579f, 0f, isMoreThanHalf = false, isPositiveArc = true, 12.98f, 30.44f) + quadTo(11.2f, 30.96f, 9.32f, 30.96f) + quadTo(6.64f, 30.96f, 4.14f, 29.92f) + quadTo(1.64f, 28.88f, 0f, 26.84f) + lineTo(3.08f, 24.24f) + arcTo(7.448f, 7.448f, 0f, isMoreThanHalf = false, isPositiveArc = false, 5.451f, 26.463f) + arcTo(8.765f, 8.765f, 0f, isMoreThanHalf = false, isPositiveArc = false, 5.76f, 26.64f) + quadTo(7.44f, 27.56f, 9.4f, 27.56f) + quadTo(10.4f, 27.56f, 11.4f, 27.28f) + quadTo(12.4f, 27f, 13.22f, 26.4f) + quadTo(14.04f, 25.8f, 14.56f, 24.9f) + arcTo(3.761f, 3.761f, 0f, isMoreThanHalf = false, isPositiveArc = false, 14.987f, 23.732f) + arcTo(5.263f, 5.263f, 0f, isMoreThanHalf = false, isPositiveArc = false, 15.08f, 22.72f) + arcTo(5.021f, 5.021f, 0f, isMoreThanHalf = false, isPositiveArc = false, 14.994f, 21.767f) + quadTo(14.881f, 21.181f, 14.618f, 20.712f) + arcTo(3.056f, 3.056f, 0f, isMoreThanHalf = false, isPositiveArc = false, 14.54f, 20.58f) + arcTo(4.686f, 4.686f, 0f, isMoreThanHalf = false, isPositiveArc = false, 13.304f, 19.274f) + arcTo(5.509f, 5.509f, 0f, isMoreThanHalf = false, isPositiveArc = false, 13.08f, 19.12f) + arcTo(8.755f, 8.755f, 0f, isMoreThanHalf = false, isPositiveArc = false, 11.882f, 18.471f) + arcTo(11.19f, 11.19f, 0f, isMoreThanHalf = false, isPositiveArc = false, 10.94f, 18.1f) + quadTo(9.72f, 17.68f, 8.36f, 17.24f) + quadTo(7f, 16.84f, 5.68f, 16.26f) + quadTo(4.36f, 15.68f, 3.32f, 14.78f) + arcTo(6.788f, 6.788f, 0f, isMoreThanHalf = false, isPositiveArc = true, 1.727f, 12.733f) + arcTo(7.817f, 7.817f, 0f, isMoreThanHalf = false, isPositiveArc = true, 1.64f, 12.56f) + arcTo(5.948f, 5.948f, 0f, isMoreThanHalf = false, isPositiveArc = true, 1.181f, 11.182f) + quadTo(1.045f, 10.536f, 1.011f, 9.789f) + arcTo(11.249f, 11.249f, 0f, isMoreThanHalf = false, isPositiveArc = true, 1f, 9.28f) + quadTo(1f, 7.16f, 1.86f, 5.64f) + quadTo(2.72f, 4.12f, 4.1f, 3.12f) + quadTo(5.48f, 2.12f, 7.22f, 1.66f) + quadTo(8.96f, 1.2f, 10.72f, 1.2f) + arcTo(12.346f, 12.346f, 0f, isMoreThanHalf = false, isPositiveArc = true, 14.669f, 1.824f) + arcTo(11.606f, 11.606f, 0f, isMoreThanHalf = false, isPositiveArc = true, 15.36f, 2.08f) + arcTo(10.587f, 10.587f, 0f, isMoreThanHalf = false, isPositiveArc = true, 17.283f, 3.092f) + arcTo(8.229f, 8.229f, 0f, isMoreThanHalf = false, isPositiveArc = true, 18.84f, 4.44f) + close() + moveTo(146f, 14.16f) + lineTo(146.08f, 14.16f) + arcTo(5.146f, 5.146f, 0f, isMoreThanHalf = false, isPositiveArc = true, 147.221f, 12.643f) + arcTo(7.281f, 7.281f, 0f, isMoreThanHalf = false, isPositiveArc = true, 148.4f, 11.76f) + arcTo(6.887f, 6.887f, 0f, isMoreThanHalf = false, isPositiveArc = true, 151.89f, 10.762f) + arcTo(8.211f, 8.211f, 0f, isMoreThanHalf = false, isPositiveArc = true, 152.08f, 10.76f) + arcTo(9.167f, 9.167f, 0f, isMoreThanHalf = false, isPositiveArc = true, 153.54f, 10.87f) + quadTo(154.477f, 11.022f, 155.24f, 11.38f) + arcTo(6.566f, 6.566f, 0f, isMoreThanHalf = false, isPositiveArc = true, 156.973f, 12.546f) + arcTo(6.086f, 6.086f, 0f, isMoreThanHalf = false, isPositiveArc = true, 157.44f, 13.04f) + quadTo(158.32f, 14.08f, 158.74f, 15.48f) + arcTo(10.1f, 10.1f, 0f, isMoreThanHalf = false, isPositiveArc = true, 159.143f, 17.838f) + arcTo(11.747f, 11.747f, 0f, isMoreThanHalf = false, isPositiveArc = true, 159.16f, 18.48f) + lineTo(159.16f, 30.24f) + lineTo(155.4f, 30.24f) + lineTo(155.4f, 19.76f) + quadTo(155.4f, 18.6f, 155.22f, 17.56f) + arcTo(5.745f, 5.745f, 0f, isMoreThanHalf = false, isPositiveArc = false, 154.906f, 16.424f) + arcTo(4.788f, 4.788f, 0f, isMoreThanHalf = false, isPositiveArc = false, 154.56f, 15.72f) + quadTo(154.08f, 14.92f, 153.26f, 14.44f) + quadTo(152.582f, 14.043f, 151.562f, 13.974f) + arcTo(6.58f, 6.58f, 0f, isMoreThanHalf = false, isPositiveArc = false, 151.12f, 13.96f) + arcTo(4.792f, 4.792f, 0f, isMoreThanHalf = false, isPositiveArc = false, 149.037f, 14.405f) + arcTo(4.776f, 4.776f, 0f, isMoreThanHalf = false, isPositiveArc = false, 147.44f, 15.66f) + arcTo(5.829f, 5.829f, 0f, isMoreThanHalf = false, isPositiveArc = false, 146.247f, 18.044f) + quadTo(146.031f, 18.902f, 146.004f, 19.909f) + arcTo(10.86f, 10.86f, 0f, isMoreThanHalf = false, isPositiveArc = false, 146f, 20.2f) + lineTo(146f, 30.24f) + lineTo(142.24f, 30.24f) + lineTo(142.24f, 0f) + lineTo(146f, 0f) + lineTo(146f, 14.16f) + close() + moveTo(24.36f, 11.28f) + lineTo(27.92f, 11.28f) + arcTo(20.944f, 20.944f, 0f, isMoreThanHalf = false, isPositiveArc = true, 27.99f, 12.039f) + quadTo(28.019f, 12.434f, 28.039f, 12.872f) + arcTo(33.443f, 33.443f, 0f, isMoreThanHalf = false, isPositiveArc = true, 28.04f, 12.9f) + quadTo(28.08f, 13.8f, 28.08f, 14.4f) + lineTo(28.2f, 14.4f) + arcTo(5.447f, 5.447f, 0f, isMoreThanHalf = false, isPositiveArc = true, 29.029f, 13.147f) + arcTo(6.224f, 6.224f, 0f, isMoreThanHalf = false, isPositiveArc = true, 29.18f, 12.98f) + quadTo(29.8f, 12.32f, 30.6f, 11.82f) + arcTo(6.957f, 6.957f, 0f, isMoreThanHalf = false, isPositiveArc = true, 32.241f, 11.076f) + arcTo(7.744f, 7.744f, 0f, isMoreThanHalf = false, isPositiveArc = true, 32.36f, 11.04f) + quadTo(33.32f, 10.76f, 34.36f, 10.76f) + arcTo(9.167f, 9.167f, 0f, isMoreThanHalf = false, isPositiveArc = true, 35.82f, 10.87f) + quadTo(36.757f, 11.022f, 37.52f, 11.38f) + arcTo(6.566f, 6.566f, 0f, isMoreThanHalf = false, isPositiveArc = true, 39.253f, 12.546f) + arcTo(6.086f, 6.086f, 0f, isMoreThanHalf = false, isPositiveArc = true, 39.72f, 13.04f) + quadTo(40.6f, 14.08f, 41.02f, 15.48f) + arcTo(10.1f, 10.1f, 0f, isMoreThanHalf = false, isPositiveArc = true, 41.423f, 17.838f) + arcTo(11.747f, 11.747f, 0f, isMoreThanHalf = false, isPositiveArc = true, 41.44f, 18.48f) + lineTo(41.44f, 30.24f) + lineTo(37.68f, 30.24f) + lineTo(37.68f, 19.72f) + quadTo(37.68f, 18.56f, 37.5f, 17.52f) + arcTo(5.745f, 5.745f, 0f, isMoreThanHalf = false, isPositiveArc = false, 37.186f, 16.384f) + arcTo(4.788f, 4.788f, 0f, isMoreThanHalf = false, isPositiveArc = false, 36.84f, 15.68f) + quadTo(36.36f, 14.88f, 35.52f, 14.4f) + arcTo(3.367f, 3.367f, 0f, isMoreThanHalf = false, isPositiveArc = false, 34.635f, 14.057f) + quadTo(34.244f, 13.963f, 33.788f, 13.933f) + arcTo(6.628f, 6.628f, 0f, isMoreThanHalf = false, isPositiveArc = false, 33.36f, 13.92f) + arcTo(4.794f, 4.794f, 0f, isMoreThanHalf = false, isPositiveArc = false, 31.382f, 14.319f) + arcTo(4.666f, 4.666f, 0f, isMoreThanHalf = false, isPositiveArc = false, 29.7f, 15.62f) + quadTo(28.355f, 17.23f, 28.284f, 19.863f) + arcTo(11.006f, 11.006f, 0f, isMoreThanHalf = false, isPositiveArc = false, 28.28f, 20.16f) + lineTo(28.28f, 30.24f) + lineTo(24.52f, 30.24f) + lineTo(24.52f, 15.36f) + quadTo(24.52f, 14.6f, 24.48f, 13.4f) + arcTo(49.99f, 49.99f, 0f, isMoreThanHalf = false, isPositiveArc = false, 24.437f, 12.404f) + quadTo(24.405f, 11.798f, 24.36f, 11.28f) + close() + moveTo(118.72f, 11.28f) + lineTo(122.28f, 11.28f) + arcTo(20.944f, 20.944f, 0f, isMoreThanHalf = false, isPositiveArc = true, 122.35f, 12.039f) + quadTo(122.379f, 12.434f, 122.399f, 12.872f) + arcTo(33.443f, 33.443f, 0f, isMoreThanHalf = false, isPositiveArc = true, 122.4f, 12.9f) + quadTo(122.44f, 13.8f, 122.44f, 14.4f) + lineTo(122.56f, 14.4f) + arcTo(5.447f, 5.447f, 0f, isMoreThanHalf = false, isPositiveArc = true, 123.389f, 13.147f) + arcTo(6.224f, 6.224f, 0f, isMoreThanHalf = false, isPositiveArc = true, 123.54f, 12.98f) + quadTo(124.16f, 12.32f, 124.96f, 11.82f) + arcTo(6.957f, 6.957f, 0f, isMoreThanHalf = false, isPositiveArc = true, 126.601f, 11.076f) + arcTo(7.744f, 7.744f, 0f, isMoreThanHalf = false, isPositiveArc = true, 126.72f, 11.04f) + quadTo(127.68f, 10.76f, 128.72f, 10.76f) + arcTo(9.167f, 9.167f, 0f, isMoreThanHalf = false, isPositiveArc = true, 130.18f, 10.87f) + quadTo(131.117f, 11.022f, 131.88f, 11.38f) + arcTo(6.566f, 6.566f, 0f, isMoreThanHalf = false, isPositiveArc = true, 133.613f, 12.546f) + arcTo(6.086f, 6.086f, 0f, isMoreThanHalf = false, isPositiveArc = true, 134.08f, 13.04f) + quadTo(134.96f, 14.08f, 135.38f, 15.48f) + arcTo(10.1f, 10.1f, 0f, isMoreThanHalf = false, isPositiveArc = true, 135.783f, 17.838f) + arcTo(11.747f, 11.747f, 0f, isMoreThanHalf = false, isPositiveArc = true, 135.8f, 18.48f) + lineTo(135.8f, 30.24f) + lineTo(132.04f, 30.24f) + lineTo(132.04f, 19.72f) + quadTo(132.04f, 18.56f, 131.86f, 17.52f) + arcTo(5.745f, 5.745f, 0f, isMoreThanHalf = false, isPositiveArc = false, 131.546f, 16.384f) + arcTo(4.788f, 4.788f, 0f, isMoreThanHalf = false, isPositiveArc = false, 131.2f, 15.68f) + quadTo(130.72f, 14.88f, 129.88f, 14.4f) + arcTo(3.367f, 3.367f, 0f, isMoreThanHalf = false, isPositiveArc = false, 128.995f, 14.057f) + quadTo(128.604f, 13.963f, 128.148f, 13.933f) + arcTo(6.628f, 6.628f, 0f, isMoreThanHalf = false, isPositiveArc = false, 127.72f, 13.92f) + arcTo(4.794f, 4.794f, 0f, isMoreThanHalf = false, isPositiveArc = false, 125.742f, 14.319f) + arcTo(4.666f, 4.666f, 0f, isMoreThanHalf = false, isPositiveArc = false, 124.06f, 15.62f) + quadTo(122.715f, 17.23f, 122.644f, 19.863f) + arcTo(11.006f, 11.006f, 0f, isMoreThanHalf = false, isPositiveArc = false, 122.64f, 20.16f) + lineTo(122.64f, 30.24f) + lineTo(118.88f, 30.24f) + lineTo(118.88f, 15.36f) + quadTo(118.88f, 14.6f, 118.84f, 13.4f) + arcTo(49.99f, 49.99f, 0f, isMoreThanHalf = false, isPositiveArc = false, 118.797f, 12.404f) + quadTo(118.765f, 11.798f, 118.72f, 11.28f) + close() + moveTo(187.04f, 11.28f) + lineTo(190.6f, 11.28f) + arcTo(20.944f, 20.944f, 0f, isMoreThanHalf = false, isPositiveArc = true, 190.67f, 12.039f) + quadTo(190.699f, 12.434f, 190.719f, 12.872f) + arcTo(33.443f, 33.443f, 0f, isMoreThanHalf = false, isPositiveArc = true, 190.72f, 12.9f) + quadTo(190.76f, 13.8f, 190.76f, 14.4f) + lineTo(190.88f, 14.4f) + arcTo(5.447f, 5.447f, 0f, isMoreThanHalf = false, isPositiveArc = true, 191.709f, 13.147f) + arcTo(6.224f, 6.224f, 0f, isMoreThanHalf = false, isPositiveArc = true, 191.86f, 12.98f) + quadTo(192.48f, 12.32f, 193.28f, 11.82f) + arcTo(6.957f, 6.957f, 0f, isMoreThanHalf = false, isPositiveArc = true, 194.921f, 11.076f) + arcTo(7.744f, 7.744f, 0f, isMoreThanHalf = false, isPositiveArc = true, 195.04f, 11.04f) + quadTo(196f, 10.76f, 197.04f, 10.76f) + arcTo(9.167f, 9.167f, 0f, isMoreThanHalf = false, isPositiveArc = true, 198.5f, 10.87f) + quadTo(199.437f, 11.022f, 200.2f, 11.38f) + arcTo(6.566f, 6.566f, 0f, isMoreThanHalf = false, isPositiveArc = true, 201.933f, 12.546f) + arcTo(6.086f, 6.086f, 0f, isMoreThanHalf = false, isPositiveArc = true, 202.4f, 13.04f) + quadTo(203.28f, 14.08f, 203.7f, 15.48f) + arcTo(10.1f, 10.1f, 0f, isMoreThanHalf = false, isPositiveArc = true, 204.103f, 17.838f) + arcTo(11.747f, 11.747f, 0f, isMoreThanHalf = false, isPositiveArc = true, 204.12f, 18.48f) + lineTo(204.12f, 30.24f) + lineTo(200.36f, 30.24f) + lineTo(200.36f, 19.72f) + quadTo(200.36f, 18.56f, 200.18f, 17.52f) + arcTo(5.745f, 5.745f, 0f, isMoreThanHalf = false, isPositiveArc = false, 199.866f, 16.384f) + arcTo(4.788f, 4.788f, 0f, isMoreThanHalf = false, isPositiveArc = false, 199.52f, 15.68f) + quadTo(199.04f, 14.88f, 198.2f, 14.4f) + arcTo(3.367f, 3.367f, 0f, isMoreThanHalf = false, isPositiveArc = false, 197.315f, 14.057f) + quadTo(196.924f, 13.963f, 196.468f, 13.933f) + arcTo(6.628f, 6.628f, 0f, isMoreThanHalf = false, isPositiveArc = false, 196.04f, 13.92f) + arcTo(4.794f, 4.794f, 0f, isMoreThanHalf = false, isPositiveArc = false, 194.062f, 14.319f) + arcTo(4.666f, 4.666f, 0f, isMoreThanHalf = false, isPositiveArc = false, 192.38f, 15.62f) + quadTo(191.035f, 17.23f, 190.964f, 19.863f) + arcTo(11.006f, 11.006f, 0f, isMoreThanHalf = false, isPositiveArc = false, 190.96f, 20.16f) + lineTo(190.96f, 30.24f) + lineTo(187.2f, 30.24f) + lineTo(187.2f, 15.36f) + quadTo(187.2f, 14.6f, 187.16f, 13.4f) + arcTo(49.99f, 49.99f, 0f, isMoreThanHalf = false, isPositiveArc = false, 187.117f, 12.404f) + quadTo(187.085f, 11.798f, 187.04f, 11.28f) + close() + moveTo(73.24f, 27.4f) + lineTo(73.24f, 39.84f) + lineTo(69.48f, 39.84f) + lineTo(69.48f, 11.28f) + lineTo(73.16f, 11.28f) + lineTo(73.16f, 14.24f) + lineTo(73.28f, 14.24f) + arcTo(6.614f, 6.614f, 0f, isMoreThanHalf = false, isPositiveArc = true, 75.047f, 12.334f) + arcTo(8.439f, 8.439f, 0f, isMoreThanHalf = false, isPositiveArc = true, 75.98f, 11.74f) + arcTo(7.846f, 7.846f, 0f, isMoreThanHalf = false, isPositiveArc = true, 78.668f, 10.861f) + arcTo(10.159f, 10.159f, 0f, isMoreThanHalf = false, isPositiveArc = true, 80.12f, 10.76f) + arcTo(10.259f, 10.259f, 0f, isMoreThanHalf = false, isPositiveArc = true, 82.504f, 11.028f) + arcTo(8.741f, 8.741f, 0f, isMoreThanHalf = false, isPositiveArc = true, 83.98f, 11.52f) + quadTo(85.72f, 12.28f, 86.98f, 13.64f) + quadTo(88.24f, 15f, 88.92f, 16.82f) + arcTo(10.934f, 10.934f, 0f, isMoreThanHalf = false, isPositiveArc = true, 89.594f, 20.332f) + arcTo(12.508f, 12.508f, 0f, isMoreThanHalf = false, isPositiveArc = true, 89.6f, 20.72f) + arcTo(11.316f, 11.316f, 0f, isMoreThanHalf = false, isPositiveArc = true, 89.061f, 24.235f) + arcTo(10.672f, 10.672f, 0f, isMoreThanHalf = false, isPositiveArc = true, 88.92f, 24.64f) + arcTo(9.832f, 9.832f, 0f, isMoreThanHalf = false, isPositiveArc = true, 87.445f, 27.313f) + arcTo(9.18f, 9.18f, 0f, isMoreThanHalf = false, isPositiveArc = true, 87f, 27.84f) + quadTo(85.76f, 29.2f, 84f, 29.98f) + arcTo(9.076f, 9.076f, 0f, isMoreThanHalf = false, isPositiveArc = true, 81.372f, 30.684f) + arcTo(11.346f, 11.346f, 0f, isMoreThanHalf = false, isPositiveArc = true, 80.04f, 30.76f) + quadTo(78f, 30.76f, 76.2f, 29.88f) + quadTo(74.4f, 29f, 73.36f, 27.4f) + lineTo(73.24f, 27.4f) + close() + moveTo(247.88f, 21.88f) + lineTo(232.84f, 21.88f) + quadTo(232.88f, 23.08f, 233.38f, 24.14f) + quadTo(233.88f, 25.2f, 234.72f, 25.98f) + quadTo(235.56f, 26.76f, 236.66f, 27.2f) + quadTo(237.76f, 27.64f, 239f, 27.64f) + arcTo(7.368f, 7.368f, 0f, isMoreThanHalf = false, isPositiveArc = false, 240.673f, 27.458f) + arcTo(5.681f, 5.681f, 0f, isMoreThanHalf = false, isPositiveArc = false, 242.32f, 26.8f) + arcTo(7.422f, 7.422f, 0f, isMoreThanHalf = false, isPositiveArc = false, 243.689f, 25.757f) + arcTo(6.166f, 6.166f, 0f, isMoreThanHalf = false, isPositiveArc = false, 244.52f, 24.76f) + lineTo(247.16f, 26.88f) + quadTo(245.64f, 28.88f, 243.58f, 29.82f) + quadTo(241.52f, 30.76f, 239f, 30.76f) + arcTo(11.366f, 11.366f, 0f, isMoreThanHalf = false, isPositiveArc = true, 236.189f, 30.422f) + arcTo(10.073f, 10.073f, 0f, isMoreThanHalf = false, isPositiveArc = true, 235f, 30.04f) + arcTo(9.419f, 9.419f, 0f, isMoreThanHalf = false, isPositiveArc = true, 232.398f, 28.524f) + arcTo(8.798f, 8.798f, 0f, isMoreThanHalf = false, isPositiveArc = true, 231.84f, 28.02f) + arcTo(9.247f, 9.247f, 0f, isMoreThanHalf = false, isPositiveArc = true, 229.92f, 25.248f) + arcTo(10.721f, 10.721f, 0f, isMoreThanHalf = false, isPositiveArc = true, 229.76f, 24.88f) + arcTo(10.063f, 10.063f, 0f, isMoreThanHalf = false, isPositiveArc = true, 229.06f, 22.028f) + arcTo(12.284f, 12.284f, 0f, isMoreThanHalf = false, isPositiveArc = true, 229f, 20.8f) + quadTo(229f, 18.6f, 229.74f, 16.74f) + arcTo(9.54f, 9.54f, 0f, isMoreThanHalf = false, isPositiveArc = true, 231.176f, 14.254f) + arcTo(8.794f, 8.794f, 0f, isMoreThanHalf = false, isPositiveArc = true, 231.8f, 13.56f) + quadTo(233.12f, 12.24f, 234.92f, 11.5f) + quadTo(236.72f, 10.76f, 238.8f, 10.76f) + arcTo(11.039f, 11.039f, 0f, isMoreThanHalf = false, isPositiveArc = true, 241.02f, 10.975f) + arcTo(9.125f, 9.125f, 0f, isMoreThanHalf = false, isPositiveArc = true, 242.58f, 11.44f) + quadTo(244.28f, 12.12f, 245.46f, 13.4f) + arcTo(8.518f, 8.518f, 0f, isMoreThanHalf = false, isPositiveArc = true, 246.973f, 15.726f) + arcTo(10.24f, 10.24f, 0f, isMoreThanHalf = false, isPositiveArc = true, 247.28f, 16.5f) + quadTo(247.92f, 18.32f, 247.92f, 20.6f) + lineTo(247.92f, 21.24f) + quadTo(247.92f, 21.56f, 247.88f, 21.88f) + close() + moveTo(59.6f, 18.48f) + lineTo(59.6f, 17.96f) + arcTo(5.548f, 5.548f, 0f, isMoreThanHalf = false, isPositiveArc = false, 59.476f, 16.746f) + quadTo(59.302f, 15.972f, 58.885f, 15.406f) + arcTo(3.092f, 3.092f, 0f, isMoreThanHalf = false, isPositiveArc = false, 58.32f, 14.82f) + arcTo(4.455f, 4.455f, 0f, isMoreThanHalf = false, isPositiveArc = false, 56.642f, 14.002f) + quadTo(55.864f, 13.8f, 54.92f, 13.8f) + quadTo(53.32f, 13.8f, 51.9f, 14.42f) + arcTo(8.386f, 8.386f, 0f, isMoreThanHalf = false, isPositiveArc = false, 50.448f, 15.225f) + arcTo(6.883f, 6.883f, 0f, isMoreThanHalf = false, isPositiveArc = false, 49.52f, 16f) + lineTo(47.52f, 13.6f) + arcTo(9.632f, 9.632f, 0f, isMoreThanHalf = false, isPositiveArc = true, 49.911f, 11.963f) + arcTo(11.725f, 11.725f, 0f, isMoreThanHalf = false, isPositiveArc = true, 50.94f, 11.52f) + arcTo(12.064f, 12.064f, 0f, isMoreThanHalf = false, isPositiveArc = true, 54.776f, 10.769f) + arcTo(13.874f, 13.874f, 0f, isMoreThanHalf = false, isPositiveArc = true, 55.28f, 10.76f) + arcTo(12.083f, 12.083f, 0f, isMoreThanHalf = false, isPositiveArc = true, 56.962f, 10.871f) + quadTo(57.849f, 10.996f, 58.606f, 11.261f) + arcTo(7.17f, 7.17f, 0f, isMoreThanHalf = false, isPositiveArc = true, 58.82f, 11.34f) + quadTo(60.32f, 11.92f, 61.28f, 12.92f) + quadTo(62.24f, 13.92f, 62.72f, 15.28f) + quadTo(63.2f, 16.64f, 63.2f, 18.2f) + lineTo(63.2f, 26.48f) + arcTo(34.317f, 34.317f, 0f, isMoreThanHalf = false, isPositiveArc = false, 63.231f, 27.912f) + arcTo(39.875f, 39.875f, 0f, isMoreThanHalf = false, isPositiveArc = false, 63.26f, 28.5f) + arcTo(15.406f, 15.406f, 0f, isMoreThanHalf = false, isPositiveArc = false, 63.313f, 29.184f) + quadTo(63.375f, 29.794f, 63.48f, 30.24f) + lineTo(60.08f, 30.24f) + quadTo(59.76f, 28.88f, 59.76f, 27.52f) + lineTo(59.64f, 27.52f) + quadTo(58.6f, 29.04f, 57.02f, 29.88f) + quadTo(55.44f, 30.72f, 53.28f, 30.72f) + quadTo(52.16f, 30.72f, 50.94f, 30.42f) + quadTo(49.72f, 30.12f, 48.72f, 29.44f) + quadTo(47.72f, 28.76f, 47.06f, 27.64f) + quadTo(46.4f, 26.52f, 46.4f, 24.88f) + arcTo(6.5f, 6.5f, 0f, isMoreThanHalf = false, isPositiveArc = true, 46.547f, 23.458f) + quadTo(46.767f, 22.476f, 47.317f, 21.75f) + arcTo(3.978f, 3.978f, 0f, isMoreThanHalf = false, isPositiveArc = true, 47.56f, 21.46f) + quadTo(48.72f, 20.2f, 50.6f, 19.54f) + arcTo(15.327f, 15.327f, 0f, isMoreThanHalf = false, isPositiveArc = true, 52.867f, 18.943f) + arcTo(19.933f, 19.933f, 0f, isMoreThanHalf = false, isPositiveArc = true, 54.84f, 18.68f) + quadTo(57.2f, 18.48f, 59.6f, 18.48f) + close() + moveTo(177.32f, 18.48f) + lineTo(177.32f, 17.96f) + arcTo(5.548f, 5.548f, 0f, isMoreThanHalf = false, isPositiveArc = false, 177.196f, 16.746f) + quadTo(177.022f, 15.972f, 176.605f, 15.406f) + arcTo(3.092f, 3.092f, 0f, isMoreThanHalf = false, isPositiveArc = false, 176.04f, 14.82f) + arcTo(4.455f, 4.455f, 0f, isMoreThanHalf = false, isPositiveArc = false, 174.362f, 14.002f) + quadTo(173.584f, 13.8f, 172.64f, 13.8f) + quadTo(171.04f, 13.8f, 169.62f, 14.42f) + arcTo(8.386f, 8.386f, 0f, isMoreThanHalf = false, isPositiveArc = false, 168.168f, 15.225f) + arcTo(6.883f, 6.883f, 0f, isMoreThanHalf = false, isPositiveArc = false, 167.24f, 16f) + lineTo(165.24f, 13.6f) + arcTo(9.632f, 9.632f, 0f, isMoreThanHalf = false, isPositiveArc = true, 167.631f, 11.963f) + arcTo(11.725f, 11.725f, 0f, isMoreThanHalf = false, isPositiveArc = true, 168.66f, 11.52f) + arcTo(12.064f, 12.064f, 0f, isMoreThanHalf = false, isPositiveArc = true, 172.496f, 10.769f) + arcTo(13.874f, 13.874f, 0f, isMoreThanHalf = false, isPositiveArc = true, 173f, 10.76f) + arcTo(12.083f, 12.083f, 0f, isMoreThanHalf = false, isPositiveArc = true, 174.682f, 10.871f) + quadTo(175.569f, 10.996f, 176.326f, 11.261f) + arcTo(7.17f, 7.17f, 0f, isMoreThanHalf = false, isPositiveArc = true, 176.54f, 11.34f) + quadTo(178.04f, 11.92f, 179f, 12.92f) + quadTo(179.96f, 13.92f, 180.44f, 15.28f) + quadTo(180.92f, 16.64f, 180.92f, 18.2f) + lineTo(180.92f, 26.48f) + arcTo(34.317f, 34.317f, 0f, isMoreThanHalf = false, isPositiveArc = false, 180.951f, 27.912f) + arcTo(39.875f, 39.875f, 0f, isMoreThanHalf = false, isPositiveArc = false, 180.98f, 28.5f) + arcTo(15.406f, 15.406f, 0f, isMoreThanHalf = false, isPositiveArc = false, 181.033f, 29.184f) + quadTo(181.095f, 29.794f, 181.2f, 30.24f) + lineTo(177.8f, 30.24f) + quadTo(177.48f, 28.88f, 177.48f, 27.52f) + lineTo(177.36f, 27.52f) + quadTo(176.32f, 29.04f, 174.74f, 29.88f) + quadTo(173.16f, 30.72f, 171f, 30.72f) + quadTo(169.88f, 30.72f, 168.66f, 30.42f) + quadTo(167.44f, 30.12f, 166.44f, 29.44f) + quadTo(165.44f, 28.76f, 164.78f, 27.64f) + quadTo(164.12f, 26.52f, 164.12f, 24.88f) + arcTo(6.5f, 6.5f, 0f, isMoreThanHalf = false, isPositiveArc = true, 164.267f, 23.458f) + quadTo(164.487f, 22.476f, 165.037f, 21.75f) + arcTo(3.978f, 3.978f, 0f, isMoreThanHalf = false, isPositiveArc = true, 165.28f, 21.46f) + quadTo(166.44f, 20.2f, 168.32f, 19.54f) + arcTo(15.327f, 15.327f, 0f, isMoreThanHalf = false, isPositiveArc = true, 170.587f, 18.943f) + arcTo(19.933f, 19.933f, 0f, isMoreThanHalf = false, isPositiveArc = true, 172.56f, 18.68f) + quadTo(174.92f, 18.48f, 177.32f, 18.48f) + close() + moveTo(226.48f, 13.88f) + lineTo(223.76f, 16.08f) + arcTo(4.04f, 4.04f, 0f, isMoreThanHalf = false, isPositiveArc = false, 222.866f, 15.117f) + arcTo(5.637f, 5.637f, 0f, isMoreThanHalf = false, isPositiveArc = false, 221.96f, 14.54f) + quadTo(220.76f, 13.92f, 219.4f, 13.92f) + quadTo(217.92f, 13.92f, 216.78f, 14.48f) + quadTo(215.64f, 15.04f, 214.84f, 15.98f) + arcTo(6.552f, 6.552f, 0f, isMoreThanHalf = false, isPositiveArc = false, 213.66f, 18.044f) + arcTo(7.449f, 7.449f, 0f, isMoreThanHalf = false, isPositiveArc = false, 213.62f, 18.16f) + quadTo(213.2f, 19.4f, 213.2f, 20.76f) + quadTo(213.2f, 22.12f, 213.62f, 23.36f) + arcTo(6.651f, 6.651f, 0f, isMoreThanHalf = false, isPositiveArc = false, 214.645f, 25.299f) + arcTo(6.288f, 6.288f, 0f, isMoreThanHalf = false, isPositiveArc = false, 214.84f, 25.54f) + quadTo(215.64f, 26.48f, 216.8f, 27.04f) + arcTo(5.612f, 5.612f, 0f, isMoreThanHalf = false, isPositiveArc = false, 218.546f, 27.545f) + arcTo(7.101f, 7.101f, 0f, isMoreThanHalf = false, isPositiveArc = false, 219.44f, 27.6f) + quadTo(220.88f, 27.6f, 222.06f, 27.04f) + quadTo(223.24f, 26.48f, 224f, 25.52f) + lineTo(226.52f, 27.8f) + quadTo(225.32f, 29.2f, 223.52f, 29.98f) + quadTo(221.72f, 30.76f, 219.44f, 30.76f) + arcTo(11.759f, 11.759f, 0f, isMoreThanHalf = false, isPositiveArc = true, 216.7f, 30.45f) + arcTo(10.249f, 10.249f, 0f, isMoreThanHalf = false, isPositiveArc = true, 215.38f, 30.04f) + arcTo(9.738f, 9.738f, 0f, isMoreThanHalf = false, isPositiveArc = true, 212.53f, 28.355f) + arcTo(9.23f, 9.23f, 0f, isMoreThanHalf = false, isPositiveArc = true, 212.16f, 28.02f) + arcTo(9.264f, 9.264f, 0f, isMoreThanHalf = false, isPositiveArc = true, 210.094f, 25.051f) + arcTo(10.626f, 10.626f, 0f, isMoreThanHalf = false, isPositiveArc = true, 210.02f, 24.88f) + arcTo(9.821f, 9.821f, 0f, isMoreThanHalf = false, isPositiveArc = true, 209.316f, 22.142f) + arcTo(12.222f, 12.222f, 0f, isMoreThanHalf = false, isPositiveArc = true, 209.24f, 20.76f) + arcTo(11.439f, 11.439f, 0f, isMoreThanHalf = false, isPositiveArc = true, 209.506f, 18.249f) + arcTo(9.623f, 9.623f, 0f, isMoreThanHalf = false, isPositiveArc = true, 210f, 16.68f) + quadTo(210.76f, 14.84f, 212.12f, 13.52f) + quadTo(213.48f, 12.2f, 215.34f, 11.48f) + arcTo(10.84f, 10.84f, 0f, isMoreThanHalf = false, isPositiveArc = true, 218.758f, 10.774f) + arcTo(12.596f, 12.596f, 0f, isMoreThanHalf = false, isPositiveArc = true, 219.36f, 10.76f) + arcTo(10.456f, 10.456f, 0f, isMoreThanHalf = false, isPositiveArc = true, 223.031f, 11.44f) + arcTo(11.991f, 11.991f, 0f, isMoreThanHalf = false, isPositiveArc = true, 223.34f, 11.56f) + arcTo(7.973f, 7.973f, 0f, isMoreThanHalf = false, isPositiveArc = true, 225.212f, 12.613f) + arcTo(6.742f, 6.742f, 0f, isMoreThanHalf = false, isPositiveArc = true, 226.48f, 13.88f) + close() + moveTo(85.72f, 20.72f) + quadTo(85.72f, 19.4f, 85.32f, 18.16f) + quadTo(84.92f, 16.92f, 84.12f, 15.96f) + quadTo(83.32f, 15f, 82.14f, 14.44f) + arcTo(5.677f, 5.677f, 0f, isMoreThanHalf = false, isPositiveArc = false, 80.605f, 13.972f) + arcTo(7.538f, 7.538f, 0f, isMoreThanHalf = false, isPositiveArc = false, 79.4f, 13.88f) + quadTo(77.96f, 13.88f, 76.78f, 14.44f) + quadTo(75.6f, 15f, 74.76f, 15.96f) + quadTo(73.92f, 16.92f, 73.46f, 18.16f) + quadTo(73f, 19.4f, 73f, 20.76f) + quadTo(73f, 22.12f, 73.46f, 23.36f) + quadTo(73.92f, 24.6f, 74.76f, 25.54f) + quadTo(75.6f, 26.48f, 76.78f, 27.04f) + arcTo(5.85f, 5.85f, 0f, isMoreThanHalf = false, isPositiveArc = false, 78.847f, 27.579f) + arcTo(7.039f, 7.039f, 0f, isMoreThanHalf = false, isPositiveArc = false, 79.4f, 27.6f) + arcTo(7.137f, 7.137f, 0f, isMoreThanHalf = false, isPositiveArc = false, 80.779f, 27.473f) + arcTo(5.459f, 5.459f, 0f, isMoreThanHalf = false, isPositiveArc = false, 82.14f, 27.02f) + quadTo(83.32f, 26.44f, 84.12f, 25.48f) + quadTo(84.92f, 24.52f, 85.32f, 23.28f) + quadTo(85.72f, 22.04f, 85.72f, 20.72f) + close() + moveTo(232.84f, 19.08f) + lineTo(244.12f, 19.08f) + arcTo(7.34f, 7.34f, 0f, isMoreThanHalf = false, isPositiveArc = false, 243.879f, 17.431f) + arcTo(6.622f, 6.622f, 0f, isMoreThanHalf = false, isPositiveArc = false, 243.74f, 16.98f) + arcTo(4.888f, 4.888f, 0f, isMoreThanHalf = false, isPositiveArc = false, 242.948f, 15.523f) + arcTo(4.617f, 4.617f, 0f, isMoreThanHalf = false, isPositiveArc = false, 242.74f, 15.28f) + arcTo(4.591f, 4.591f, 0f, isMoreThanHalf = false, isPositiveArc = false, 241.413f, 14.286f) + arcTo(5.441f, 5.441f, 0f, isMoreThanHalf = false, isPositiveArc = false, 241.1f, 14.14f) + quadTo(240.149f, 13.732f, 238.877f, 13.72f) + arcTo(8.206f, 8.206f, 0f, isMoreThanHalf = false, isPositiveArc = false, 238.8f, 13.72f) + quadTo(237.6f, 13.72f, 236.54f, 14.14f) + quadTo(235.48f, 14.56f, 234.7f, 15.28f) + quadTo(233.92f, 16f, 233.42f, 16.98f) + quadTo(232.92f, 17.96f, 232.84f, 19.08f) + close() + moveTo(59.6f, 21.2f) + lineTo(58.68f, 21.2f) + arcTo(35.838f, 35.838f, 0f, isMoreThanHalf = false, isPositiveArc = false, 56.2f, 21.289f) + arcTo(39.946f, 39.946f, 0f, isMoreThanHalf = false, isPositiveArc = false, 55.78f, 21.32f) + quadTo(54.28f, 21.44f, 53.06f, 21.8f) + arcTo(5.928f, 5.928f, 0f, isMoreThanHalf = false, isPositiveArc = false, 51.977f, 22.233f) + arcTo(4.572f, 4.572f, 0f, isMoreThanHalf = false, isPositiveArc = false, 51.04f, 22.88f) + arcTo(2.379f, 2.379f, 0f, isMoreThanHalf = false, isPositiveArc = false, 50.256f, 24.472f) + arcTo(3.318f, 3.318f, 0f, isMoreThanHalf = false, isPositiveArc = false, 50.24f, 24.8f) + arcTo(3.432f, 3.432f, 0f, isMoreThanHalf = false, isPositiveArc = false, 50.292f, 25.414f) + quadTo(50.357f, 25.772f, 50.504f, 26.063f) + arcTo(2.008f, 2.008f, 0f, isMoreThanHalf = false, isPositiveArc = false, 50.58f, 26.2f) + quadTo(50.92f, 26.76f, 51.48f, 27.12f) + quadTo(52.04f, 27.48f, 52.72f, 27.62f) + quadTo(53.4f, 27.76f, 54.12f, 27.76f) + arcTo(7.062f, 7.062f, 0f, isMoreThanHalf = false, isPositiveArc = false, 55.756f, 27.582f) + arcTo(4.6f, 4.6f, 0f, isMoreThanHalf = false, isPositiveArc = false, 58.18f, 26.18f) + arcTo(5.492f, 5.492f, 0f, isMoreThanHalf = false, isPositiveArc = false, 59.548f, 23.089f) + arcTo(7.385f, 7.385f, 0f, isMoreThanHalf = false, isPositiveArc = false, 59.6f, 22.2f) + lineTo(59.6f, 21.2f) + close() + moveTo(177.32f, 21.2f) + lineTo(176.4f, 21.2f) + arcTo(35.838f, 35.838f, 0f, isMoreThanHalf = false, isPositiveArc = false, 173.92f, 21.289f) + arcTo(39.946f, 39.946f, 0f, isMoreThanHalf = false, isPositiveArc = false, 173.5f, 21.32f) + quadTo(172f, 21.44f, 170.78f, 21.8f) + arcTo(5.928f, 5.928f, 0f, isMoreThanHalf = false, isPositiveArc = false, 169.697f, 22.233f) + arcTo(4.572f, 4.572f, 0f, isMoreThanHalf = false, isPositiveArc = false, 168.76f, 22.88f) + arcTo(2.379f, 2.379f, 0f, isMoreThanHalf = false, isPositiveArc = false, 167.976f, 24.472f) + arcTo(3.318f, 3.318f, 0f, isMoreThanHalf = false, isPositiveArc = false, 167.96f, 24.8f) + arcTo(3.432f, 3.432f, 0f, isMoreThanHalf = false, isPositiveArc = false, 168.012f, 25.414f) + quadTo(168.077f, 25.772f, 168.224f, 26.063f) + arcTo(2.008f, 2.008f, 0f, isMoreThanHalf = false, isPositiveArc = false, 168.3f, 26.2f) + quadTo(168.64f, 26.76f, 169.2f, 27.12f) + quadTo(169.76f, 27.48f, 170.44f, 27.62f) + quadTo(171.12f, 27.76f, 171.84f, 27.76f) + arcTo(7.062f, 7.062f, 0f, isMoreThanHalf = false, isPositiveArc = false, 173.476f, 27.582f) + arcTo(4.6f, 4.6f, 0f, isMoreThanHalf = false, isPositiveArc = false, 175.9f, 26.18f) + arcTo(5.492f, 5.492f, 0f, isMoreThanHalf = false, isPositiveArc = false, 177.268f, 23.089f) + arcTo(7.385f, 7.385f, 0f, isMoreThanHalf = false, isPositiveArc = false, 177.32f, 22.2f) + lineTo(177.32f, 21.2f) + close() + } + } + }.build() +}