diff --git a/seeds/collections/charts-bms.json b/seeds/collections/charts-bms.json index a48c47576..e1ec4a3e6 100644 --- a/seeds/collections/charts-bms.json +++ b/seeds/collections/charts-bms.json @@ -1584,13 +1584,13 @@ "hashSHA256": "4d50ce1f05036e907ed041ce6492f9197dccb81d179a445f3428dea6f68e521b", "notecount": 1110, "tableFolders": [ - { - "table": "◆◆", - "level": "2" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "2" } ] }, @@ -49305,6 +49305,10 @@ "hashSHA256": "a02082719a0d6b5214122a2a24330521d91a6b79c31c26148756c7a2af729e0a", "notecount": 1500, "tableFolders": [ + { + "table": "ln", + "level": "18" + }, { "table": "◆", "level": "18" @@ -49312,10 +49316,6 @@ { "table": "◆◆", "level": "6" - }, - { - "table": "ln", - "level": "18" } ] }, @@ -101444,13 +101444,13 @@ "hashSHA256": "b15d9ed897a5603ffa5af4c5a3aee8d1fc93ecc2612d68c3557498cc8316f6fc", "notecount": 1552, "tableFolders": [ - { - "table": "◆◆", - "level": "5" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "5" } ] }, @@ -233337,6 +233337,10 @@ "hashSHA256": "871593519a8218394cb77bdd15c2f091f5741c738d52e17eb8642c9cc911aac4", "notecount": 1700, "tableFolders": [ + { + "table": "ln", + "level": "19" + }, { "table": "◆", "level": "19" @@ -233344,10 +233348,6 @@ { "table": "◆◆", "level": "8" - }, - { - "table": "ln", - "level": "19" } ] }, @@ -273038,6 +273038,10 @@ "hashSHA256": "99147a9bfc95021ed2ba5def79e715a53d64230767392d5d00e0c1644351b96c", "notecount": 2000, "tableFolders": [ + { + "table": "ln", + "level": "17" + }, { "table": "◆", "level": "17" @@ -273045,10 +273049,6 @@ { "table": "◆◆", "level": "5" - }, - { - "table": "ln", - "level": "17" } ] }, @@ -320469,13 +320469,13 @@ "hashSHA256": "68d7a2e3c094c49fe58df01ee8295ac9ef7e1e970ddbd896924d008dfaa78928", "notecount": 1126, "tableFolders": [ - { - "table": "◆◆", - "level": "2" - }, { "table": "ln", "level": "16" + }, + { + "table": "◆◆", + "level": "2" } ] }, @@ -330157,13 +330157,13 @@ "hashSHA256": "16f09faff6ccc2a96f7df8b20fb4deaa46a259fecfb1cd84319a457d0eff386e", "notecount": 2376, "tableFolders": [ - { - "table": "◆◆", - "level": "5" - }, { "table": "ln", "level": "16" + }, + { + "table": "◆◆", + "level": "5" } ] }, @@ -478377,13 +478377,13 @@ "hashSHA256": "fb00e7bbe864f5279ce43fa624bc42fe9cd9b71358bdb699f7226faa6de413f1", "notecount": 1621, "tableFolders": [ - { - "table": "◆◆", - "level": "6" - }, { "table": "ln", "level": "18" + }, + { + "table": "◆◆", + "level": "6" } ] }, @@ -658311,13 +658311,13 @@ "hashSHA256": "94c934aa09f8c123f8d9e1ae8ac7615bc28f34600698915993adc383cbd67c2e", "notecount": 1088, "tableFolders": [ - { - "table": "◆◆", - "level": "4" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "4" } ] }, @@ -687821,13 +687821,13 @@ "hashSHA256": "512192f460ac2b96600e8f5cc0a9b048a8be63724f89ce43a4ed110155c05aa6", "notecount": 1382, "tableFolders": [ - { - "table": "◆◆", - "level": "6" - }, { "table": "ln", "level": "19" + }, + { + "table": "◆◆", + "level": "6" } ] }, @@ -757009,13 +757009,13 @@ "hashSHA256": "2817bba50cb475273f290057b88bd6268b0970bd893beea78eba0c4f9b2bc2a5", "notecount": 1369, "tableFolders": [ - { - "table": "◆◆", - "level": "7" - }, { "table": "ln", "level": "19" + }, + { + "table": "◆◆", + "level": "7" } ] }, @@ -778234,13 +778234,13 @@ "hashSHA256": "1877368267d85a798cbc2aa01a1a722db21b4c5ac8fd267f6e6103e3de740836", "notecount": 1208, "tableFolders": [ - { - "table": "◆◆", - "level": "4" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "4" } ] }, @@ -824482,13 +824482,13 @@ "hashSHA256": "33a67ac1e8e31085b585c41954b06d73549a27121611c1141197a8d29981ed61", "notecount": 1573, "tableFolders": [ - { - "table": "◆◆", - "level": "4" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "4" } ] }, @@ -824949,13 +824949,13 @@ "hashSHA256": "61d9b292b49f358651758df8fc7354d36d81e1780f8454640c82980b78c3d778", "notecount": 2148, "tableFolders": [ - { - "table": "◆◆", - "level": "6" - }, { "table": "ln", "level": "18" + }, + { + "table": "◆◆", + "level": "6" } ] }, @@ -842523,11 +842523,11 @@ "notecount": 2024, "tableFolders": [ { - "table": "◆", + "table": "ln", "level": "19" }, { - "table": "ln", + "table": "◆", "level": "19" } ] @@ -892030,13 +892030,13 @@ "hashSHA256": "8df16047a356d42ca779ba9c1e5c158438dcf442aa6097265499848018371df0", "notecount": 1682, "tableFolders": [ - { - "table": "◆◆", - "level": "5" - }, { "table": "ln", "level": "18" + }, + { + "table": "◆◆", + "level": "5" } ] }, @@ -944238,6 +944238,10 @@ "hashSHA256": "00270373660925d8d687fb6d65adfce1c901a779c784f9375524a6259fa48c5b", "notecount": 1100, "tableFolders": [ + { + "table": "ln", + "level": "17" + }, { "table": "◆", "level": "16" @@ -944245,10 +944249,6 @@ { "table": "◆◆", "level": "2" - }, - { - "table": "ln", - "level": "17" } ] }, @@ -945001,6 +945001,10 @@ "hashSHA256": "2772b31331549af51180d6aa99329c6c827b1f7dc06e08e24ec3de2b26555caf", "notecount": 1600, "tableFolders": [ + { + "table": "ln", + "level": "17" + }, { "table": "◆", "level": "17" @@ -945008,10 +945012,6 @@ { "table": "◆◆", "level": "5" - }, - { - "table": "ln", - "level": "17" } ] }, @@ -965552,13 +965552,13 @@ "hashSHA256": "4d580367041426adb0f7bd4105ec986b76f8440a50a0dfbeeec58ba4af1aae1c", "notecount": 1532, "tableFolders": [ - { - "table": "◆", - "level": "17" - }, { "table": "ln", "level": "18" + }, + { + "table": "◆", + "level": "17" } ] }, @@ -1015413,6 +1015413,10 @@ "hashSHA256": "bf02a9283cd972d261a26682e3174fc14e103e2ac4527c4ea3fa517c86c21553", "notecount": 1606, "tableFolders": [ + { + "table": "ln", + "level": "20" + }, { "table": "◆", "level": "19" @@ -1015420,10 +1015424,6 @@ { "table": "◆◆", "level": "7" - }, - { - "table": "ln", - "level": "20" } ] }, @@ -1040303,13 +1040303,13 @@ "hashSHA256": "620d1e9e284252dd43ebe8b195a7c0f039484de10d49323640b6f9fd1ebcece5", "notecount": 1758, "tableFolders": [ - { - "table": "◆◆", - "level": "6" - }, { "table": "ln", "level": "18" + }, + { + "table": "◆◆", + "level": "6" } ] }, @@ -1107245,13 +1107245,13 @@ "hashSHA256": "e98f70709314d219174c96ba80138c7b9044ae3dad6f19581838639acb56f6df", "notecount": 1700, "tableFolders": [ - { - "table": "fr", - "level": "9" - }, { "table": "ln", "level": "20" + }, + { + "table": "fr", + "level": "9" } ] }, @@ -1196129,6 +1196129,10 @@ "hashSHA256": "8261a7f7ddee3812ef0fe8844c83bb62380305d6dbe16a0f20ea5d1cb8309230", "notecount": 1586, "tableFolders": [ + { + "table": "ln", + "level": "18" + }, { "table": "◆", "level": "18" @@ -1196136,10 +1196140,6 @@ { "table": "◆◆", "level": "6" - }, - { - "table": "ln", - "level": "18" } ] }, @@ -1229046,6 +1229046,10 @@ "hashSHA256": "cfe165aefc1a208f8ee41ec23cf46b4197f37e62037b800b9482ddd0e7c244ff", "notecount": 1332, "tableFolders": [ + { + "table": "ln", + "level": "17" + }, { "table": "◆", "level": "17" @@ -1229053,10 +1229057,6 @@ { "table": "◆◆", "level": "5" - }, - { - "table": "ln", - "level": "17" } ] }, @@ -1229968,13 +1229968,13 @@ "hashSHA256": "c0d7296f3a8844518b817e95f770bc705377d670035c985a10bf99931e8f3ef4", "notecount": 1791, "tableFolders": [ - { - "table": "◆◆", - "level": "7" - }, { "table": "ln", "level": "20" + }, + { + "table": "◆◆", + "level": "7" } ] }, @@ -1239623,13 +1239623,13 @@ "hashSHA256": "faffed3a2206353382f6597240c7721f2697cb19d8e8191b31243af546b68bc9", "notecount": 900, "tableFolders": [ - { - "table": "◆◆", - "level": "4" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "4" } ] }, @@ -1282311,13 +1282311,13 @@ "hashSHA256": "1fe68b5f8b82e7df7983ceaf16f6cafdbba6da62b3c83a61f16e20b45bc83f17", "notecount": 1029, "tableFolders": [ - { - "table": "◆◆", - "level": "5" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "5" } ] }, @@ -1296785,13 +1296785,13 @@ "hashSHA256": "09deb0445beb7f28ae7f8b453dd9472d30a185f26f096f05787ffcc98f9b3f20", "notecount": 1356, "tableFolders": [ - { - "table": "◆◆", - "level": "5" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "5" } ] }, @@ -1333629,6 +1333629,10 @@ "hashSHA256": "02eaabdc6e97da19b297c7c9804a20b19ad8cd286d2df2d2da6b6b018b4eabc7", "notecount": 1287, "tableFolders": [ + { + "table": "ln", + "level": "19" + }, { "table": "◆", "level": "19" @@ -1333636,10 +1333640,6 @@ { "table": "◆◆", "level": "6" - }, - { - "table": "ln", - "level": "19" } ] }, @@ -1333659,13 +1333659,13 @@ "hashSHA256": "e823fcd73cccf6576d2ebabff3d8867aeb6b811265645672332859f9b0ae4b4c", "notecount": 951, "tableFolders": [ - { - "table": "◆◆", - "level": "4" - }, { "table": "ln", "level": "17" + }, + { + "table": "◆◆", + "level": "4" } ] }, @@ -1363746,6 +1363746,10 @@ "hashSHA256": "73cd0d341ab3fd7976effdf5250d03c8c53701754c9dcb8e7afb3bcf669ed993", "notecount": 1794, "tableFolders": [ + { + "table": "ln", + "level": "20" + }, { "table": "◆", "level": "19" @@ -1363753,10 +1363757,6 @@ { "table": "◆◆", "level": "7" - }, - { - "table": "ln", - "level": "20" } ] }, @@ -1529171,5 +1529171,57 @@ "playtype": "7K", "songID": 94658, "versions": [] + }, + { + "chartID": "f2604b26776338e24707ebcc6eec933a1c7c1978", + "data": { + "aiLevel": null, + "hashMD5": "69487406bb5d356eda9c35f199e1318f", + "hashSHA256": "8d7c31db7ea56790a33dc1dd26462294efe0a5d024e9544eb052dca7e182cd9b", + "notecount": 4341, + "sglEC": null, + "sglHC": null, + "tableFolders": [ + { + "table": "dl", + "level": "11" + }, + { + "table": "dy", + "level": "6" + } + ] + }, + "difficulty": "CHART", + "isPrimary": true, + "level": "?", + "levelNum": 0, + "playtype": "7K", + "songID": 94659, + "versions": [] + }, + { + "chartID": "ee41d79fa89001e33fc58284b9ffc75c815feb22", + "data": { + "aiLevel": null, + "hashMD5": "53cf3ae3b0ab032f51e257060a5a2a61", + "hashSHA256": "4280a1cbdf55b07a1f5c49dcf06dee9bd43d2491a8ed8a5337a7da355bef7eb3", + "notecount": 571, + "sglEC": null, + "sglHC": null, + "tableFolders": [ + { + "table": "▽", + "level": "8" + } + ] + }, + "difficulty": "CHART", + "isPrimary": true, + "level": "?", + "levelNum": 0, + "playtype": "7K", + "songID": 94660, + "versions": [] } ] \ No newline at end of file diff --git a/seeds/collections/songs-bms.json b/seeds/collections/songs-bms.json index e61b84770..0afe8db08 100644 --- a/seeds/collections/songs-bms.json +++ b/seeds/collections/songs-bms.json @@ -1033,7 +1033,7 @@ "genre": "SuperNOVA BEAT", "subartist": null, "subtitle": null, - "tableString": "◆◆2, ln17" + "tableString": "ln17, ◆◆2" }, "id": 89, "searchTerms": [], @@ -24004,7 +24004,7 @@ "genre": "PIANO HOUSE", "subartist": "Movie : Ryuka", "subtitle": null, - "tableString": "◆◆3, ln16" + "tableString": "ln16, ◆◆3" }, "id": 2233, "searchTerms": [], @@ -34092,7 +34092,7 @@ "genre": "MULTIVERSE", "subartist": "deadblue238", "subtitle": "[LN Nightmare]", - "tableString": "◆18, ◆◆6, ln18" + "tableString": "ln18, ◆18, ◆◆6" }, "id": 3165, "searchTerms": [], @@ -69491,7 +69491,7 @@ "genre": "Crazy Arrabbiata", "subartist": null, "subtitle": null, - "tableString": "◆◆5, ln17" + "tableString": "ln17, ◆◆5" }, "id": 6426, "searchTerms": [], @@ -83895,7 +83895,7 @@ "genre": "House", "subartist": "eFeL/Masquerade/CAPOKI/Seraphim/SmiGoon/LS", "subtitle": null, - "tableString": "◆◆2, ln16" + "tableString": "ln16, ◆◆2" }, "id": 7881, "searchTerms": [], @@ -159633,7 +159633,7 @@ "genre": "Theme", "subartist": null, "subtitle": null, - "tableString": "◆19, ◆◆8, ln19" + "tableString": "ln19, ◆19, ◆◆8" }, "id": 15793, "searchTerms": [], @@ -186998,7 +186998,7 @@ "genre": "Eurobeat", "subartist": null, "subtitle": null, - "tableString": "◆17, ◆◆5, ln17" + "tableString": "ln17, ◆17, ◆◆5" }, "id": 18300, "searchTerms": [], @@ -199842,7 +199842,7 @@ "genre": "ドリームポップREMIX", "subartist": null, "subtitle": null, - "tableString": "◆◆3, ln16" + "tableString": "ln16, ◆◆3" }, "id": 19468, "searchTerms": [], @@ -219602,7 +219602,7 @@ "genre": "ReQuiEm tRanCe", "subartist": null, "subtitle": null, - "tableString": "◆◆2, ln16" + "tableString": "ln16, ◆◆2" }, "id": 21224, "searchTerms": [], @@ -226336,7 +226336,7 @@ "genre": "MELODIC SPEED CORE", "subartist": null, "subtitle": null, - "tableString": "◆◆5, ln16" + "tableString": "ln16, ◆◆5" }, "id": 21820, "searchTerms": [], @@ -313319,7 +313319,7 @@ "genre": "40秒耐久穴抜", "subartist": null, "subtitle": null, - "tableString": "◆◆2, ln16" + "tableString": "ln16, ◆◆2" }, "id": 29638, "searchTerms": [], @@ -328113,7 +328113,7 @@ "genre": "LASTSHOT", "subartist": null, "subtitle": null, - "tableString": "◆◆6, ln18" + "tableString": "ln18, ◆◆6" }, "id": 30996, "searchTerms": [], @@ -452133,7 +452133,7 @@ "genre": "BUCHIAGE TRANCE", "subartist": null, "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 42289, "searchTerms": [], @@ -473024,7 +473024,7 @@ "genre": "Hybrid", "subartist": null, "subtitle": null, - "tableString": "◆◆6, ln19" + "tableString": "ln19, ◆◆6" }, "id": 45271, "searchTerms": [], @@ -491666,7 +491666,7 @@ "genre": "Rosso Phantasma", "subartist": null, "subtitle": null, - "tableString": "◆◆3, ln16" + "tableString": "ln16, ◆◆3" }, "id": 46920, "searchTerms": [], @@ -520682,7 +520682,7 @@ "genre": "ピポピポJAZZ", "subartist": null, "subtitle": null, - "tableString": "◆◆7, ln19" + "tableString": "ln19, ◆◆7" }, "id": 49558, "searchTerms": [], @@ -535034,7 +535034,7 @@ "genre": "FREEFORM", "subartist": null, "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 50890, "searchTerms": [], @@ -566923,7 +566923,7 @@ "genre": "Dramatic Trance", "subartist": null, "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 53826, "searchTerms": [], @@ -567209,7 +567209,7 @@ "genre": "Dramatic Trance", "subartist": null, "subtitle": null, - "tableString": "◆◆6, ln18" + "tableString": "ln18, ◆◆6" }, "id": 53848, "searchTerms": [], @@ -579299,7 +579299,7 @@ "genre": "DOUBLE ARRANGE", "subartist": null, "subtitle": null, - "tableString": "◆19, ln19" + "tableString": "ln19, ◆19" }, "id": 55036, "searchTerms": [], @@ -613346,7 +613346,7 @@ "genre": "HARD RENAISSAYAKA", "subartist": "BGA : 美樹さやか", "subtitle": null, - "tableString": "◆◆5, ln18" + "tableString": "ln18, ◆◆5" }, "id": 58159, "searchTerms": [], @@ -624461,7 +624461,7 @@ "genre": "instrumental", "subartist": null, "subtitle": null, - "tableString": "◆◆3, ln16" + "tableString": "ln16, ◆◆3" }, "id": 59181, "searchTerms": [], @@ -648836,7 +648836,7 @@ "genre": "ENERGETIC TRANCE", "subartist": "BGA by 出前", "subtitle": null, - "tableString": "◆16, ◆◆2, ln17" + "tableString": "ln17, ◆16, ◆◆2" }, "id": 61453, "searchTerms": [], @@ -649330,7 +649330,7 @@ "genre": "Progressive Rock", "subartist": null, "subtitle": null, - "tableString": "◆17, ◆◆5, ln17" + "tableString": "ln17, ◆17, ◆◆5" }, "id": 61498, "searchTerms": [], @@ -663409,7 +663409,7 @@ "genre": "円環の理", "subartist": null, "subtitle": null, - "tableString": "◆17, ln18" + "tableString": "ln18, ◆17" }, "id": 62784, "searchTerms": [], @@ -696364,7 +696364,7 @@ "genre": "Psytrance", "subartist": null, "subtitle": null, - "tableString": "◆◆3, ln17" + "tableString": "ln17, ◆◆3" }, "id": 65711, "searchTerms": [], @@ -715071,7 +715071,7 @@ "genre": "GENESIC HARDCORE", "subartist": null, "subtitle": null, - "tableString": "◆◆6, ln18" + "tableString": "ln18, ◆◆6" }, "id": 67462, "searchTerms": [], @@ -746830,7 +746830,7 @@ "genre": "AKIBA TECHNO POP", "subartist": null, "subtitle": null, - "tableString": "◆◆2, ln16" + "tableString": "ln16, ◆◆2" }, "id": 70325, "searchTerms": [], @@ -782593,7 +782593,7 @@ "genre": "TRANCECORE BREAKS", "subartist": null, "subtitle": null, - "tableString": "◆◆3, ln17" + "tableString": "ln17, ◆◆3" }, "id": 73537, "searchTerms": [], @@ -801872,7 +801872,7 @@ "genre": "IDOL SONG / NEW GENERATION", "subartist": null, "subtitle": null, - "tableString": "◆17, ln16" + "tableString": "ln16, ◆17" }, "id": 75239, "searchTerms": [], @@ -803679,7 +803679,7 @@ "genre": "SYMPHONIC DANCE SPEED /// 7KEYS LN Lv101", "subartist": null, "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 75429, "searchTerms": [], @@ -821255,7 +821255,7 @@ "genre": "ENTROPY", "subartist": "佐倉杏子", "subtitle": null, - "tableString": "◆18, ◆◆6, ln18" + "tableString": "ln18, ◆18, ◆◆6" }, "id": 76977, "searchTerms": [], @@ -843758,7 +843758,7 @@ "genre": "Spell Music", "subartist": null, "subtitle": null, - "tableString": "◆17, ◆◆5, ln17" + "tableString": "ln17, ◆17, ◆◆5" }, "id": 79008, "searchTerms": [], @@ -851077,7 +851077,7 @@ "genre": "chiptune", "subartist": "for 柴崎芦花", "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 79643, "searchTerms": [], @@ -855744,7 +855744,7 @@ "genre": "WORLD/ELECTRONICA", "subartist": null, "subtitle": null, - "tableString": "◆16, ◆◆2, ln17" + "tableString": "ln17, ◆16, ◆◆2" }, "id": 80089, "searchTerms": [], @@ -880756,7 +880756,7 @@ "genre": "artcore", "subartist": null, "subtitle": null, - "tableString": "◆◆5, ln17" + "tableString": "ln17, ◆◆5" }, "id": 82378, "searchTerms": [], @@ -890480,7 +890480,7 @@ "genre": "INNOCENCE", "subartist": null, "subtitle": null, - "tableString": "◆◆5, ln17" + "tableString": "ln17, ◆◆5" }, "id": 83289, "searchTerms": [], @@ -902258,7 +902258,7 @@ "genre": "Nocturne", "subartist": null, "subtitle": null, - "tableString": "◆17, ◆◆4, ln17" + "tableString": "ln17, ◆17, ◆◆4" }, "id": 84350, "searchTerms": [], @@ -915661,7 +915661,7 @@ "genre": "Country Art", "subartist": null, "subtitle": null, - "tableString": "◆19, ◆◆6, ln19" + "tableString": "ln19, ◆19, ◆◆6" }, "id": 85558, "searchTerms": [], @@ -915674,7 +915674,7 @@ "genre": "Country Art", "subartist": null, "subtitle": null, - "tableString": "◆◆4, ln17" + "tableString": "ln17, ◆◆4" }, "id": 85559, "searchTerms": [], @@ -1029039,5 +1029039,31 @@ "id": 94658, "searchTerms": [], "title": "Stellaria" + }, + { + "altTitles": [], + "artist": "源屋feat.ユスラ", + "data": { + "genre": "Akiba Pop", + "subartist": "obj:trainer vs 横認識できないんちゅ", + "subtitle": "[フィジカル全認識]", + "tableString": "dl11, dy6" + }, + "id": 94659, + "searchTerms": [], + "title": "Magical Love Words" + }, + { + "altTitles": [], + "artist": "Yamajet feat. SECRET-Y", + "data": { + "genre": "LOUNGE POP", + "subartist": "", + "subtitle": "", + "tableString": "▽8" + }, + "id": 94660, + "searchTerms": [], + "title": "siromalic (7keys)" } ] \ No newline at end of file