/*
 * ImageToolbox is an image editor for android
 * Copyright (c) 2026 T8RIN (Malik Mukhametzyanov)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * You should have received a copy of the Apache License
 * along with this program.  If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
 */

package com.t8rin.imagetoolbox.core.resources.icons

import com.t8rin.imagetoolbox.core.resources.Icons
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

val Icons.Outlined.KeyVariant: ImageVector by lazy(LazyThreadSafetyMode.NONE) {
    ImageVector.Builder(
        name = "KeyVariant",
        defaultWidth = 24.dp,
        defaultHeight = 24.dp,
        viewportWidth = 24f,
        viewportHeight = 24f
    ).apply {
        path(fill = SolidColor(Color.Black)) {
            moveTo(16.855f, 9.083f)
            curveToRelative(0f, -0.538f, -0.189f, -0.995f, -0.566f, -1.373f)
            reflectiveCurveToRelative(-0.835f, -0.566f, -1.373f, -0.566f)
            reflectiveCurveToRelative(-0.995f, 0.189f, -1.373f, 0.566f)
            reflectiveCurveToRelative(-0.566f, 0.835f, -0.566f, 1.373f)
            reflectiveCurveToRelative(0.189f, 0.995f, 0.566f, 1.373f)
            reflectiveCurveToRelative(0.835f, 0.566f, 1.373f, 0.566f)
            reflectiveCurveToRelative(0.995f, -0.189f, 1.373f, -0.566f)
            curveToRelative(0.377f, -0.377f, 0.566f, -0.835f, 0.566f, -1.373f)
            close()
            moveTo(19.034f, 13.201f)
            curveToRelative(1.144f, -1.144f, 1.716f, -2.516f, 1.716f, -4.118f)
            reflectiveCurveToRelative(-0.572f, -2.974f, -1.716f, -4.118f)
            reflectiveCurveToRelative(-2.516f, -1.716f, -4.118f, -1.716f)
            reflectiveCurveToRelative(-2.974f, 0.572f, -4.118f, 1.716f)
            curveToRelative(-0.766f, 0.766f, -1.272f, 1.65f, -1.518f, 2.651f)
            reflectiveCurveToRelative(-0.243f, 1.993f, 0.009f, 2.977f)
            lineToRelative(-5.748f, 5.748f)
            curveToRelative(-0.092f, 0.092f, -0.163f, 0.197f, -0.214f, 0.317f)
            reflectiveCurveToRelative(-0.077f, 0.249f, -0.077f, 0.386f)
            lineToRelative(-0f, 2.745f)
            curveToRelative(0f, 0.137f, 0.026f, 0.26f, 0.077f, 0.369f)
            curveToRelative(0.051f, 0.109f, 0.123f, 0.209f, 0.214f, 0.3f)
            reflectiveCurveToRelative(0.192f, 0.163f, 0.3f, 0.214f)
            reflectiveCurveToRelative(0.232f, 0.077f, 0.369f, 0.077f)
            horizontalLineToRelative(4.358f)
            curveToRelative(0.114f, 0f, 0.229f, -0.023f, 0.343f, -0.069f)
            reflectiveCurveToRelative(0.217f, -0.103f, 0.309f, -0.172f)
            reflectiveCurveToRelative(0.166f, -0.154f, 0.223f, -0.257f)
            reflectiveCurveToRelative(0.092f, -0.217f, 0.103f, -0.343f)
            lineToRelative(0.223f, -1.561f)
            lineToRelative(1.716f, -0.24f)
            curveToRelative(0.103f, -0.011f, 0.2f, -0.04f, 0.292f, -0.086f)
            reflectiveCurveToRelative(0.172f, -0.103f, 0.24f, -0.172f)
            reflectiveCurveToRelative(0.129f, -0.152f, 0.18f, -0.249f)
            reflectiveCurveToRelative(0.083f, -0.197f, 0.094f, -0.3f)
            lineToRelative(0.309f, -1.784f)
            lineToRelative(0.806f, -0.806f)
            curveToRelative(0.984f, 0.252f, 1.976f, 0.254f, 2.977f, 0.009f)
            reflectiveCurveToRelative(1.884f, -0.752f, 2.651f, -1.518f)
            close()
            moveTo(17.662f, 11.828f)
            curveToRelative(-0.641f, 0.641f, -1.398f, 1.009f, -2.273f, 1.107f)
            reflectiveCurveToRelative(-1.69f, -0.071f, -2.445f, -0.506f)
            lineToRelative(-2.145f, 2.145f)
            lineToRelative(-0.292f, 1.699f)
            lineToRelative(0.009f, 0.009f)
            lineToRelative(-0.009f, -0.009f)
            lineToRelative(-2.453f, 0.36f)
            lineToRelative(-0.275f, 2.162f)
            horizontalLineToRelative(-2.574f)
            lineToRelative(0.009f, -0.009f)
            lineToRelative(-0.009f, 0.009f)
            verticalLineToRelative(-1.373f)
            lineToRelative(-0.009f, -0.009f)
            lineToRelative(0.009f, 0.009f)
            lineToRelative(6.365f, -6.365f)
            curveToRelative(-0.435f, -0.755f, -0.603f, -1.57f, -0.506f, -2.445f)
            reflectiveCurveToRelative(0.466f, -1.633f, 1.107f, -2.273f)
            curveToRelative(0.755f, -0.755f, 1.67f, -1.132f, 2.745f, -1.132f)
            reflectiveCurveToRelative(1.99f, 0.377f, 2.745f, 1.132f)
            reflectiveCurveToRelative(1.132f, 1.67f, 1.132f, 2.745f)
            reflectiveCurveToRelative(-0.377f, 1.99f, -1.132f, 2.745f)
            close()
        }
    }.build()
}

val Icons.TwoTone.KeyVariant: ImageVector by lazy(LazyThreadSafetyMode.NONE) {
    ImageVector.Builder(
        name = "TwoToneKeyVariant",
        defaultWidth = 24.dp,
        defaultHeight = 24.dp,
        viewportWidth = 24f,
        viewportHeight = 24f
    ).apply {
        path(fill = SolidColor(Color.Black)) {
            moveTo(16.855f, 9.083f)
            curveToRelative(0f, -0.538f, -0.189f, -0.995f, -0.566f, -1.373f)
            reflectiveCurveToRelative(-0.835f, -0.566f, -1.373f, -0.566f)
            reflectiveCurveToRelative(-0.995f, 0.189f, -1.373f, 0.566f)
            reflectiveCurveToRelative(-0.566f, 0.835f, -0.566f, 1.373f)
            reflectiveCurveToRelative(0.189f, 0.995f, 0.566f, 1.373f)
            reflectiveCurveToRelative(0.835f, 0.566f, 1.373f, 0.566f)
            reflectiveCurveToRelative(0.995f, -0.189f, 1.373f, -0.566f)
            curveToRelative(0.377f, -0.377f, 0.566f, -0.835f, 0.566f, -1.373f)
            close()
        }
        path(fill = SolidColor(Color.Black)) {
            moveTo(19.034f, 4.966f)
            curveToRelative(-1.144f, -1.144f, -2.516f, -1.716f, -4.118f, -1.716f)
            reflectiveCurveToRelative(-2.974f, 0.572f, -4.118f, 1.716f)
            curveToRelative(-0.766f, 0.766f, -1.272f, 1.65f, -1.518f, 2.651f)
            curveToRelative(-0.246f, 1.001f, -0.243f, 1.993f, 0.009f, 2.977f)
            lineToRelative(-5.748f, 5.748f)
            curveToRelative(-0.092f, 0.091f, -0.163f, 0.197f, -0.214f, 0.317f)
            reflectiveCurveToRelative(-0.077f, 0.249f, -0.077f, 0.386f)
            verticalLineToRelative(2.745f)
            curveToRelative(0f, 0.137f, 0.026f, 0.26f, 0.077f, 0.369f)
            reflectiveCurveToRelative(0.123f, 0.209f, 0.214f, 0.3f)
            curveToRelative(0.091f, 0.091f, 0.192f, 0.163f, 0.3f, 0.214f)
            reflectiveCurveToRelative(0.232f, 0.077f, 0.369f, 0.077f)
            horizontalLineToRelative(4.358f)
            curveToRelative(0.114f, 0f, 0.229f, -0.023f, 0.343f, -0.069f)
            curveToRelative(0.114f, -0.046f, 0.217f, -0.103f, 0.309f, -0.172f)
            curveToRelative(0.091f, -0.069f, 0.166f, -0.154f, 0.223f, -0.257f)
            curveToRelative(0.057f, -0.103f, 0.092f, -0.217f, 0.103f, -0.343f)
            lineToRelative(0.223f, -1.561f)
            lineToRelative(1.716f, -0.24f)
            curveToRelative(0.103f, -0.011f, 0.2f, -0.04f, 0.292f, -0.086f)
            curveToRelative(0.091f, -0.046f, 0.172f, -0.103f, 0.24f, -0.172f)
            curveToRelative(0.069f, -0.069f, 0.129f, -0.152f, 0.18f, -0.249f)
            curveToRelative(0.051f, -0.097f, 0.083f, -0.197f, 0.094f, -0.3f)
            lineToRelative(0.309f, -1.784f)
            lineToRelative(0.806f, -0.806f)
            curveToRelative(0.984f, 0.252f, 1.976f, 0.255f, 2.977f, 0.009f)
            curveToRelative(1.001f, -0.246f, 1.884f, -0.752f, 2.651f, -1.518f)
            curveToRelative(1.144f, -1.144f, 1.716f, -2.516f, 1.716f, -4.118f)
            curveToRelative(0f, -1.601f, -0.572f, -2.974f, -1.716f, -4.118f)
            close()
            moveTo(17.666f, 11.828f)
            curveToRelative(-0.641f, 0.641f, -1.398f, 1.009f, -2.273f, 1.107f)
            reflectiveCurveToRelative(-1.69f, -0.071f, -2.445f, -0.506f)
            lineToRelative(-2.145f, 2.145f)
            lineToRelative(-0.292f, 1.698f)
            lineToRelative(-2.453f, 0.36f)
            lineToRelative(-0.275f, 2.162f)
            horizontalLineToRelative(-2.574f)
            verticalLineToRelative(-1.373f)
            lineToRelative(6.365f, -6.365f)
            curveToRelative(-0.435f, -0.755f, -0.603f, -1.57f, -0.506f, -2.445f)
            curveToRelative(0.097f, -0.875f, 0.466f, -1.633f, 1.107f, -2.273f)
            curveToRelative(0.755f, -0.755f, 1.67f, -1.132f, 2.745f, -1.132f)
            reflectiveCurveToRelative(1.99f, 0.377f, 2.745f, 1.132f)
            curveToRelative(0.755f, 0.755f, 1.132f, 1.67f, 1.132f, 2.745f)
            curveToRelative(0f, 1.075f, -0.377f, 1.99f, -1.132f, 2.745f)
            close()
        }
        path(
            fill = SolidColor(Color.Black),
            fillAlpha = 0.3f,
            strokeAlpha = 0.3f
        ) {
            moveTo(17.666f, 11.828f)
            curveToRelative(-0.641f, 0.641f, -1.398f, 1.009f, -2.273f, 1.107f)
            reflectiveCurveToRelative(-1.69f, -0.071f, -2.445f, -0.506f)
            lineToRelative(-2.145f, 2.145f)
            lineToRelative(-0.292f, 1.699f)
            lineToRelative(0.009f, 0.009f)
            lineToRelative(-0.009f, -0.009f)
            lineToRelative(-2.453f, 0.36f)
            lineToRelative(-0.275f, 2.162f)
            horizontalLineToRelative(-2.574f)
            lineToRelative(0.009f, -0.009f)
            lineToRelative(-0.009f, 0.009f)
            verticalLineToRelative(-1.373f)
            lineToRelative(-0.009f, -0.009f)
            lineToRelative(0.009f, 0.009f)
            lineToRelative(6.365f, -6.365f)
            curveToRelative(-0.435f, -0.755f, -0.603f, -1.57f, -0.506f, -2.445f)
            reflectiveCurveToRelative(0.466f, -1.633f, 1.107f, -2.273f)
            curveToRelative(0.755f, -0.755f, 1.67f, -1.132f, 2.745f, -1.132f)
            reflectiveCurveToRelative(1.99f, 0.377f, 2.745f, 1.132f)
            reflectiveCurveToRelative(1.132f, 1.67f, 1.132f, 2.745f)
            reflectiveCurveToRelative(-0.377f, 1.99f, -1.132f, 2.745f)
            close()
        }
    }.build()
}
