[+] Add support for geki cm and fix chusan cm implementation (#175)

This commit is contained in:
alexay7 2025-09-30 07:47:31 +02:00 committed by GitHub
parent b0a49d6626
commit 4971f2be78
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 1351 additions and 3 deletions

View File

@ -35,7 +35,7 @@ class ChusanController(
val chusan: Chusan
): MeowApi({ api, resp ->
if (resp is String) resp
else (if ("CM" in api) cmMapper else mapper).write(resp)
else (if ("CM" in api || api == "GetUserItemApi" ) cmMapper else mapper).write(resp)
}) {
val log = LoggerFactory.getLogger(ChusanController::class.java)

View File

@ -54,10 +54,31 @@ fun ChusanController.cmApiInit() {
db.userGacha.save(it)
}
//Set the hasCompleted to true
val printState = db.userCardPrintState.findByUserAndGachaIdAndHasCompleted(u, gachaId, false)
if (printState.isEmpty()) return@api null
printState.forEach { it.hasCompleted = true }
db.userCardPrintState.saveAll(printState)
// Append the order ID to the response with the key "orderId"
val fullPrintState = printState.map {
mapOf(
"orderId" to it.id,
"hasCompleted" to it.hasCompleted,
"limitDate" to it.limitDate.toString(),
"placeId" to it.placeId,
"cardId" to it.cardId,
"gachaId" to it.gachaId,
"userId" to uid
)
}
mapOf(
"returnCode" to 1,
"apiName" to "CMUpsertUserGachaApi",
"userCardPrintStateList" to db.userCardPrintState.findByUserAndGachaIdAndHasCompleted(u, gachaId, false)
"userCardPrintStateList" to fullPrintState
)
}

View File

@ -3,6 +3,10 @@ package icu.samnyan.aqua.sega.chusan.model.userdata
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import icu.samnyan.aqua.net.games.BaseEntity
import icu.samnyan.aqua.net.games.IUserData
@ -10,8 +14,22 @@ import icu.samnyan.aqua.sega.chusan.model.request.UserEmoney
import icu.samnyan.aqua.sega.general.model.Card
import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer
import jakarta.persistence.*
import kotlinx.io.IOException
import lombok.NoArgsConstructor
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
class FlexibleDateTimeDeserializer : JsonDeserializer<LocalDateTime?>() {
@Throws(IOException::class)
public override fun deserialize(p: JsonParser, ctxt: DeserializationContext?): LocalDateTime {
return LocalDateTime.parse(p.getText(), FORMATTER)
}
companion object {
// Card Maker needs the date ending with ".0" and chunithm sends the dates without it so we need a flexible parser
private val FORMATTER: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.S]")
}
}
@Entity(name = "ChusanUserData")
@Table(name = "chusan_user_data")
@ -50,12 +68,14 @@ class Chu3UserData : BaseEntity(), IUserData {
var totalExpertHighScore: Long = 0
var totalMasterHighScore: Long = 0
var totalUltimaHighScore: Long = 0
@JsonDeserialize(using = FlexibleDateTimeDeserializer::class)
var eventWatchedDate: LocalDateTime = LocalDateTime.now()
var friendCount = 0
var firstGameId: String = ""
var firstRomVersion: String = ""
var firstDataVersion: String = ""
@JsonDeserialize(using = FlexibleDateTimeDeserializer::class)
override var firstPlayDate: LocalDateTime = LocalDateTime.now()
var lastGameId: String = ""
@ -65,6 +85,7 @@ class Chu3UserData : BaseEntity(), IUserData {
@JsonIgnore
var lastLoginDate: LocalDateTime = LocalDateTime.now()
@JsonDeserialize(using = FlexibleDateTimeDeserializer::class)
override var lastPlayDate: LocalDateTime = LocalDateTime.now()
var lastPlaceId = 0
var lastPlaceName: String = ""

View File

@ -1,5 +1,6 @@
package icu.samnyan.aqua.sega.chusan.model.userdata
import com.fasterxml.jackson.annotation.JsonIgnore
import jakarta.persistence.Entity
import jakarta.persistence.Table
import java.time.LocalDateTime
@ -8,6 +9,8 @@ import java.time.LocalDateTime
@Table(name = "chusan_user_print_state")
class UserCardPrintState(
var hasCompleted: Boolean = false,
@JsonIgnore
var limitDate: LocalDateTime = LocalDateTime.now(),
var placeId: Int = 0,
var cardId: Int = 0,

View File

@ -9,6 +9,7 @@ fun OngekiController.ongekiInit() {
fun <T> List<T>.staticLst(key: String) = mapOf("length" to size, key to this)
initUser()
cmApiInit()
initUpsertAll()
// Has type, but type is always 1

View File

@ -0,0 +1,345 @@
package icu.samnyan.aqua.sega.ongeki
import ext.asDateTime
import ext.empty
import ext.int
import ext.invoke
import ext.long
import ext.mapApply
import ext.minus
import ext.parsing
import icu.samnyan.aqua.sega.ongeki.model.*
import java.time.LocalDateTime
fun OngekiController.cmApiInit() {
"CMGetUserData" {
val user = db.data.findByCard_ExtId(uid)() ?: (400 - "User not found")
mapOf("userId" to uid, "userData" to user)
}
"PrinterLogin" { mapOf("returnCode" to 1) }
"PrinterLogout" { mapOf("returnCode" to 1) }
"CMGetUserCard".unpaged("userCardList"){
db.card.findByUser_Card_ExtId(uid).map { it.apply { printCount = 99 } }
}
"CMGetUserCharacter".unpaged("userCharacterList") { db.character.findByUser_Card_ExtId(uid)}
"CMGetUserItem" {
val kind = (parsing { data["nextIndex"]!!.long } / 10000000000L).toInt()
var dat = db.item.findByUser_Card_ExtIdAndItemKind(uid, kind)
// Check if user have infinite kaika
if (kind == OgkItemType.KaikaItem.ordinal) {
val u = db.data.findByCard_ExtId(uid)()
u?.card?.aquaUser?.gameOptions?.let {
if (it.ongekiInfiniteKaika) {
dat = listOf(UserItem().apply {
user = u
itemKind = OgkItemType.KaikaItem.ordinal
itemId = 1
stock = 999
})
}
}
}
mapOf("userId" to uid, "length" to dat.size, "nextIndex" to -1, "itemKind" to kind, "userItemList" to dat)
}
"GetGameGacha" {
gdb.gacha.findAll().let {
mapOf("length" to it.size, "gameGachaList" to it, "registIdList" to emptyList<Any>())
}
}
"GetGameGachaCardById" {
val gachaId = parsing { data["gachaId"]!!.long }
gdb.gachaCard.findAllByGachaId(gachaId).let {
mapOf("gachaId" to gachaId, "length" to it.size, "isPickup" to false, "gameGachaCardList" to it,
"emissionList" to empty, "afterCalcList" to empty
)
}
}
"GetUserGacha" {
db.gacha.findByUser_Card_ExtId(uid).let{
mapOf("userId" to uid, "length" to it.size, "nextIndex" to 0, "userGachaList" to it)
}
}
"RollGacha" {
val (gachaId, tmpTimes) = parsing { data["gachaId"]!!.long to data["times"]!!.int }
var times = tmpTimes
val user = db.data.findByCard_ExtId(uid)() ?: (400 - "User not found")
val foundGacha = gdb.gacha.findById(gachaId)() ?: (404 - "Gacha not found")
val foundUserGacha = db.gacha.findByUserAndGachaId(user, gachaId)
// Official gacha percentages: R 76% SR 21% SSR 3%
val probabilities = listOf(76, 21, 3)
var rarityResults: List<Int> = emptyList()
// If this is the first x5 pull or any x11 pull, an SR is guaranteed
if(foundUserGacha != null && ((times == 5 && foundUserGacha.fiveGachaCnt==0) || times==11)){
rarityResults = listOf(3)
times -= 1
}
rarityResults = rarityResults + List(times) {
val rand = (1..100).random()
when {
rand <= probabilities[0] -> 2
rand <= probabilities[0] + probabilities[1] -> 3
else -> 4
}
}
val pulledCards = if(foundGacha.kind==0 || foundGacha.kind==3) {
// If it is the free or the permanent gacha, include cards from the gacha itself
gdb.gachaCard.findAllByGachaId(gachaId).groupBy { it.rarity }
} else {
// If it is a normal gacha, include all cards from the permanent gacha
gdb.gachaCard.findAllByGachaIdAndPermanent(gachaId).groupBy { it.rarity }
}
val finalPulls = rarityResults.map { rarity -> pulledCards[rarity]?.random()}
mapOf("length" to finalPulls.size, "gameGachaCardList" to finalPulls)
}
"CMUpsertUserGacha" api@ {
val all: OngekiCMUpsertUserGacha = mapper.convert(data["cmUpsertUserGacha"]!!)
val gacha = parsing { data["gachaId"]!!.long }
val pullCount = parsing { data["gachaCnt"]!!.int }
val earnedSelectPoints = parsing { data["selectPoint"]!!.int }
// User data
val oldUser = db.data.findByCard_ExtId(uid)()
val u: UserData = all.userData?.get(0)?.apply {
id = oldUser?.id ?: 0
card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found")
// Set eventWatchedDate with lastPlayDate, because client doesn't update it
cmEventWatchedDate = oldUser?.lastPlayDate ?: ""
db.data.save(this)
} ?: oldUser ?: return@api null
db.gacha.findByUserAndGachaId(u, gacha)?.apply {
totalGachaCnt += pullCount
// If the user pulled a select gacha increase the stats
if (earnedSelectPoints > 0) {
selectPoint += earnedSelectPoints
ceilingGachaCnt += pullCount
}
// Stats related with the group of pulls the user makes
if (pullCount == 5) {
fiveGachaCnt += 1
}else if (pullCount == 11) {
elevenGachaCnt+=1
}
// Update the daily gacha
val parsedDailyGachaDate = dailyGachaDate.asDateTime()!!
if (
parsedDailyGachaDate.dayOfMonth != LocalDateTime.now().dayOfMonth ||
parsedDailyGachaDate.monthValue != LocalDateTime.now().monthValue ||
parsedDailyGachaDate.year != LocalDateTime.now().year
) {
dailyGachaCnt += pullCount
dailyGachaDate = LocalDateTime.now().toString()
}else{
dailyGachaCnt += pullCount
}
}?: UserGacha().apply {
user = u
gachaId = gacha
totalGachaCnt = pullCount
selectPoint = earnedSelectPoints
ceilingGachaCnt = if (earnedSelectPoints > 0) 1 else 0
fiveGachaCnt = if (pullCount == 5) 1 else 0
elevenGachaCnt = if (pullCount == 11) 1 else 0
dailyGachaCnt = pullCount
db.gacha.save(this)
}
all.run {
// Set users
listOfNotNull(
userCharacterList, userCardList, userItemList
).flatten().forEach { it.user = u }
// UserCharacterList
userCharacterList?.let { list ->
db.character.saveAll(list.distinctBy { it.characterId }.mapApply {
id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0
})
}
// UserCardList
userCardList?.let { list ->
db.card.saveAll(list.distinctBy { it.cardId }.mapApply {
id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0
})
}
// UserItemList
userItemList?.let { list ->
db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply {
id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0
})
}
}
null
}
"CMUpsertUserAll" api@{
val all: OngekiCMUpsertAll = mapper.convert(data["cmUpsertUserAll"]!!)
// User data
val oldUser = db.data.findByCard_ExtId(uid)()
val u: UserData = all.userData?.get(0)?.apply {
id = oldUser?.id ?: 0
card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found")
// Set eventWatchedDate with lastPlayDate, because client doesn't update it
cmEventWatchedDate = oldUser?.lastPlayDate ?: ""
db.data.save(this)
} ?: oldUser ?: return@api null
all.run {
// Set users
listOfNotNull(
userActivityList, userCharacterList, userCardList, userItemList
).flatten().forEach { it.user = u }
// UserActivityList
userActivityList?.let { list ->
db.activity.saveAll(list.distinctBy { it.activityId to it.kind }.mapApply {
id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)()?.id ?: 0
})
}
// UserCharacterList
userCharacterList?.let { list ->
db.character.saveAll(list.distinctBy { it.characterId }.mapApply {
id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0
})
}
// UserCardList
userCardList?.let { list ->
db.card.saveAll(list.distinctBy { it.cardId }.mapApply {
id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0
})
}
// UserItemList
userItemList?.let { list ->
db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply {
id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0
})
}
}
null
}
"CMUpsertUserSelectGacha" api@ {
val all: OngekiCMUpsertUserSelectGacha = mapper.convert(data["cmUpsertUserSelectGacha"]!!)
val selectLog:List<OngekiCMSelectGachaLog> = mapper.convert(data["selectGachaLogList"]!!)
// User data
val oldUser = db.data.findByCard_ExtId(uid)()
val u: UserData = all.userData?.get(0)?.apply {
id = oldUser?.id ?: 0
card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found")
// Set eventWatchedDate with lastPlayDate, because client doesn't update it
cmEventWatchedDate = oldUser?.lastPlayDate ?: ""
db.data.save(this)
} ?: oldUser ?: return@api null
if(selectLog.isNotEmpty()) {
val selectionInfo = selectLog.first()
db.gacha.findByUserAndGachaId(u, selectionInfo.gachaId)?.apply {
// Total reset of selectPoints
selectPoint = 0
// Set the flag for the selection gacha so that the user cant use it anymore
useSelectPoint = 1
} ?: UserGacha().apply {
// It should be impossible to reach this
user = u
gachaId = selectionInfo.gachaId
db.gacha.save(this)
}
}
all.run {
// Set users
listOfNotNull(
userCharacterList, userCardList
).flatten().forEach { it.user = u }
if (all.isNewCharacterList?.contains("1") ?: false) {
// UserCharacterList
userCharacterList?.let { list ->
db.character.saveAll(list.distinctBy { it.characterId }.mapApply {
id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0
})
}
}
if (all.isNewCardList?.contains("1") ?: false) {
// UserCardList
userCardList?.let { list ->
db.card.saveAll(list.distinctBy { it.cardId }.mapApply {
id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0
})
}
}
}
null
}
"CMUpsertUserPrintPlaylog" api@ {
// User payment logs, useless
null
}
"CMUpsertUserPrint" api@ {
// User print information, useless
null
}
"CMUpsertUserPrintlog" api@ {
// User print logs, useless
null
}
"CMGetUserGachaSupply" {
// Mock function, not sure of functionality
mapOf("supplyId" to 0, "length" to 0, "supplyCardList" to emptyList<Any>())
}
"GetGameTheater" {
// Mock function, not sure of functionality
mapOf("length" to 0, "gameTheaterList" to emptyList<Any>(), "registIdList" to emptyList<Any>())
}
}

View File

@ -151,6 +151,19 @@ interface OgkUserRegionsRepo: OngekiUserLinked<UserRegions> {
fun findByUserAndRegionId(user: UserData, regionId: Int): UserRegions?
}
interface OgkGameGachaCardRepo : JpaRepository<GameGachaCard, Long> {
fun findAllByGachaId(gachaId: Long): List<GameGachaCard>
@Query("SELECT g FROM OngekiGameGachaCard g WHERE g.gachaId = :gachaId OR g.gachaId = 1112")
fun findAllByGachaIdAndPermanent(gachaId: Long): List<GameGachaCard>
}
interface OgkGameGachaRepo : JpaRepository<GameGacha, Long>
interface OgkUserGachaRepo : OngekiUserLinked<UserGacha> {
fun findByUserAndGachaId(user: UserData, gachaId: Long): UserGacha?
}
// Re:Fresh
interface OgkUserEventMapRepo : OngekiUserLinked<UserEventMap>
interface OgkUserSkinRepo : OngekiUserLinked<UserSkin>
@ -195,6 +208,7 @@ class OngekiUserRepos(
val eventMap: OgkUserEventMapRepo,
val skin: OgkUserSkinRepo,
val regions: OgkUserRegionsRepo,
val gacha: OgkUserGachaRepo,
)
@Component
@ -207,6 +221,8 @@ class OngekiGameRepos(
val present: OgkGamePresentRepo,
val reward: OgkGameRewardRepo,
val skill: OgkGameSkillRepo,
val gachaCard: OgkGameGachaCardRepo,
val gacha:OgkGameGachaRepo
)
@Component

View File

@ -1,6 +1,7 @@
package icu.samnyan.aqua.sega.ongeki.model
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonProperty
import jakarta.persistence.*
@Entity(name = "OngekiGameCard")
@ -112,3 +113,41 @@ class GameSkill {
var category: String = ""
var info: String = ""
}
@Entity(name = "OngekiGameGachaCard")
@Table(name = "ongeki_game_gacha_card")
class GameGachaCard {
@Id
var cardId: Long = 0
var gachaId: Long = 0
var rarity: Int = 0
var weight: Int = 0
@JsonProperty("isPickup")
var isPickup: Boolean = false
@JsonProperty("isSelect")
var isSelect: Boolean = false
}
@Entity(name = "OngekiGameGacha")
@Table(name = "ongeki_game_gacha")
class GameGacha {
@Id
var gachaId: Long = 0
var gachaName: String = ""
var type: Int = 0
var kind: Int = 0
var maxSelectPoint: Int = 0
var ceilingCnt: Int = 0
var changeRateCnt1: Int = 0
var changeRateCnt2: Int = 0
var startDate: String = ""
var endDate: String = ""
var noticeStartDate: String = ""
var noticeEndDate: String = ""
var convertEndDate: String = ""
@JsonProperty("isCeiling")
var isCeiling: Boolean = false
}

View File

@ -0,0 +1,44 @@
package icu.samnyan.aqua.sega.ongeki.model
class OngekiCMUpsertUserGacha {
var userData: List<UserData>? = null
var userCharacterList: List<UserCharacter>? = null
var userCardList: List<UserCard>? = null
var gameGachaCardList: List<GameGachaCard>? = null
var userItemList: List<UserItem>? = null
// These are strings with as many 1s as new elements are present
var isNewCharacterList: String? = null
var isNewCardList: String? = null
var isNewItemList: String? = null
}
class OngekiCMUpsertAll {
var userData: List<UserData>? = null
var userActivityList: List<UserActivity>? = null
var userCharacterList: List<UserCharacter>? = null
var userCardList: List<UserCard>? = null
var userItemList: List<UserItem>? = null
// These are strings with as many 1s as new elements are given
var isNewCharacterList: String? = null
var isNewCardList: String? = null
var isNewItemList: String? = null
}
class OngekiCMUpsertUserSelectGacha {
var userData: List<UserData>? = null
var userCharacterList: List<UserCharacter>? = null
var userCardList: List<UserCard>? = null
// These are strings with as many 1s as new elements are given
var isNewCharacterList: String? = null
var isNewCardList: String? = null
}
class OngekiCMSelectGachaLog {
var gachaId: Long = 0
var useSelectPoint: Int = 0
var convertType: Int = 0
var convertItem: Int = 0
}

View File

@ -8,6 +8,7 @@ import icu.samnyan.aqua.sega.general.model.Card
import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer
import jakarta.persistence.*
import java.time.LocalDate
import java.time.LocalDateTime
@MappedSuperclass
class OngekiUserEntity : BaseEntity(), IUserEntity<UserData> {
@ -517,10 +518,27 @@ class UserSkin : OngekiUserEntity() {
@Entity(name = "OngekiUserRegions")
@Table(
name = "ongeki_user_regions",
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "regionId"])]
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "region_id"])]
)
class UserRegions : OngekiUserEntity() {
var regionId = 0
var playCount = 1
var created: String = LocalDate.now().toString()
}
@Entity(name="OngekiUserGacha")
@Table(
name = "ongeki_user_gacha",
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "gacha_id"])]
)
class UserGacha : OngekiUserEntity() {
var gachaId:Long = 0
var totalGachaCnt = 0
var ceilingGachaCnt = 0
var selectPoint = 0
var useSelectPoint = 0
var dailyGachaCnt = 0
var fiveGachaCnt = 0
var elevenGachaCnt = 0
var dailyGachaDate: String = LocalDateTime.now().toString()
}

View File

@ -0,0 +1,840 @@
CREATE TABLE ongeki_game_gacha
(
gacha_id BIGINT AUTO_INCREMENT NOT NULL,
gacha_name VARCHAR(255) NOT NULL,
type INT NOT NULL,
kind INT NOT NULL,
is_ceiling BOOLEAN NOT NULL,
max_select_point INT NOT NULL,
ceiling_cnt INT NOT NULL,
change_rate_cnt1 INT NOT NULL,
change_rate_cnt2 INT NOT NULL,
start_date DATETIME NOT NULL,
end_date DATETIME NOT NULL,
notice_start_date DATETIME NOT NULL,
notice_end_date DATETIME NOT NULL,
convert_end_date DATETIME NOT NULL,
CONSTRAINT pk_ongk_gacha PRIMARY KEY (gacha_id)
);
CREATE TABLE ongeki_game_gacha_card
(
card_id BIGINT AUTO_INCREMENT NOT NULL,
gacha_id BIGINT NOT NULL,
rarity INT NOT NULL,
weight INT NOT NULL,
is_pickup BOOLEAN NOT NULL,
is_select BOOLEAN NOT NULL,
CONSTRAINT pk_ongk_gacha_card PRIMARY KEY (card_id, gacha_id)
);
ALTER TABLE ongeki_game_gacha_card
ADD CONSTRAINT FK_ONGEKI_GAME_GACHA_CARD_ON_GACHA FOREIGN KEY (gacha_id) REFERENCES ongeki_game_gacha (gacha_id );
CREATE TABLE ongeki_user_gacha
(
id BIGINT AUTO_INCREMENT NOT NULL,
user_id BIGINT NOT NULL,
gacha_id BIGINT NOT NULL,
total_gacha_cnt INT NOT NULL,
ceiling_gacha_cnt INT NOT NULL,
select_point INT NOT NULL,
use_select_point INT NOT NULL,
daily_gacha_cnt INT NOT NULL,
five_gacha_cnt INT NOT NULL,
eleven_gacha_cnt INT NOT NULL,
daily_gacha_date DATETIME NOT NULL,
CONSTRAINT pk_ongk_user_gacha PRIMARY KEY (id)
);
ALTER TABLE ongeki_user_gacha
ADD CONSTRAINT FK_ONGEKI_USER_GACHA_ON_USER FOREIGN KEY (user_id) REFERENCES ongeki_user_data (id);
ALTER TABLE ongeki_user_gacha
ADD CONSTRAINT FK_ONGEKI_USER_GACHA_ON_GACHA FOREIGN KEY (gacha_id) REFERENCES ongeki_game_gacha (gacha_id);
ALTER TABLE ongeki_user_gacha
ADD CONSTRAINT unq_ongk_user_gacha UNIQUE (user_id, gacha_id);
INSERT INTO ongeki_game_gacha (gacha_id, gacha_name, `type`, kind, is_ceiling, max_select_point, ceiling_cnt, change_rate_cnt1, change_rate_cnt2, start_date, end_date, notice_start_date, notice_end_date, convert_end_date)
VALUES
(1011, '無料ガチャ', 0, 3, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1012, '無料ガチャSR確定', 0, 3, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1112, 'レギュラーガチャ', 0, 0, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1123, 'AQUA属性オンリーガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1128, 'bitter chocolate kiss ガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1135, 'オンゲキ bright 大感謝祭ガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1137, 'テアトル展開!プロジェクト奏坂ドールズリミテッドガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1138, 'WONDER SHOOTER EASTER ガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1139, 'ラスボス登場!?悪の侵略者ガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1140, 'カラフルアンブレラガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1141, 'It''s Showtimeワンダフルサーカスガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1143, 'マーチングポケッツ ピックアップガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1144, 'bitter flavor ピックアップガチャ', 0, 4, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1145, '7EVENDAYS⇔HOLIDAYS ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1146, '⊿TRiEDGE ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1147, 'R.B.P. ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1148, '皇城 セツナ ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1149, 'ASTERISM ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1151, 'スラッシュスキル ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1152, '高瀬 梨緒オンリーガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1154, 'トラストスキル ピックアップガチャ', 0, 1, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1156, 'bright memory振り返りガチャ', 0, 2, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1159, 'オンゲキ&オンゲキ PLUS ピックアップガチャ', 0, 2, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1160, 'SUMMER SUMMER PLUS ピックアップガチャ', 0, 2, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1161, 'R.E.D. & R.E.D. PLUS ピックアップガチャ', 0, 2, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1162, 'bright & bright MEMORY ピックアップガチャ', 0, 2, 0, 0, 0, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000'),
(1167, '6周年記念!! 6rd Anniversaryセレクトガチャ', 0, 2, 1, 11, 11, 0, 0, '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2020-01-01 00:00:00.000', '2999-01-01 00:00:00.000', '2999-01-01 00:00:00.000');
INSERT INTO ongeki_game_gacha_card (card_id, gacha_id,rarity,weight,is_pickup,is_select)
VALUES
(100003, 1112, 2, 100, 0, 0),
(100003, 1149, 2, 100, 0, 0),
(100004, 1112, 2, 100, 0, 0),
(100004, 1149, 2, 100, 0, 0),
(100006, 1112, 3, 100, 0, 0),
(100006, 1159, 3, 100, 0, 0),
(100007, 1112, 3, 100, 0, 0),
(100007, 1159, 3, 100, 0, 0),
(100008, 1112, 4, 100, 0, 0),
(100008, 1159, 4, 100, 0, 0),
(100008, 1167, 4, 100, 0, 1),
(100012, 1112, 2, 100, 0, 0),
(100012, 1149, 2, 100, 0, 0),
(100013, 1112, 2, 100, 0, 0),
(100013, 1149, 2, 100, 0, 0),
(100015, 1112, 3, 100, 0, 0),
(100015, 1159, 3, 100, 0, 0),
(100016, 1112, 3, 100, 0, 0),
(100016, 1159, 3, 100, 0, 0),
(100017, 1112, 4, 100, 0, 0),
(100017, 1159, 4, 100, 0, 0),
(100017, 1167, 4, 100, 0, 1),
(100021, 1112, 2, 100, 0, 0),
(100021, 1149, 2, 100, 0, 0),
(100022, 1112, 2, 100, 0, 0),
(100022, 1149, 2, 100, 0, 0),
(100024, 1112, 3, 100, 0, 0),
(100024, 1159, 3, 100, 0, 0),
(100025, 1112, 3, 100, 0, 0),
(100025, 1159, 3, 100, 0, 0),
(100026, 1112, 4, 100, 0, 0),
(100026, 1159, 4, 100, 0, 0),
(100026, 1167, 4, 100, 0, 1),
(100030, 1112, 2, 100, 0, 0),
(100030, 1146, 2, 100, 0, 0),
(100030, 1152, 2, 100, 1, 0),
(100033, 1152, 3, 100, 1, 0),
(100033, 1159, 3, 100, 0, 0),
(100034, 1112, 4, 100, 0, 0),
(100034, 1152, 4, 100, 1, 0),
(100034, 1159, 4, 100, 0, 0),
(100034, 1167, 4, 100, 0, 1),
(100037, 1112, 2, 100, 0, 0),
(100037, 1146, 2, 100, 0, 0),
(100040, 1112, 3, 100, 0, 0),
(100040, 1159, 3, 100, 0, 0),
(100041, 1112, 4, 100, 0, 0),
(100041, 1159, 4, 100, 0, 0),
(100041, 1167, 4, 100, 0, 1),
(100044, 1112, 2, 100, 0, 0),
(100044, 1146, 2, 100, 0, 0),
(100047, 1112, 3, 100, 0, 0),
(100047, 1159, 3, 100, 0, 0),
(100048, 1112, 4, 100, 0, 0),
(100048, 1159, 4, 100, 0, 0),
(100048, 1167, 4, 100, 0, 1),
(100051, 1112, 2, 100, 0, 0),
(100051, 1144, 2, 100, 0, 0),
(100053, 1112, 3, 100, 0, 0),
(100053, 1144, 3, 100, 0, 0),
(100053, 1159, 3, 100, 0, 0),
(100054, 1112, 4, 100, 0, 0),
(100054, 1144, 4, 100, 0, 0),
(100054, 1159, 4, 100, 0, 0),
(100054, 1167, 4, 100, 0, 1),
(100057, 1112, 2, 100, 0, 0),
(100057, 1144, 2, 100, 0, 0),
(100059, 1112, 3, 100, 0, 0),
(100059, 1144, 3, 100, 0, 0),
(100059, 1159, 3, 100, 0, 0),
(100060, 1112, 4, 100, 0, 0),
(100060, 1144, 4, 100, 0, 0),
(100060, 1159, 4, 100, 0, 0),
(100060, 1167, 4, 100, 0, 1),
(100063, 1112, 2, 100, 0, 0),
(100063, 1147, 2, 100, 0, 0),
(100065, 1112, 3, 100, 0, 0),
(100065, 1147, 3, 100, 0, 0),
(100065, 1159, 3, 100, 0, 0),
(100066, 1112, 4, 100, 0, 0),
(100066, 1147, 4, 100, 0, 0),
(100066, 1159, 4, 100, 0, 0),
(100066, 1167, 4, 100, 0, 1),
(100069, 1112, 2, 100, 0, 0),
(100069, 1145, 2, 100, 0, 0),
(100071, 1112, 3, 100, 0, 0),
(100071, 1145, 3, 100, 0, 0),
(100071, 1159, 3, 100, 0, 0),
(100072, 1112, 4, 100, 0, 0),
(100072, 1145, 4, 100, 0, 0),
(100072, 1159, 4, 100, 0, 0),
(100072, 1167, 4, 100, 0, 1),
(100075, 1112, 2, 100, 0, 0),
(100075, 1145, 2, 100, 0, 0),
(100077, 1112, 3, 100, 0, 0),
(100077, 1145, 3, 100, 0, 0),
(100077, 1159, 3, 100, 0, 0),
(100078, 1112, 4, 100, 0, 0),
(100078, 1145, 4, 100, 0, 0),
(100078, 1159, 4, 100, 0, 0),
(100078, 1167, 4, 100, 0, 1),
(100081, 1112, 2, 100, 0, 0),
(100081, 1147, 2, 100, 0, 0),
(100083, 1112, 3, 100, 0, 0),
(100083, 1147, 3, 100, 0, 0),
(100083, 1159, 3, 100, 0, 0),
(100084, 1112, 4, 100, 0, 0),
(100084, 1147, 4, 100, 0, 0),
(100084, 1159, 4, 100, 0, 0),
(100084, 1167, 4, 100, 0, 1),
(100087, 1112, 2, 100, 0, 0),
(100087, 1147, 2, 100, 0, 0),
(100089, 1112, 3, 100, 0, 0),
(100089, 1147, 3, 100, 0, 0),
(100089, 1159, 3, 100, 0, 0),
(100090, 1112, 4, 100, 0, 0),
(100090, 1147, 4, 100, 0, 0),
(100090, 1159, 4, 100, 0, 0),
(100090, 1167, 4, 100, 0, 1),
(100173, 1112, 2, 100, 0, 0),
(100173, 1149, 2, 100, 0, 0),
(100174, 1112, 2, 100, 0, 0),
(100174, 1149, 2, 100, 0, 0),
(100175, 1112, 2, 100, 0, 0),
(100175, 1149, 2, 100, 0, 0),
(100176, 1112, 2, 100, 0, 0),
(100176, 1146, 2, 100, 0, 0),
(100176, 1152, 2, 100, 1, 0),
(100177, 1112, 2, 100, 0, 0),
(100177, 1146, 2, 100, 0, 0),
(100178, 1112, 2, 100, 0, 0),
(100178, 1146, 2, 100, 0, 0),
(100179, 1112, 2, 100, 0, 0),
(100179, 1144, 2, 100, 0, 0),
(100180, 1112, 2, 100, 0, 0),
(100180, 1144, 2, 100, 0, 0),
(100181, 1112, 2, 100, 0, 0),
(100181, 1147, 2, 100, 0, 0),
(100182, 1112, 2, 100, 0, 0),
(100182, 1145, 2, 100, 0, 0),
(100183, 1112, 2, 100, 0, 0),
(100183, 1145, 2, 100, 0, 0),
(100184, 1112, 2, 100, 0, 0),
(100184, 1147, 2, 100, 0, 0),
(100185, 1112, 2, 100, 0, 0),
(100185, 1147, 2, 100, 0, 0),
(100209, 1011, 2, 100, 0, 0),
(100223, 1112, 2, 100, 0, 0),
(100223, 1149, 2, 100, 0, 0),
(100224, 1112, 2, 100, 0, 0),
(100224, 1149, 2, 100, 0, 0),
(100225, 1112, 2, 100, 0, 0),
(100225, 1149, 2, 100, 0, 0),
(100226, 1112, 2, 100, 0, 0),
(100226, 1146, 2, 100, 0, 0),
(100226, 1152, 2, 100, 1, 0),
(100227, 1112, 2, 100, 0, 0),
(100227, 1146, 2, 100, 0, 0),
(100228, 1112, 2, 100, 0, 0),
(100228, 1146, 2, 100, 0, 0),
(100229, 1112, 2, 100, 0, 0),
(100229, 1144, 2, 100, 0, 0),
(100230, 1112, 2, 100, 0, 0),
(100230, 1144, 2, 100, 0, 0),
(100231, 1112, 2, 100, 0, 0),
(100231, 1147, 2, 100, 0, 0),
(100232, 1112, 2, 100, 0, 0),
(100232, 1145, 2, 100, 0, 0),
(100233, 1112, 2, 100, 0, 0),
(100233, 1145, 2, 100, 0, 0),
(100234, 1112, 2, 100, 0, 0),
(100234, 1147, 2, 100, 0, 0),
(100235, 1112, 2, 100, 0, 0),
(100235, 1147, 2, 100, 0, 0),
(100236, 1011, 3, 100, 0, 0),
(100236, 1012, 3, 100, 0, 0),
(100237, 1011, 3, 100, 0, 0),
(100237, 1012, 3, 100, 0, 0),
(100238, 1011, 3, 100, 0, 0),
(100238, 1012, 3, 100, 0, 0),
(100239, 1011, 3, 100, 0, 0),
(100239, 1012, 3, 100, 0, 0),
(100240, 1011, 3, 100, 0, 0),
(100240, 1012, 3, 100, 0, 0),
(100241, 1011, 3, 100, 0, 0),
(100241, 1012, 3, 100, 0, 0),
(100242, 1011, 3, 100, 0, 0),
(100242, 1012, 3, 100, 0, 0),
(100243, 1011, 3, 100, 0, 0),
(100243, 1012, 3, 100, 0, 0),
(100244, 1011, 3, 100, 0, 0),
(100244, 1012, 3, 100, 0, 0),
(100245, 1011, 3, 100, 0, 0),
(100245, 1012, 3, 100, 0, 0),
(100246, 1011, 3, 100, 0, 0),
(100246, 1012, 3, 100, 0, 0),
(100247, 1011, 3, 100, 0, 0),
(100247, 1012, 3, 100, 0, 0),
(100248, 1011, 3, 100, 0, 0),
(100248, 1012, 3, 100, 0, 0),
(100249, 1112, 3, 100, 0, 0),
(100249, 1159, 3, 100, 0, 0),
(100250, 1112, 3, 100, 0, 0),
(100250, 1159, 3, 100, 0, 0),
(100251, 1112, 3, 100, 0, 0),
(100251, 1159, 3, 100, 0, 0),
(100252, 1011, 3, 100, 0, 0),
(100252, 1012, 3, 100, 0, 0),
(100253, 1011, 3, 100, 0, 0),
(100253, 1012, 3, 100, 0, 0),
(100254, 1011, 3, 100, 0, 0),
(100254, 1012, 3, 100, 0, 0),
(100255, 1011, 3, 100, 0, 0),
(100255, 1012, 3, 100, 0, 0),
(100256, 1011, 3, 100, 0, 0),
(100256, 1012, 3, 100, 0, 0),
(100257, 1011, 3, 100, 0, 0),
(100257, 1012, 3, 100, 0, 0),
(100258, 1011, 3, 100, 0, 0),
(100258, 1012, 3, 100, 0, 0),
(100259, 1011, 3, 100, 0, 0),
(100259, 1012, 3, 100, 0, 0),
(100260, 1011, 3, 100, 0, 0),
(100260, 1012, 3, 100, 0, 0),
(100261, 1011, 3, 100, 0, 0),
(100261, 1012, 3, 100, 0, 0),
(100262, 1112, 3, 100, 0, 0),
(100262, 1159, 3, 100, 0, 0),
(100263, 1112, 3, 100, 0, 0),
(100263, 1159, 3, 100, 0, 0),
(100264, 1112, 3, 100, 0, 0),
(100264, 1159, 3, 100, 0, 0),
(100265, 1112, 3, 100, 0, 0),
(100265, 1152, 3, 100, 1, 0),
(100265, 1159, 3, 100, 0, 0),
(100266, 1112, 3, 100, 0, 0),
(100266, 1159, 3, 100, 0, 0),
(100267, 1112, 3, 100, 0, 0),
(100267, 1159, 3, 100, 0, 0),
(100268, 1112, 3, 100, 0, 0),
(100268, 1144, 3, 100, 0, 0),
(100268, 1159, 3, 100, 0, 0),
(100269, 1112, 3, 100, 0, 0),
(100269, 1144, 3, 100, 0, 0),
(100269, 1159, 3, 100, 0, 0),
(100270, 1112, 3, 100, 0, 0),
(100270, 1147, 3, 100, 0, 0),
(100270, 1159, 3, 100, 0, 0),
(100271, 1112, 3, 100, 0, 0),
(100271, 1145, 3, 100, 0, 0),
(100271, 1159, 3, 100, 0, 0),
(100272, 1112, 3, 100, 0, 0),
(100272, 1145, 3, 100, 0, 0),
(100272, 1159, 3, 100, 0, 0),
(100273, 1112, 3, 100, 0, 0),
(100273, 1147, 3, 100, 0, 0),
(100273, 1159, 3, 100, 0, 0),
(100274, 1112, 3, 100, 0, 0),
(100274, 1147, 3, 100, 0, 0),
(100274, 1159, 3, 100, 0, 0),
(100275, 1112, 4, 100, 0, 0),
(100275, 1159, 4, 100, 0, 0),
(100275, 1167, 4, 100, 0, 1),
(100276, 1112, 4, 100, 0, 0),
(100276, 1159, 4, 100, 0, 0),
(100276, 1167, 4, 100, 0, 1),
(100277, 1112, 4, 100, 0, 0),
(100277, 1159, 4, 100, 0, 0),
(100277, 1167, 4, 100, 0, 1),
(100278, 1112, 4, 100, 0, 0),
(100278, 1152, 4, 100, 1, 0),
(100278, 1159, 4, 100, 0, 0),
(100278, 1167, 4, 100, 0, 1),
(100280, 1112, 4, 100, 0, 0),
(100280, 1159, 4, 100, 0, 0),
(100280, 1167, 4, 100, 0, 1),
(100282, 1112, 4, 100, 0, 0),
(100282, 1144, 4, 100, 0, 0),
(100282, 1159, 4, 100, 0, 0),
(100282, 1167, 4, 100, 0, 1),
(100284, 1112, 4, 100, 0, 0),
(100284, 1145, 4, 100, 0, 0),
(100284, 1159, 4, 100, 0, 0),
(100284, 1167, 4, 100, 0, 1),
(100285, 1112, 4, 100, 0, 0),
(100285, 1145, 4, 100, 0, 0),
(100285, 1159, 4, 100, 0, 0),
(100285, 1167, 4, 100, 0, 1),
(100286, 1112, 4, 100, 0, 0),
(100286, 1147, 4, 100, 0, 0),
(100286, 1159, 4, 100, 0, 0),
(100286, 1167, 4, 100, 0, 1),
(100336, 1011, 3, 100, 0, 0),
(100336, 1012, 3, 100, 0, 0),
(100337, 1011, 3, 100, 0, 0),
(100337, 1012, 3, 100, 0, 0),
(100338, 1011, 3, 100, 0, 0),
(100338, 1012, 3, 100, 0, 0),
(100339, 1112, 2, 100, 0, 0),
(100339, 1149, 2, 100, 0, 0),
(100340, 1112, 2, 100, 0, 0),
(100340, 1149, 2, 100, 0, 0),
(100341, 1112, 2, 100, 0, 0),
(100341, 1149, 2, 100, 0, 0),
(100342, 1112, 2, 100, 0, 0),
(100342, 1146, 2, 100, 0, 0),
(100342, 1152, 2, 100, 1, 0),
(100343, 1112, 2, 100, 0, 0),
(100343, 1146, 2, 100, 0, 0),
(100344, 1112, 2, 100, 0, 0),
(100344, 1146, 2, 100, 0, 0),
(100345, 1112, 2, 100, 0, 0),
(100345, 1144, 2, 100, 0, 0),
(100346, 1112, 2, 100, 0, 0),
(100346, 1144, 2, 100, 0, 0),
(100347, 1112, 2, 100, 0, 0),
(100347, 1147, 2, 100, 0, 0),
(100348, 1112, 2, 100, 0, 0),
(100348, 1145, 2, 100, 0, 0),
(100349, 1112, 2, 100, 0, 0),
(100349, 1145, 2, 100, 0, 0),
(100350, 1112, 2, 100, 0, 0),
(100350, 1147, 2, 100, 0, 0),
(100351, 1112, 2, 100, 0, 0),
(100351, 1147, 2, 100, 0, 0),
(100407, 1112, 4, 100, 0, 0),
(100407, 1143, 4, 100, 0, 0),
(100407, 1160, 4, 100, 0, 0),
(100407, 1167, 4, 100, 0, 1),
(100411, 1112, 2, 100, 0, 0),
(100411, 1146, 2, 100, 0, 0),
(100411, 1152, 2, 100, 1, 0),
(100412, 1112, 2, 100, 0, 0),
(100412, 1146, 2, 100, 0, 0),
(100413, 1112, 2, 100, 0, 0),
(100413, 1146, 2, 100, 0, 0),
(100414, 1112, 2, 100, 0, 0),
(100415, 1112, 2, 100, 0, 0),
(100416, 1112, 2, 100, 0, 0),
(100417, 1112, 2, 100, 0, 0),
(100418, 1112, 3, 100, 0, 0),
(100418, 1149, 3, 100, 0, 0),
(100418, 1160, 3, 100, 0, 0),
(100419, 1112, 3, 100, 0, 0),
(100419, 1160, 3, 100, 0, 0),
(100420, 1112, 3, 100, 0, 0),
(100420, 1144, 3, 100, 0, 0),
(100421, 1147, 3, 100, 0, 0),
(100421, 1160, 3, 100, 0, 0),
(100422, 1112, 3, 100, 0, 0),
(100422, 1144, 3, 100, 0, 0),
(100422, 1160, 3, 100, 0, 0),
(100423, 1112, 3, 100, 0, 0),
(100423, 1160, 3, 100, 0, 0),
(100424, 1112, 3, 100, 0, 0),
(100424, 1143, 3, 100, 0, 0),
(100424, 1160, 3, 100, 0, 0),
(100425, 1112, 3, 100, 0, 0),
(100425, 1160, 3, 100, 0, 0),
(100426, 1112, 3, 100, 0, 0),
(100426, 1147, 3, 100, 0, 0),
(100426, 1160, 3, 100, 0, 0),
(100427, 1112, 3, 100, 0, 0),
(100427, 1160, 3, 100, 0, 0),
(100428, 1112, 3, 100, 0, 0),
(100428, 1160, 3, 100, 0, 0),
(100429, 1112, 3, 100, 0, 0),
(100429, 1160, 3, 100, 0, 0),
(100430, 1112, 3, 100, 0, 0),
(100430, 1160, 3, 100, 0, 0),
(100431, 1112, 4, 100, 0, 0),
(100431, 1143, 4, 100, 0, 0),
(100431, 1160, 4, 100, 0, 0),
(100431, 1167, 4, 100, 0, 1),
(100432, 1112, 4, 100, 0, 0),
(100432, 1143, 4, 100, 0, 0),
(100432, 1160, 4, 100, 0, 0),
(100432, 1167, 4, 100, 0, 1),
(100433, 1112, 4, 100, 0, 0),
(100433, 1160, 4, 100, 0, 0),
(100433, 1167, 4, 100, 0, 1),
(100434, 1112, 4, 100, 0, 0),
(100434, 1144, 4, 100, 0, 0),
(100434, 1160, 4, 100, 0, 0),
(100434, 1167, 4, 100, 0, 1),
(100435, 1112, 4, 100, 0, 0),
(100435, 1123, 4, 100, 0, 0),
(100435, 1147, 4, 100, 0, 0),
(100435, 1154, 4, 100, 0, 0),
(100435, 1160, 4, 100, 0, 0),
(100435, 1167, 4, 100, 0, 1),
(100436, 1112, 4, 100, 0, 0),
(100436, 1160, 4, 100, 0, 0),
(100436, 1167, 4, 100, 0, 1),
(100437, 1112, 4, 100, 0, 0),
(100437, 1160, 4, 100, 0, 0),
(100437, 1167, 4, 100, 0, 1),
(100438, 1112, 4, 100, 0, 0),
(100438, 1147, 4, 100, 0, 0),
(100438, 1160, 4, 100, 0, 0),
(100438, 1167, 4, 100, 0, 1),
(100439, 1112, 4, 100, 0, 0),
(100439, 1146, 4, 100, 0, 0),
(100439, 1152, 4, 100, 1, 0),
(100439, 1160, 4, 100, 0, 0),
(100439, 1167, 4, 100, 0, 1),
(100440, 1011, 2, 100, 0, 0),
(100441, 1011, 2, 100, 0, 0),
(100445, 1112, 2, 100, 0, 0),
(100445, 1143, 2, 100, 0, 0),
(100447, 1112, 2, 100, 0, 0),
(100447, 1143, 2, 100, 0, 0),
(100449, 1112, 2, 100, 0, 0),
(100449, 1143, 2, 100, 0, 0),
(100454, 1011, 4, 100, 0, 0),
(100606, 1112, 3, 100, 0, 0),
(100607, 1112, 3, 100, 0, 0),
(100608, 1112, 3, 100, 0, 0),
(100608, 1143, 3, 100, 0, 0),
(100608, 1160, 3, 100, 0, 0),
(100609, 1112, 3, 100, 0, 0),
(100609, 1143, 3, 100, 0, 0),
(100609, 1160, 3, 100, 0, 0),
(100610, 1112, 3, 100, 0, 0),
(100610, 1143, 3, 100, 0, 0),
(100610, 1160, 3, 100, 0, 0),
(100634, 1011, 3, 100, 0, 0),
(100634, 1012, 3, 100, 0, 0),
(100636, 1011, 3, 100, 0, 0),
(100636, 1012, 3, 100, 0, 0),
(100637, 1011, 3, 100, 0, 0),
(100637, 1012, 3, 100, 0, 0),
(100638, 1011, 3, 100, 0, 0),
(100638, 1012, 3, 100, 0, 0),
(100639, 1011, 3, 100, 0, 0),
(100639, 1012, 3, 100, 0, 0),
(100640, 1011, 3, 100, 0, 0),
(100640, 1012, 3, 100, 0, 0),
(100641, 1011, 3, 100, 0, 0),
(100641, 1012, 3, 100, 0, 0),
(100642, 1011, 3, 100, 0, 0),
(100642, 1012, 3, 100, 0, 0),
(100643, 1011, 3, 100, 0, 0),
(100643, 1012, 3, 100, 0, 0),
(100644, 1011, 3, 100, 0, 0),
(100644, 1012, 3, 100, 0, 0),
(100645, 1011, 3, 100, 0, 0),
(100645, 1012, 3, 100, 0, 0),
(100646, 1011, 3, 100, 0, 0),
(100646, 1012, 3, 100, 0, 0),
(100647, 1112, 2, 100, 0, 0),
(100648, 1112, 2, 100, 0, 0),
(100649, 1112, 2, 100, 0, 0),
(100650, 1011, 2, 100, 0, 0),
(100651, 1011, 2, 100, 0, 0),
(100652, 1011, 2, 100, 0, 0),
(100653, 1112, 2, 100, 0, 0),
(100653, 1143, 2, 100, 0, 0),
(100654, 1112, 2, 100, 0, 0),
(100654, 1143, 2, 100, 0, 0),
(100655, 1112, 2, 100, 0, 0),
(100655, 1143, 2, 100, 0, 0),
(100662, 1112, 2, 100, 0, 0),
(100665, 1011, 3, 100, 0, 0),
(100665, 1012, 3, 100, 0, 0),
(100666, 1011, 3, 100, 0, 0),
(100666, 1012, 3, 100, 0, 0),
(100667, 1011, 3, 100, 0, 0),
(100667, 1012, 3, 100, 0, 0),
(100692, 1112, 2, 100, 0, 0),
(100692, 1149, 2, 100, 0, 0),
(100693, 1112, 2, 100, 0, 0),
(100693, 1149, 2, 100, 0, 0),
(100694, 1112, 2, 100, 0, 0),
(100694, 1149, 2, 100, 0, 0),
(100701, 1112, 2, 100, 0, 0),
(100701, 1146, 2, 100, 0, 0),
(100701, 1152, 2, 100, 1, 0),
(100702, 1011, 2, 100, 0, 0),
(100703, 1011, 2, 100, 0, 0),
(100711, 1112, 3, 100, 0, 0),
(100711, 1161, 3, 100, 0, 0),
(100712, 1112, 3, 100, 0, 0),
(100712, 1161, 3, 100, 0, 0),
(100725, 1112, 4, 100, 0, 0),
(100725, 1146, 4, 100, 0, 0),
(100725, 1161, 4, 100, 0, 0),
(100725, 1167, 4, 100, 0, 1),
(100726, 1112, 4, 100, 0, 0),
(100726, 1161, 4, 100, 0, 0),
(100726, 1167, 4, 100, 0, 1),
(100755, 1112, 2, 100, 0, 0),
(100756, 1112, 2, 100, 0, 0),
(100757, 1112, 3, 100, 0, 0),
(100757, 1160, 3, 100, 0, 0),
(100758, 1112, 3, 100, 0, 0),
(100758, 1160, 3, 100, 0, 0),
(100759, 1112, 3, 100, 0, 0),
(100759, 1160, 3, 100, 0, 0),
(100760, 1112, 4, 100, 0, 0),
(100760, 1149, 4, 100, 0, 0),
(100760, 1160, 4, 100, 0, 0),
(100760, 1167, 4, 100, 0, 1),
(100761, 1112, 4, 100, 0, 0),
(100761, 1160, 4, 100, 0, 0),
(100761, 1167, 4, 100, 0, 1),
(100762, 1112, 3, 100, 0, 0),
(100762, 1160, 3, 100, 0, 0),
(100763, 1112, 3, 100, 0, 0),
(100763, 1160, 3, 100, 0, 0),
(100764, 1112, 3, 100, 0, 0),
(100764, 1160, 3, 100, 0, 0),
(100765, 1112, 3, 100, 0, 0),
(100765, 1160, 3, 100, 0, 0),
(100766, 1112, 3, 100, 0, 0),
(100766, 1146, 3, 100, 0, 0),
(100766, 1160, 3, 100, 0, 0),
(100767, 1112, 4, 100, 0, 0),
(100767, 1160, 4, 100, 0, 0),
(100767, 1167, 4, 100, 0, 1),
(100768, 1112, 4, 100, 0, 0),
(100768, 1160, 4, 100, 0, 0),
(100768, 1167, 4, 100, 0, 1),
(100771, 1112, 2, 100, 0, 0),
(100772, 1011, 3, 100, 0, 0),
(100772, 1012, 3, 100, 0, 0),
(100777, 1112, 3, 100, 0, 0),
(100777, 1146, 3, 100, 0, 0),
(100777, 1152, 3, 100, 1, 0),
(100777, 1160, 3, 100, 0, 0),
(100778, 1112, 3, 100, 0, 0),
(100778, 1160, 3, 100, 0, 0),
(100779, 1112, 4, 100, 0, 0),
(100779, 1154, 4, 100, 0, 0),
(100779, 1160, 4, 100, 0, 0),
(100779, 1167, 4, 100, 0, 1),
(100780, 1112, 4, 100, 0, 0),
(100780, 1149, 4, 100, 0, 0),
(100780, 1160, 4, 100, 0, 0),
(100780, 1167, 4, 100, 0, 1),
(100783, 1112, 3, 100, 0, 0),
(100783, 1160, 3, 100, 0, 0),
(100784, 1112, 4, 100, 0, 0),
(100784, 1160, 4, 100, 0, 0),
(100784, 1167, 4, 100, 0, 1),
(100785, 1112, 3, 100, 0, 0),
(100785, 1149, 3, 100, 0, 0),
(100785, 1151, 3, 100, 0, 0),
(100785, 1161, 3, 100, 0, 0),
(100786, 1112, 3, 100, 0, 0),
(100786, 1149, 3, 100, 0, 0),
(100786, 1151, 3, 100, 0, 0),
(100786, 1161, 3, 100, 0, 0),
(100787, 1112, 4, 100, 0, 0),
(100787, 1151, 4, 100, 0, 0),
(100787, 1161, 4, 100, 0, 0),
(100787, 1167, 4, 100, 0, 1),
(100805, 1112, 3, 100, 0, 0),
(100805, 1160, 3, 100, 0, 0),
(100842, 1112, 3, 100, 0, 0),
(100980, 1011, 4, 100, 0, 0),
(100982, 1112, 4, 100, 0, 0),
(100982, 1161, 4, 100, 0, 0),
(100982, 1167, 4, 100, 0, 1),
(100983, 1112, 4, 100, 0, 0),
(100983, 1161, 4, 100, 0, 0),
(100983, 1167, 4, 100, 0, 1),
(100984, 1137, 4, 100, 1, 0),
(100984, 1146, 4, 100, 0, 0),
(100984, 1167, 4, 100, 0, 1),
(100985, 1112, 4, 100, 0, 0),
(100985, 1161, 4, 100, 0, 0),
(100985, 1167, 4, 100, 0, 1),
(100986, 1137, 4, 100, 1, 0),
(100986, 1167, 4, 100, 0, 1),
(100987, 1112, 4, 100, 0, 0),
(100987, 1149, 4, 100, 0, 0),
(100987, 1154, 4, 100, 0, 0),
(100987, 1161, 4, 100, 0, 0),
(100987, 1167, 4, 100, 0, 1),
(100988, 1112, 4, 100, 0, 0),
(100988, 1154, 4, 100, 0, 0),
(100988, 1161, 4, 100, 0, 0),
(100988, 1167, 4, 100, 0, 1),
(100989, 1112, 4, 100, 0, 0),
(100989, 1123, 4, 100, 0, 0),
(100989, 1146, 4, 100, 0, 0),
(100989, 1152, 4, 100, 1, 0),
(100989, 1161, 4, 100, 0, 0),
(100989, 1167, 4, 100, 0, 1),
(100996, 1112, 3, 100, 0, 0),
(100996, 1161, 3, 100, 0, 0),
(100997, 1137, 3, 100, 1, 0),
(100998, 1137, 3, 100, 1, 0),
(100999, 1112, 3, 100, 0, 0),
(100999, 1161, 3, 100, 0, 0),
(101000, 1112, 3, 100, 0, 0),
(101000, 1161, 3, 100, 0, 0),
(101001, 1137, 3, 100, 1, 0),
(101002, 1137, 3, 100, 1, 0),
(101002, 1146, 3, 100, 0, 0),
(101003, 1112, 3, 100, 0, 0),
(101003, 1161, 3, 100, 0, 0),
(101004, 1112, 3, 100, 0, 0),
(101004, 1161, 3, 100, 0, 0),
(101005, 1112, 3, 100, 0, 0),
(101005, 1149, 3, 100, 0, 0),
(101005, 1161, 3, 100, 0, 0),
(101020, 1112, 2, 100, 0, 0),
(101020, 1149, 2, 100, 0, 0),
(101021, 1112, 2, 100, 0, 0),
(101021, 1146, 2, 100, 0, 0),
(101021, 1152, 2, 100, 1, 0),
(101022, 1112, 2, 100, 0, 0),
(101023, 1112, 2, 100, 0, 0),
(101023, 1146, 2, 100, 0, 0),
(101024, 1112, 2, 100, 0, 0),
(101024, 1146, 2, 100, 0, 0),
(101025, 1112, 2, 100, 0, 0),
(101025, 1149, 2, 100, 0, 0),
(101026, 1112, 2, 100, 0, 0),
(101293, 1112, 4, 100, 0, 0),
(101293, 1123, 4, 100, 0, 0),
(101293, 1137, 4, 100, 1, 0),
(101293, 1154, 4, 100, 0, 0),
(101293, 1161, 4, 100, 0, 0),
(101293, 1167, 4, 100, 0, 1),
(101294, 1112, 4, 100, 0, 0),
(101294, 1161, 4, 100, 0, 0),
(101294, 1167, 4, 100, 0, 1),
(101295, 1112, 4, 100, 0, 0),
(101295, 1123, 4, 100, 0, 0),
(101295, 1149, 4, 100, 0, 0),
(101295, 1161, 4, 100, 0, 0),
(101295, 1167, 4, 100, 0, 1),
(101296, 1112, 4, 100, 0, 0),
(101296, 1149, 4, 100, 0, 0),
(101296, 1151, 4, 100, 0, 0),
(101296, 1154, 4, 100, 0, 0),
(101296, 1161, 4, 100, 0, 0),
(101296, 1167, 4, 100, 0, 1),
(101297, 1137, 4, 100, 1, 0),
(101297, 1167, 4, 100, 0, 1),
(101298, 1112, 3, 100, 0, 0),
(101298, 1146, 3, 100, 0, 0),
(101298, 1161, 3, 100, 0, 0),
(101299, 1112, 3, 100, 0, 0),
(101299, 1161, 3, 100, 0, 0),
(101300, 1112, 3, 100, 0, 0),
(101300, 1151, 3, 100, 0, 0),
(101300, 1161, 3, 100, 0, 0),
(101301, 1137, 3, 100, 1, 0),
(101301, 1146, 3, 100, 0, 0),
(101301, 1152, 3, 100, 1, 0),
(101315, 1146, 2, 100, 0, 0),
(101315, 1151, 2, 100, 0, 0),
(101316, 1151, 2, 100, 0, 0),
(101320, 1112, 4, 100, 0, 0),
(101320, 1146, 4, 100, 0, 0),
(101320, 1161, 4, 100, 0, 0),
(101320, 1167, 4, 100, 0, 1),
(101321, 1112, 3, 100, 0, 0),
(101321, 1161, 3, 100, 0, 0),
(101553, 1011, 4, 100, 0, 0),
(101566, 1112, 3, 100, 0, 0),
(101566, 1135, 3, 100, 1, 0),
(101566, 1148, 3, 100, 0, 0),
(101566, 1162, 3, 100, 0, 0),
(101567, 1112, 4, 100, 0, 0),
(101567, 1135, 4, 100, 1, 0),
(101567, 1148, 4, 100, 0, 0),
(101567, 1151, 4, 100, 0, 0),
(101567, 1162, 4, 100, 0, 0),
(101567, 1167, 4, 100, 0, 1),
(101589, 1011, 2, 100, 0, 0),
(101592, 1112, 4, 100, 0, 0),
(101592, 1135, 4, 100, 1, 0),
(101592, 1149, 4, 100, 0, 0),
(101592, 1154, 4, 100, 0, 0),
(101592, 1162, 4, 100, 0, 0),
(101592, 1167, 4, 100, 0, 1),
(101593, 1137, 4, 100, 1, 0),
(101593, 1167, 4, 100, 0, 1),
(101594, 1112, 4, 100, 0, 0),
(101594, 1123, 4, 100, 0, 0),
(101594, 1135, 4, 100, 1, 0),
(101594, 1154, 4, 100, 0, 0),
(101594, 1162, 4, 100, 0, 0),
(101594, 1167, 4, 100, 0, 1),
(101595, 1112, 4, 100, 0, 0),
(101595, 1123, 4, 100, 0, 0),
(101595, 1128, 4, 100, 1, 0),
(101595, 1135, 4, 100, 1, 0),
(101595, 1167, 4, 100, 0, 1),
(101596, 1112, 4, 100, 0, 0),
(101596, 1138, 4, 100, 1, 0),
(101596, 1146, 4, 100, 0, 0),
(101596, 1154, 4, 100, 0, 0),
(101596, 1156, 4, 100, 1, 0),
(101596, 1162, 4, 100, 0, 0),
(101596, 1167, 4, 100, 0, 1),
(101597, 1112, 4, 100, 0, 0),
(101597, 1139, 4, 100, 1, 0),
(101597, 1156, 4, 100, 1, 0),
(101597, 1162, 4, 100, 0, 0),
(101597, 1167, 4, 100, 0, 1),
(101598, 1137, 4, 100, 1, 0),
(101598, 1148, 4, 100, 0, 0),
(101599, 1112, 4, 100, 0, 0),
(101599, 1140, 4, 100, 1, 0),
(101599, 1156, 4, 100, 1, 0),
(101599, 1162, 4, 100, 0, 0),
(101599, 1167, 4, 100, 0, 1),
(101600, 1112, 4, 100, 0, 0),
(101600, 1141, 4, 100, 1, 0),
(101600, 1156, 4, 100, 1, 0),
(101600, 1162, 4, 100, 0, 0),
(101600, 1167, 4, 100, 0, 1),
(101601, 1137, 3, 100, 1, 0),
(101602, 1112, 3, 100, 0, 0),
(101602, 1135, 3, 100, 1, 0),
(101602, 1149, 3, 100, 0, 0),
(101602, 1162, 3, 100, 0, 0),
(101603, 1112, 3, 100, 0, 0),
(101603, 1128, 3, 100, 1, 0),
(101603, 1135, 3, 100, 1, 0),
(101603, 1146, 3, 100, 0, 0),
(101603, 1162, 3, 100, 0, 0),
(101604, 1112, 3, 100, 0, 0),
(101604, 1138, 3, 100, 1, 0),
(101604, 1149, 3, 100, 0, 0),
(101604, 1156, 3, 100, 1, 0),
(101604, 1162, 3, 100, 0, 0),
(101605, 1112, 3, 100, 0, 0),
(101605, 1139, 3, 100, 1, 0),
(101605, 1156, 3, 100, 1, 0),
(101605, 1162, 3, 100, 0, 0),
(101606, 1137, 3, 100, 1, 0),
(101606, 1167, 3, 100, 0, 1),
(101607, 1112, 3, 100, 0, 0),
(101607, 1140, 3, 100, 1, 0),
(101607, 1156, 3, 100, 1, 0),
(101607, 1162, 3, 100, 0, 0),
(101608, 1112, 3, 100, 0, 0),
(101608, 1141, 3, 100, 1, 0),
(101608, 1156, 3, 100, 1, 0),
(101608, 1162, 3, 100, 0, 0),
(101619, 1112, 2, 100, 0, 0),
(101619, 1135, 2, 100, 1, 0),
(101619, 1148, 2, 100, 0, 0),
(101620, 1011, 2, 100, 0, 0),
(101627, 1011, 4, 100, 0, 0);