Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用扫码登录后只提示了ProducerFailureException报错 #2629

Closed
clhaaaa opened this issue Apr 15, 2023 · 1 comment
Closed

使用扫码登录后只提示了ProducerFailureException报错 #2629

clhaaaa opened this issue Apr 15, 2023 · 1 comment
Labels
z:duplicate 状态: 重复

Comments

@clhaaaa
Copy link

clhaaaa commented Apr 15, 2023

问题描述

无论是密码登录还是扫码登录都只提示一个net.mamoe.mirai.internal.network.auth.ProducerFailureException,
已经删除了sakura插件

复现

密码登录或qr登录均会发生

mirai-core 版本

2.15.0-M1

bot-protocol

ANDROID_WATCH

其他组件版本

mcl-addon-2.1.1
mirai-api-http-2.9.1
mirai-console-dev-qrlogin-0.1.4
simple-welcome-plugin-1.1.0

系统日志

2023-04-14 19:04:23 I/Bot.289*: Bot cancelled: Bot closed
2023-04-14 19:04:23 V/Bot.289*: Event: net.mamoe.mirai.console.events.AutoLoginEvent$Failure@24a3d414
2023-04-14 19:04:23 I/main: mirai-console started successfully.
2023-04-14 19:04:48 W/QRLoginSolver: 当前没有桌面环境,将使用默认登录解决器。
2023-04-14 19:04:48 I/Bot.289*: Bot cancelled: Bot closed
2023-04-14 19:04:48 E/console: net.mamoe.mirai.internal.network.auth.ProducerFailureException
net.mamoe.mirai.internal.network.auth.ProducerFailureException
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope.receiveOrNull(CoroutineOnDemandValueScope.kt:152)
	at net.mamoe.mirai.internal.network.auth.AuthControl.acquireAuth(AuthControl.kt:98)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:219)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$login$1.invokeSuspend(SsoProcessor.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: net.mamoe.mirai.internal.network.auth.IllegalProducerStateException: CreatingProducer
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer.emit(CoroutineOnDemandValueScope.kt:76)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1$sessionImpl$1.authByQRCode(AuthControl.kt:53)
	at net.mamoe.mirai.internal.network.auth.DefaultBotAuthorizationFactoryImpl$byQRCode$1.authorize(DefaultBotAuthorizationFactoryImpl.kt:46)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invokeSuspend(AuthControl.kt:77)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer$1.invokeSuspend(CoroutineOnDemandValueScope.kt:50)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	... 5 more

网络日志

�[0m2023-04-15 05:56:55 V/Net 289*: Validated caches.�[0m
�[0m2023-04-15 05:56:55 V/Net 289*: No server list cached.�[0m
�[96m2023-04-15 05:56:55 D/Net 289*: CAS: JustInitialized -> CreatingProducer: true�[0m
�[0m2023-04-15 05:56:55 V/Net 289*: [AuthControl/auth] Authorization started�[0m
�[0m2023-04-15 05:56:55 V/Net 289*: [AuthControl/auth] Authorization failed: net.mamoe.mirai.internal.network.auth.IllegalProducerStateException: ProducerReady�[0m
�[96m2023-04-15 05:56:55 D/Net 289*: CAS: ProducerReady -> Finished(ProducerReady, net.mamoe.mirai.internal.network.auth.IllegalProducerStateException: ProducerReady): true�[0m
�[96m2023-04-15 05:56:55 D/Net 289*: CAS: CreatingProducer -> ProducerReady: true�[0m
�[92m2023-04-15 05:56:55 I/Net 289*: ECDH key is invalid, start to fetch ecdh public key from server.�[0m
�[92m2023-04-15 05:56:56 I/Net 289*: Successfully fetched ecdh public key from server.�[0m
�[0m2023-04-15 05:56:56 V/Net 289*: [AuthControl/acquire] Acquiring auth method�[0m
�[96m2023-04-15 05:56:56 D/Net 289*: [AuthControl/acquire] Authorization responded: Error[net.mamoe.mirai.internal.network.auth.ProducerFailureException]@257612437�[0m
�[93m2023-04-15 05:56:56 W/Net 289*: Failed with auth method: Error[net.mamoe.mirai.internal.network.auth.ProducerFailureException]@257612437
net.mamoe.mirai.internal.network.auth.ProducerFailureException
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope.receiveOrNull(CoroutineOnDemandValueScope.kt:152)
	at net.mamoe.mirai.internal.network.auth.AuthControl.acquireAuth(AuthControl.kt:98)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:219)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$login$1.invokeSuspend(SsoProcessor.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: net.mamoe.mirai.internal.network.auth.IllegalProducerStateException: ProducerReady
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer.emit(CoroutineOnDemandValueScope.kt:76)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1$sessionImpl$1.authByPassword-vaT0TR8(AuthControl.kt:46)
	at net.mamoe.mirai.internal.network.auth.DefaultBotAuthorizationFactoryImpl$byPassword$1.authorize(DefaultBotAuthorizationFactoryImpl.kt:37)
	at net.mamoe.mirai.internal.network.auth.BotAuthorizationWithSecretsProtection.authorize(BotAuthSession.kt:47)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invokeSuspend(AuthControl.kt:77)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer$1.invokeSuspend(CoroutineOnDemandValueScope.kt:50)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	... 5 more
�[0m
�[93m2023-04-15 05:56:56 W/Net 289*: Exception in resumeConnection.
net.mamoe.mirai.internal.network.auth.ProducerFailureException
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope.receiveOrNull(CoroutineOnDemandValueScope.kt:152)
	at net.mamoe.mirai.internal.network.auth.AuthControl.acquireAuth(AuthControl.kt:98)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:219)
	at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$login$1.invokeSuspend(SsoProcessor.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
	at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: net.mamoe.mirai.internal.network.auth.IllegalProducerStateException: ProducerReady
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer.emit(CoroutineOnDemandValueScope.kt:76)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1$sessionImpl$1.authByPassword-vaT0TR8(AuthControl.kt:46)
	at net.mamoe.mirai.internal.network.auth.DefaultBotAuthorizationFactoryImpl$byPassword$1.authorize(DefaultBotAuthorizationFactoryImpl.kt:37)
	at net.mamoe.mirai.internal.network.auth.BotAuthorizationWithSecretsProtection.authorize(BotAuthSession.kt:47)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invokeSuspend(AuthControl.kt:77)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.AuthControl$userDecisions$1.invoke(AuthControl.kt)
	at net.mamoe.mirai.internal.network.auth.CoroutineOnDemandValueScope$Producer$1.invokeSuspend(CoroutineOnDemandValueScope.kt:50)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	... 5 more
�[0m
�[93m2023-04-15 05:56:56 W/Net 289*: Network selector received exception, closing bot. (net.mamoe.mirai.internal.network.auth.ProducerFailureException)�[0m

补充信息

No response

@cssxsh
Copy link
Contributor

cssxsh commented Apr 15, 2023

已有相似 issue
#2623

@Him188 Him188 closed this as not planned Won't fix, can't repro, duplicate, stale Apr 15, 2023
@Him188 Him188 added the z:duplicate 状态: 重复 label Apr 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
z:duplicate 状态: 重复
Projects
None yet
Development

No branches or pull requests

3 participants