Skip to content

Instantly share code, notes, and snippets.

@kikugie
Created November 8, 2025 13:09
Show Gist options
  • Select an option

  • Save kikugie/8b1e85b55a34196c1d50188f78dca93b to your computer and use it in GitHub Desktop.

Select an option

Save kikugie/8b1e85b55a34196c1d50188f78dca93b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells" : [ {
"cell_type" : "code",
"metadata" : {
"collapsed" : true,
"executionRelatedData" : {
"compiledClasses" : [ "Line_2_jupyter", "Line_3_jupyter", "Line_4_jupyter", "Line_5_jupyter", "Line_6_jupyter", "Line_7_jupyter", "Line_8_jupyter", "Line_9_jupyter", "Line_10_jupyter", "Line_11_jupyter", "Line_12_jupyter", "Line_13_jupyter", "Line_14_jupyter", "Line_15_jupyter", "Line_16_jupyter", "Line_17_jupyter", "Line_36_jupyter", "Line_37_jupyter", "Line_2_jupyter", "Line_70_jupyter", "Line_71_jupyter", "Line_36_jupyter", "Line_274_jupyter", "Line_275_jupyter", "Line_315_jupyter", "Line_316_jupyter", "Line_274_jupyter", "Line_333_jupyter", "Line_334_jupyter", "Line_315_jupyter", "Line_356_jupyter", "Line_357_jupyter", "Line_333_jupyter", "Line_398_jupyter", "Line_399_jupyter", "Line_356_jupyter", "Line_407_jupyter", "Line_408_jupyter", "Line_398_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:07:57.148491514Z",
"start_time" : "2025-11-08T13:07:56.965602697Z"
}
},
"source" : [ "%use serialization\n", "%use kandy\n", "%use dataframe\n", "USE {\n", " dependencies {\n", " val ktor = \"3.3.2\"\n", "\n", " implementation(\"io.ktor:ktor-client-core-jvm:$ktor\")\n", " implementation(\"io.ktor:ktor-client-java-jvm:$ktor\")\n", " implementation(\"io.ktor:ktor-client-auth-jvm:$ktor\")\n", " implementation(\"io.ktor:ktor-client-content-negotiation-jvm:$ktor\")\n", " implementation(\"io.ktor:ktor-serialization-kotlinx-json-jvm:$ktor\")\n", "\n", " implementation(\"dev.kikugie:semver:2.1.0\")\n", " }\n", "}" ],
"id" : "b00be7d755caa674",
"outputs" : [ ],
"execution_count" : 260
}, {
"metadata" : {
"executionRelatedData" : {
"compiledClasses" : [ "Line_18_jupyter", "Line_38_jupyter", "Line_18_jupyter", "Line_68_jupyter", "Line_38_jupyter", "Line_72_jupyter", "Line_68_jupyter", "Line_197_jupyter", "Line_203_jupyter", "Line_197_jupyter", "Line_209_jupyter", "Line_18_jupyter", "Line_224_jupyter", "Line_209_jupyter", "Line_263_jupyter", "Line_224_jupyter", "Line_265_jupyter", "Line_263_jupyter", "Line_276_jupyter", "Line_265_jupyter", "Line_307_jupyter", "Line_276_jupyter", "Line_317_jupyter", "Line_307_jupyter", "Line_335_jupyter", "Line_317_jupyter", "Line_358_jupyter", "Line_335_jupyter", "Line_365_jupyter", "Line_358_jupyter", "Line_400_jupyter", "Line_365_jupyter", "Line_409_jupyter", "Line_400_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:07:59.082439876Z",
"start_time" : "2025-11-08T13:07:57.150847098Z"
}
},
"cell_type" : "code",
"source" : [ "import io.ktor.client.HttpClient\n", "import io.ktor.client.call.body\n", "import io.ktor.client.engine.java.Java\n", "import io.ktor.client.plugins.UserAgent\n", "import io.ktor.client.plugins.contentnegotiation.ContentNegotiation\n", "import io.ktor.client.request.get\n", "import io.ktor.serialization.kotlinx.json.json\n", "import kotlinx.serialization.json.Json\n", "import kotlinx.serialization.SerialName\n", "import kotlinx.serialization.Serializable\n", "import dev.kikugie.semver.data.SemanticVersion\n", "\n", "val CLIENT = HttpClient(Java) {\n", " install(UserAgent) {\n", " agent = \"kikugie/mod-download-stats\"\n", " }\n", " install(ContentNegotiation) {\n", " json(Json {\n", " ignoreUnknownKeys = true\n", " isLenient = true\n", " })\n", " }\n", "}\n", "\n", "@Serializable\n", "data class VersionEntry(val source: String, val id: String, val versions: MutableSet<String>, val loaders: MutableSet<String>, var downloads: Int) {\n", " val parsed: List<SemanticVersion> by lazy {\n", " versions.map { SemanticVersion.parse(it).getOrElse { _ -> error(\"Invalid version $it\") } }.sorted()\n", " }\n", "\n", " val versionStr: String get() = if (parsed.size == 1) parsed.first().value else buildString {\n", " append(parsed.first().value)\n", " append(\"-\")\n", " append(parsed.last().value)\n", " }\n", "\n", " val loaderStr: String get() = when(loaders.size) {\n", " 1 -> loaders.first()\n", " 2 ->\n", " if (\"fabric\" in loaders && \"quilt\" in loaders) \"fabric-like\"\n", " else if (\"forge\" in loaders && \"neoforge\" in loaders) \"forge-like\"\n", " else \"mixed\"\n", " else -> \"mixed\"\n", " }\n", "\n", " fun canAppendLoader(loader: String) = when (loader) {\n", " \"fabric\", \"quilt\" -> \"fabric\" in loaders || \"quilt\" in loaders\n", " \"forge\", \"neoforge\" -> \"forge\" in loaders || \"neoforge\" in loaders\n", " else -> true\n", " }\n", "}" ],
"id" : "3d3030c6025c7ded",
"outputs" : [ ],
"execution_count" : 261
}, {
"metadata" : {
"executionRelatedData" : {
"compiledClasses" : [ "Line_19_jupyter", "Line_39_jupyter", "Line_19_jupyter", "Line_46_jupyter", "Line_39_jupyter", "Line_53_jupyter", "Line_46_jupyter", "Line_73_jupyter", "Line_53_jupyter", "Line_88_jupyter", "Line_73_jupyter", "Line_129_jupyter", "Line_88_jupyter", "Line_131_jupyter", "Line_129_jupyter", "Line_146_jupyter", "Line_131_jupyter", "Line_148_jupyter", "Line_146_jupyter", "Line_159_jupyter", "Line_148_jupyter", "Line_165_jupyter", "Line_159_jupyter", "Line_179_jupyter", "Line_165_jupyter", "Line_184_jupyter", "Line_179_jupyter", "Line_202_jupyter", "Line_19_jupyter", "Line_205_jupyter", "Line_202_jupyter", "Line_214_jupyter", "Line_205_jupyter", "Line_219_jupyter", "Line_214_jupyter", "Line_228_jupyter", "Line_219_jupyter", "Line_243_jupyter", "Line_228_jupyter", "Line_252_jupyter", "Line_243_jupyter", "Line_257_jupyter", "Line_252_jupyter", "Line_266_jupyter", "Line_257_jupyter", "Line_269_jupyter", "Line_266_jupyter", "Line_277_jupyter", "Line_269_jupyter", "Line_287_jupyter", "Line_277_jupyter", "Line_292_jupyter", "Line_287_jupyter", "Line_293_jupyter", "Line_292_jupyter", "Line_297_jupyter", "Line_293_jupyter", "Line_302_jupyter", "Line_297_jupyter", "Line_308_jupyter", "Line_302_jupyter", "Line_318_jupyter", "Line_308_jupyter", "Line_324_jupyter", "Line_318_jupyter", "Line_328_jupyter", "Line_324_jupyter", "Line_336_jupyter", "Line_328_jupyter", "Line_351_jupyter", "Line_336_jupyter", "Line_359_jupyter", "Line_351_jupyter", "Line_401_jupyter", "Line_359_jupyter", "Line_410_jupyter", "Line_401_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:08:01.455046784Z",
"start_time" : "2025-11-08T13:07:59.110706937Z"
}
},
"cell_type" : "code",
"source" : [ "import dev.kikugie.semver.data.Version\n", "import kotlinx.coroutines.async\n", "import kotlinx.coroutines.coroutineScope\n", "import kotlinx.coroutines.awaitAll\n", "import kotlinx.serialization.SerialName\n", "import kotlinx.serialization.Serializable\n", "\n", "@Serializable\n", "private data class MRVersionData(\n", " val downloads: Int,\n", " @SerialName(\"game_versions\") val gameVersions: List<String>,\n", " @SerialName(\"loaders\") val modLoaders: List<String>\n", ")\n", "\n", "private suspend fun fetchModrinth(slug: String): List<MRVersionData> =\n", " CLIENT.get(\"https://api.modrinth.com/v2/project/$slug/version\").body<List<MRVersionData>>().also {\n", " println(\"Fetched ${it.size} MR versions for $slug\")\n", " }\n", "\n", "suspend fun fetchModrinthVersions(vararg slugs: String): List<VersionEntry> = coroutineScope {\n", " val jobs = slugs.map { async { it to fetchModrinth(it) } }\n", "\n", " val versions: MutableList<VersionEntry> = mutableListOf()\n", " for ((slug, entries) in jobs.awaitAll()) for (data in entries) {\n", " val loaders = data.modLoaders\n", " val mc = data.gameVersions.filter { 'w' !in it && '-' !in it }\n", " if (loaders.isEmpty() || mc.isEmpty()) continue\n", " val match = when(mc.size) {\n", " 1 -> versions.find {\n", " it.id == slug\n", " && mc.first() in it.versions\n", " && loaders.all { l -> it.canAppendLoader(l) }\n", " }\n", " else -> versions.find {\n", " it.id == slug\n", " && mc.containsAll(it.versions)\n", " && loaders.all { l -> it.canAppendLoader(l) }\n", " }\n", " }\n", "\n", " if (match == null) versions += VersionEntry(\n", " \"Modrinth\",\n", " slug,\n", " mc.toMutableSet(),\n", " loaders.toMutableSet(),\n", " data.downloads\n", " ) else {\n", " match.versions += mc\n", " match.loaders += loaders\n", " match.downloads = max(match.downloads, data.downloads)\n", " }\n", " }\n", " versions\n", "}" ],
"id" : "c9daf67b029989b6",
"outputs" : [ ],
"execution_count" : 262
}, {
"metadata" : {
"executionRelatedData" : {
"compiledClasses" : [ "Line_41_jupyter", "Line_48_jupyter", "Line_41_jupyter", "Line_69_jupyter", "Line_48_jupyter", "Line_75_jupyter", "Line_69_jupyter", "Line_154_jupyter", "Line_75_jupyter", "Line_210_jupyter", "Line_41_jupyter", "Line_233_jupyter", "Line_210_jupyter", "Line_278_jupyter", "Line_233_jupyter", "Line_313_jupyter", "Line_278_jupyter", "Line_319_jupyter", "Line_313_jupyter", "Line_337_jupyter", "Line_319_jupyter", "Line_360_jupyter", "Line_337_jupyter", "Line_402_jupyter", "Line_360_jupyter", "Line_411_jupyter", "Line_402_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:08:10.182371558Z",
"start_time" : "2025-11-08T13:08:01.457030560Z"
}
},
"cell_type" : "code",
"source" : [ "fun Collection<VersionEntry>.toDataFrame(): DataFrame<*> {\n", " val sorted = sortedByDescending { it.parsed.last() }\n", "\n", " return dataFrameOf(\n", " \"Version\" to sorted.map(VersionEntry::versionStr),\n", " \"Loader\" to sorted.map(VersionEntry::loaderStr),\n", " \"Downloads\" to sorted.map(VersionEntry::downloads),\n", " \"Source\" to sorted.map(VersionEntry::source)\n", " )\n", "}" ],
"id" : "1f04c1d13fb1d70",
"outputs" : [ ],
"execution_count" : 263
}, {
"metadata" : {
"executionRelatedData" : {
"compiledClasses" : [ "Line_42_jupyter", "Line_43_jupyter", "Line_44_jupyter", "Line_49_jupyter", "Line_50_jupyter", "Line_51_jupyter", "Line_42_jupyter", "Line_54_jupyter", "Line_55_jupyter", "Line_56_jupyter", "Line_49_jupyter", "Line_60_jupyter", "Line_61_jupyter", "Line_62_jupyter", "Line_63_jupyter", "Line_64_jupyter", "Line_54_jupyter", "Line_76_jupyter", "Line_77_jupyter", "Line_78_jupyter", "Line_60_jupyter", "Line_85_jupyter", "Line_86_jupyter", "Line_87_jupyter", "Line_76_jupyter", "Line_95_jupyter", "Line_96_jupyter", "Line_97_jupyter", "Line_85_jupyter", "Line_100_jupyter", "Line_95_jupyter", "Line_102_jupyter", "Line_100_jupyter", "Line_104_jupyter", "Line_102_jupyter", "Line_105_jupyter", "Line_106_jupyter", "Line_107_jupyter", "Line_104_jupyter", "Line_109_jupyter", "Line_110_jupyter", "Line_111_jupyter", "Line_105_jupyter", "Line_113_jupyter", "Line_114_jupyter", "Line_115_jupyter", "Line_109_jupyter", "Line_117_jupyter", "Line_118_jupyter", "Line_119_jupyter", "Line_113_jupyter", "Line_121_jupyter", "Line_122_jupyter", "Line_123_jupyter", "Line_117_jupyter", "Line_125_jupyter", "Line_126_jupyter", "Line_127_jupyter", "Line_121_jupyter", "Line_132_jupyter", "Line_133_jupyter", "Line_134_jupyter", "Line_125_jupyter", "Line_137_jupyter", "Line_138_jupyter", "Line_139_jupyter", "Line_132_jupyter", "Line_142_jupyter", "Line_143_jupyter", "Line_144_jupyter", "Line_137_jupyter", "Line_149_jupyter", "Line_150_jupyter", "Line_151_jupyter", "Line_142_jupyter", "Line_155_jupyter", "Line_156_jupyter", "Line_157_jupyter", "Line_149_jupyter", "Line_161_jupyter", "Line_162_jupyter", "Line_163_jupyter", "Line_155_jupyter", "Line_166_jupyter", "Line_167_jupyter", "Line_168_jupyter", "Line_161_jupyter", "Line_170_jupyter", "Line_171_jupyter", "Line_172_jupyter", "Line_166_jupyter", "Line_175_jupyter", "Line_176_jupyter", "Line_177_jupyter", "Line_170_jupyter", "Line_180_jupyter", "Line_181_jupyter", "Line_182_jupyter", "Line_175_jupyter", "Line_185_jupyter", "Line_186_jupyter", "Line_187_jupyter", "Line_180_jupyter", "Line_189_jupyter", "Line_190_jupyter", "Line_191_jupyter", "Line_185_jupyter", "Line_193_jupyter", "Line_194_jupyter", "Line_195_jupyter", "Line_189_jupyter", "Line_211_jupyter", "Line_212_jupyter", "Line_213_jupyter", "Line_42_jupyter", "Line_215_jupyter", "Line_216_jupyter", "Line_217_jupyter", "Line_211_jupyter", "Line_220_jupyter", "Line_221_jupyter", "Line_222_jupyter", "Line_215_jupyter", "Line_229_jupyter", "Line_230_jupyter", "Line_231_jupyter", "Line_220_jupyter", "Line_234_jupyter", "Line_235_jupyter", "Line_236_jupyter", "Line_229_jupyter", "Line_238_jupyter", "Line_239_jupyter", "Line_240_jupyter", "Line_234_jupyter", "Line_244_jupyter", "Line_245_jupyter", "Line_246_jupyter", "Line_238_jupyter", "Line_248_jupyter", "Line_249_jupyter", "Line_250_jupyter", "Line_244_jupyter", "Line_253_jupyter", "Line_254_jupyter", "Line_255_jupyter", "Line_248_jupyter", "Line_258_jupyter", "Line_259_jupyter", "Line_260_jupyter", "Line_253_jupyter", "Line_270_jupyter", "Line_271_jupyter", "Line_272_jupyter", "Line_258_jupyter", "Line_279_jupyter", "Line_280_jupyter", "Line_281_jupyter", "Line_270_jupyter", "Line_283_jupyter", "Line_284_jupyter", "Line_285_jupyter", "Line_279_jupyter", "Line_288_jupyter", "Line_289_jupyter", "Line_290_jupyter", "Line_283_jupyter", "Line_294_jupyter", "Line_295_jupyter", "Line_296_jupyter", "Line_288_jupyter", "Line_298_jupyter", "Line_299_jupyter", "Line_300_jupyter", "Line_294_jupyter", "Line_303_jupyter", "Line_304_jupyter", "Line_305_jupyter", "Line_298_jupyter", "Line_309_jupyter", "Line_310_jupyter", "Line_311_jupyter", "Line_303_jupyter", "Line_320_jupyter", "Line_321_jupyter", "Line_322_jupyter", "Line_309_jupyter", "Line_325_jupyter", "Line_326_jupyter", "Line_327_jupyter", "Line_320_jupyter", "Line_329_jupyter", "Line_330_jupyter", "Line_331_jupyter", "Line_325_jupyter", "Line_338_jupyter", "Line_339_jupyter", "Line_340_jupyter", "Line_329_jupyter", "Line_343_jupyter", "Line_344_jupyter", "Line_345_jupyter", "Line_338_jupyter", "Line_347_jupyter", "Line_348_jupyter", "Line_349_jupyter", "Line_343_jupyter", "Line_352_jupyter", "Line_353_jupyter", "Line_354_jupyter", "Line_347_jupyter", "Line_361_jupyter", "Line_362_jupyter", "Line_363_jupyter", "Line_352_jupyter", "Line_366_jupyter", "Line_367_jupyter", "Line_368_jupyter", "Line_361_jupyter", "Line_370_jupyter", "Line_371_jupyter", "Line_372_jupyter", "Line_366_jupyter", "Line_374_jupyter", "Line_375_jupyter", "Line_376_jupyter", "Line_370_jupyter", "Line_378_jupyter", "Line_379_jupyter", "Line_380_jupyter", "Line_374_jupyter", "Line_382_jupyter", "Line_383_jupyter", "Line_384_jupyter", "Line_378_jupyter", "Line_386_jupyter", "Line_387_jupyter", "Line_388_jupyter", "Line_382_jupyter", "Line_390_jupyter", "Line_391_jupyter", "Line_392_jupyter", "Line_386_jupyter", "Line_394_jupyter", "Line_395_jupyter", "Line_396_jupyter", "Line_390_jupyter", "Line_403_jupyter", "Line_404_jupyter", "Line_405_jupyter", "Line_394_jupyter", "Line_412_jupyter", "Line_413_jupyter", "Line_414_jupyter", "Line_403_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:08:11.180414002Z",
"start_time" : "2025-11-08T13:08:10.183945850Z"
}
},
"cell_type" : "code",
"source" : [ "import kotlinx.coroutines.runBlocking\n", "\n", "val mod = \"elytra-trims\"\n", "val data = runBlocking {\n", " fetchModrinthVersions(mod).toDataFrame()\n", "}" ],
"id" : "4d880904a14791a4",
"outputs" : [ {
"name" : "stdout",
"output_type" : "stream",
"text" : [ "Fetched 344 MR versions for elytra-trims\n" ]
} ],
"execution_count" : 264
}, {
"metadata" : {
"executionRelatedData" : {
"compiledClasses" : [ "Line_66_jupyter", "Line_65_jupyter", "Line_80_jupyter", "Line_66_jupyter", "Line_81_jupyter", "Line_80_jupyter", "Line_82_jupyter", "Line_81_jupyter", "Line_83_jupyter", "Line_82_jupyter", "Line_90_jupyter", "Line_83_jupyter", "Line_98_jupyter", "Line_90_jupyter", "Line_116_jupyter", "Line_98_jupyter", "Line_124_jupyter", "Line_116_jupyter", "Line_128_jupyter", "Line_124_jupyter", "Line_135_jupyter", "Line_128_jupyter", "Line_136_jupyter", "Line_135_jupyter", "Line_140_jupyter", "Line_136_jupyter", "Line_141_jupyter", "Line_140_jupyter", "Line_145_jupyter", "Line_141_jupyter", "Line_152_jupyter", "Line_145_jupyter", "Line_158_jupyter", "Line_152_jupyter", "Line_164_jupyter", "Line_158_jupyter", "Line_169_jupyter", "Line_164_jupyter", "Line_173_jupyter", "Line_169_jupyter", "Line_174_jupyter", "Line_173_jupyter", "Line_178_jupyter", "Line_174_jupyter", "Line_183_jupyter", "Line_178_jupyter", "Line_188_jupyter", "Line_183_jupyter", "Line_192_jupyter", "Line_188_jupyter", "Line_196_jupyter", "Line_192_jupyter", "Line_218_jupyter", "Line_223_jupyter", "Line_218_jupyter", "Line_237_jupyter", "Line_223_jupyter", "Line_241_jupyter", "Line_237_jupyter", "Line_247_jupyter", "Line_241_jupyter", "Line_251_jupyter", "Line_247_jupyter", "Line_256_jupyter", "Line_251_jupyter", "Line_261_jupyter", "Line_256_jupyter", "Line_282_jupyter", "Line_261_jupyter", "Line_286_jupyter", "Line_282_jupyter", "Line_291_jupyter", "Line_286_jupyter", "Line_301_jupyter", "Line_291_jupyter", "Line_306_jupyter", "Line_301_jupyter", "Line_323_jupyter", "Line_306_jupyter", "Line_332_jupyter", "Line_323_jupyter", "Line_341_jupyter", "Line_332_jupyter", "Line_346_jupyter", "Line_341_jupyter", "Line_350_jupyter", "Line_346_jupyter", "Line_355_jupyter", "Line_350_jupyter", "Line_364_jupyter", "Line_355_jupyter", "Line_369_jupyter", "Line_364_jupyter", "Line_373_jupyter", "Line_369_jupyter", "Line_377_jupyter", "Line_373_jupyter", "Line_381_jupyter", "Line_377_jupyter", "Line_385_jupyter", "Line_381_jupyter", "Line_389_jupyter", "Line_385_jupyter", "Line_393_jupyter", "Line_389_jupyter", "Line_397_jupyter", "Line_393_jupyter", "Line_406_jupyter", "Line_397_jupyter", "Line_415_jupyter", "Line_406_jupyter" ]
},
"ExecuteTime" : {
"end_time" : "2025-11-08T13:08:12.401215789Z",
"start_time" : "2025-11-08T13:08:11.182149932Z"
}
},
"cell_type" : "code",
"source" : [ "data.groupBy { Loader }.plot {\n", " layout.title = \"$mod downloads\"\n", " bars {\n", " x(Version)\n", " y(Downloads)\n", "\n", " position = Position.stack()\n", " fillColor(Loader) {\n", " scale = categorical(\n", " \"fabric\" to Color.hex(\"#e09367\"),\n", " \"quilt\" to Color.hex(\"#e06777\"),\n", " \"fabric-like\" to Color.hex(\"#e0d067\"),\n", " \"neoforge\" to Color.hex(\"#3daf9e\"),\n", " \"forge\" to Color.hex(\"#3d87af\"),\n", " \"forge-like\" to Color.hex(\"#3d4eaf\"),\n", " \"mixed\" to Color.hex(\"#af3d3d\")\n", " )\n", " }\n", " }\n", " layout {\n", " size = 1250 to 800\n", " }\n", " facetGridX(Source)\n", "}" ],
"id" : "84a73e25ac8b5fe3",
"outputs" : [ {
"data" : {
"text/html" : [ " <iframe src='about:blank' style='border:none !important;' width='1250' height='800' srcdoc=\"&lt;html lang=&quot;en&quot;>\n", " &lt;head>\n", " &lt;meta charset=&quot;UTF-8&quot;>\n", " &lt;style> html, body { margin: 0; padding: 0; overflow: hidden; } &lt;/style>\n", " &lt;script type=&quot;text/javascript&quot; data-lets-plot-script=&quot;library&quot; src=&quot;https://cdn.jsdelivr.net/gh/JetBrains/[email protected]/js-package/distr/lets-plot.min.js&quot;>&lt;/script>\n", " &lt;/head>\n", " &lt;body>\n", " &lt;div id=&quot;Ozw4Jn&quot;>&lt;/div>\n", " &lt;script type=&quot;text/javascript&quot; data-lets-plot-script=&quot;plot&quot;>\n", " \n", " (function() {\n", " // ----------\n", " \n", " const forceImmediateRender = false;\n", " const responsive = false;\n", " \n", " let sizing = {\n", " width_mode: &quot;FIXED&quot;,\n", " height_mode: &quot;FIXED&quot;,\n", " width: 1250.0, \n", " height: 800.0 \n", " };\n", " \n", " const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n", " if (preferredWidth !== undefined) {\n", " sizing = {\n", " width_mode: 'FIXED',\n", " height_mode: 'SCALED',\n", " width: parseFloat(preferredWidth)\n", " };\n", " }\n", " \n", " const containerDiv = document.getElementById(&quot;Ozw4Jn&quot;);\n", " let fig = null;\n", " \n", " function renderPlot() {\n", " if (fig === null) {\n", " const plotSpec = {\n", "&quot;ggtitle&quot;:{\n", "&quot;text&quot;:&quot;elytra-trims downloads&quot;\n", "},\n", "&quot;mapping&quot;:{\n", "},\n", "&quot;data&quot;:{\n", "&quot;&amp;merged_groups&quot;:[&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;forge&quot;,&quot;forge&quot;,&quot;forge&quot;],\n", "&quot;Version&quot;:[&quot;1.21.9-1.21.10&quot;,&quot;1.21.6-1.21.8&quot;,&quot;1.21.5&quot;,&quot;1.21.4&quot;,&quot;1.21-1.21.1&quot;,&quot;1.20.5-1.20.6&quot;,&quot;1.21.9-1.21.10&quot;,&quot;1.21.6-1.21.8&quot;,&quot;1.21.5&quot;,&quot;1.21-1.21.1&quot;,&quot;1.20.6&quot;,&quot;1.20.4&quot;,&quot;1.20.4&quot;,&quot;1.20.2&quot;,&quot;1.20-1.20.1&quot;,&quot;1.19.4&quot;,&quot;1.20.2&quot;,&quot;1.20-1.20.1&quot;,&quot;1.19.4&quot;],\n", "&quot;Loader&quot;:[&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;fabric&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;neoforge&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;fabric-like&quot;,&quot;forge&quot;,&quot;forge&quot;,&quot;forge&quot;],\n", "&quot;Downloads&quot;:[8896.0,230196.0,7748.0,163132.0,68696.0,2534.0,209.0,2317.0,416.0,27743.0,291.0,588.0,13321.0,2607.0,253954.0,1242.0,894.0,145184.0,936.0],\n", "&quot;Source&quot;:[&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;,&quot;Modrinth&quot;]\n", "},\n", "&quot;ggsize&quot;:{\n", "&quot;width&quot;:1250.0,\n", "&quot;height&quot;:800.0\n", "},\n", "&quot;kind&quot;:&quot;plot&quot;,\n", "&quot;scales&quot;:[{\n", "&quot;aesthetic&quot;:&quot;x&quot;,\n", "&quot;discrete&quot;:true\n", "},{\n", "&quot;aesthetic&quot;:&quot;y&quot;,\n", "&quot;limits&quot;:[null,null]\n", "},{\n", "&quot;aesthetic&quot;:&quot;fill&quot;,\n", "&quot;values&quot;:[&quot;#e09367&quot;,&quot;#e06777&quot;,&quot;#e0d067&quot;,&quot;#3daf9e&quot;,&quot;#3d87af&quot;,&quot;#3d4eaf&quot;,&quot;#af3d3d&quot;],\n", "&quot;limits&quot;:[&quot;fabric&quot;,&quot;quilt&quot;,&quot;fabric-like&quot;,&quot;neoforge&quot;,&quot;forge&quot;,&quot;forge-like&quot;,&quot;mixed&quot;]\n", "}],\n", "&quot;layers&quot;:[{\n", "&quot;mapping&quot;:{\n", "&quot;x&quot;:&quot;Version&quot;,\n", "&quot;y&quot;:&quot;Downloads&quot;,\n", "&quot;fill&quot;:&quot;Loader&quot;,\n", "&quot;group&quot;:&quot;&amp;merged_groups&quot;\n", "},\n", "&quot;stat&quot;:&quot;identity&quot;,\n", "&quot;sampling&quot;:&quot;none&quot;,\n", "&quot;inherit_aes&quot;:false,\n", "&quot;position&quot;:&quot;stack&quot;,\n", "&quot;geom&quot;:&quot;bar&quot;,\n", "&quot;data&quot;:{\n", "}\n", "}],\n", "&quot;facet&quot;:{\n", "&quot;name&quot;:&quot;grid&quot;,\n", "&quot;x&quot;:&quot;Source&quot;,\n", "&quot;x_order&quot;:1.0,\n", "&quot;y_order&quot;:1.0\n", "},\n", "&quot;data_meta&quot;:{\n", "&quot;series_annotations&quot;:[{\n", "&quot;type&quot;:&quot;str&quot;,\n", "&quot;column&quot;:&quot;Loader&quot;\n", "},{\n", "&quot;type&quot;:&quot;str&quot;,\n", "&quot;column&quot;:&quot;Version&quot;\n", "},{\n", "&quot;type&quot;:&quot;int&quot;,\n", "&quot;column&quot;:&quot;Downloads&quot;\n", "},{\n", "&quot;type&quot;:&quot;str&quot;,\n", "&quot;column&quot;:&quot;Source&quot;\n", "},{\n", "&quot;type&quot;:&quot;str&quot;,\n", "&quot;column&quot;:&quot;&amp;merged_groups&quot;\n", "}]\n", "},\n", "&quot;spec_id&quot;:&quot;185&quot;\n", "};\n", " fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing);\n", " } else {\n", " fig.updateView({});\n", " }\n", " }\n", " \n", " const renderImmediately = \n", " forceImmediateRender || (\n", " sizing.width_mode === 'FIXED' &amp;&amp; \n", " (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n", " );\n", " \n", " if (renderImmediately) {\n", " renderPlot();\n", " }\n", " \n", " if (!renderImmediately || responsive) {\n", " // Set up observer for initial sizing or continuous monitoring\n", " var observer = new ResizeObserver(function(entries) {\n", " for (let entry of entries) {\n", " if (entry.contentBoxSize &amp;&amp; \n", " entry.contentBoxSize[0].inlineSize > 0) {\n", " if (!responsive &amp;&amp; observer) {\n", " observer.disconnect();\n", " observer = null;\n", " }\n", " renderPlot();\n", " if (!responsive) {\n", " break;\n", " }\n", " }\n", " }\n", " });\n", " \n", " observer.observe(containerDiv);\n", " }\n", " \n", " // ----------\n", " })();\n", " \n", " &lt;/script>\n", " &lt;/body>\n", "&lt;/html>\"></iframe> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=97071959-e057-4d6f-8174-1e738cb3be77 width=\"100%\" height=\"100%\" style=\"max-width: 1250.0px; max-height: 800.0px;\" viewBox=\"0 0 1250.0 800.0\" preserveAspectRatio=\"xMinYMin meet\">\n", " <style type=\"text/css\">\n", " .plt-container {\n", " font-family: sans-serif;\n", " user-select: none;\n", " -webkit-user-select: none;\n", " -moz-user-select: none;\n", " -ms-user-select: none;\n", "}\n", "text {\n", " text-rendering: optimizeLegibility;\n", "}\n", "#pn6ukjY .plot-title {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 16.0px;\n", "\n", "}\n", "#pn6ukjY .plot-subtitle {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 15.0px;\n", "\n", "}\n", "#pn6ukjY .plot-caption {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#pn6ukjY .hyperlink-element {\n", "fill: #118ed8;\n", "font-weight: normal;\n", " font-style: normal;\n", "}\n", "#pn6ukjY .legend-title {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 15.0px;\n", "\n", "}\n", "#pn6ukjY .legend-item {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#pn6ukjY .axis-title-x {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 15.0px;\n", "\n", "}\n", "#pn6ukjY .axis-text-x {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#d90guFD .axis-tooltip-text-x {\n", "fill: #ffffff;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#pn6ukjY .axis-title-y {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 15.0px;\n", "\n", "}\n", "#pn6ukjY .axis-text-y {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#d90guFD .axis-tooltip-text-y {\n", "fill: #ffffff;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#pn6ukjY .facet-strip-text-x {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#pn6ukjY .facet-strip-text-y {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#d90guFD .tooltip-text {\n", "fill: #474747;\n", "font-weight: normal;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#d90guFD .tooltip-title {\n", "fill: #474747;\n", "font-weight: bold;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "#d90guFD .tooltip-label {\n", "fill: #474747;\n", "font-weight: bold;\n", " font-style: normal;font-family: sans-serif;\n", "font-size: 13.0px;\n", "\n", "}\n", "\n", " </style>\n", " <g id=\"pn6ukjY\">\n", " <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 0.0 L0.0 800.0 L1250.0 800.0 L1250.0 0.0 Z\">\n", " </path>\n", " <g transform=\"translate(21.0 22.0 ) \">\n", " <g>\n", " <g transform=\"translate(54.95712304215423 19.0 ) \">\n", " <g>\n", " <line x1=\"60.84698835998898\" y1=\"0.0\" x2=\"60.84698835998898\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"154.45773968304894\" y1=\"0.0\" x2=\"154.45773968304894\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"248.0684910061089\" y1=\"0.0\" x2=\"248.0684910061089\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"341.67924232916886\" y1=\"0.0\" x2=\"341.67924232916886\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"435.2899936522288\" y1=\"0.0\" x2=\"435.2899936522288\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"528.9007449752887\" y1=\"0.0\" x2=\"528.9007449752887\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"622.5114962983487\" y1=\"0.0\" x2=\"622.5114962983487\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"716.1222476214086\" y1=\"0.0\" x2=\"716.1222476214086\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"809.7329989444686\" y1=\"0.0\" x2=\"809.7329989444686\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"903.3437502675285\" y1=\"0.0\" x2=\"903.3437502675285\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"996.9545015905885\" y1=\"0.0\" x2=\"996.9545015905885\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " </g>\n", " </g>\n", " <g transform=\"translate(54.95712304215423 19.0 ) \">\n", " <g>\n", " <line x1=\"0.0\" y1=\"703.4\" x2=\"1057.8014899505774\" y2=\"703.4\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"669.8324237780034\" x2=\"1057.8014899505774\" y2=\"669.8324237780034\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"636.264847556007\" x2=\"1057.8014899505774\" y2=\"636.264847556007\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"602.6972713340105\" x2=\"1057.8014899505774\" y2=\"602.6972713340105\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"569.129695112014\" x2=\"1057.8014899505774\" y2=\"569.129695112014\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"535.5621188900175\" x2=\"1057.8014899505774\" y2=\"535.5621188900175\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"501.99454266802104\" x2=\"1057.8014899505774\" y2=\"501.99454266802104\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"468.4269664460245\" x2=\"1057.8014899505774\" y2=\"468.4269664460245\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"434.859390224028\" x2=\"1057.8014899505774\" y2=\"434.859390224028\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"401.2918140020315\" x2=\"1057.8014899505774\" y2=\"401.2918140020315\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"367.724237780035\" x2=\"1057.8014899505774\" y2=\"367.724237780035\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"334.15666155803854\" x2=\"1057.8014899505774\" y2=\"334.15666155803854\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"300.58908533604205\" x2=\"1057.8014899505774\" y2=\"300.58908533604205\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"267.02150911404556\" x2=\"1057.8014899505774\" y2=\"267.02150911404556\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"233.453932892049\" x2=\"1057.8014899505774\" y2=\"233.453932892049\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"199.88635667005252\" x2=\"1057.8014899505774\" y2=\"199.88635667005252\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"166.31878044805603\" x2=\"1057.8014899505774\" y2=\"166.31878044805603\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"132.7512042260596\" x2=\"1057.8014899505774\" y2=\"132.7512042260596\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"99.18362800406305\" x2=\"1057.8014899505774\" y2=\"99.18362800406305\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"65.6160517820665\" x2=\"1057.8014899505774\" y2=\"65.6160517820665\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " <line x1=\"0.0\" y1=\"32.048475560070074\" x2=\"1057.8014899505774\" y2=\"32.048475560070074\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n", " </line>\n", " </g>\n", " </g>\n", " </g>\n", " <g clip-path=\"url(#cGi2kWU)\" clip-bounds-jfx=\"[rect (54.95712304215423, 19.0), (1057.8014899505774, 703.4)]\">\n", " <g transform=\"translate(54.95712304215423 19.0 ) \">\n", " <g>\n", " <g>\n", " <rect x=\"954.8296634952115\" y=\"699.7444909494245\" height=\"1.57096256718944\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,135,175)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"861.2189121721516\" y=\"33.495238095238165\" height=\"243.67374931071691\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,135,175)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"767.6081608490916\" y=\"697.5239957823395\" height=\"1.5004706571231736\" width=\"84.24967619075392\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,135,175)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"954.8296634952115\" y=\"701.315453516614\" height=\"2.0845464833860206\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,208,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"861.2189121721516\" y=\"277.1689874059551\" height=\"426.2310125940449\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,208,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"767.6081608490916\" y=\"699.0244664394627\" height=\"4.375533560537292\" width=\"84.24967619075392\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,208,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"673.9974095260317\" y=\"680.0554291164125\" height=\"22.357684142660787\" width=\"84.24967619075392\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,208,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"673.9974095260317\" y=\"702.4131132590733\" height=\"0.9868867409267068\" width=\"84.24967619075392\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"580.3866582029717\" y=\"702.9115917659699\" height=\"0.48840823403008926\" width=\"84.24967619075392\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"393.1651555568518\" y=\"541.5388258363439\" height=\"46.56326335634253\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"205.9436529107319\" y=\"689.697715386181\" height=\"0.6982055854175542\" width=\"84.24967619075395\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"112.33290158767196\" y=\"313.1551074947464\" height=\"3.8888037053183098\" width=\"84.24967619075397\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"18.722150264611997\" y=\"688.118360924936\" height=\"0.3507811715198841\" width=\"84.24967619075396\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"486.77590687991176\" y=\"699.146988092673\" height=\"4.253011907326936\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"393.1651555568518\" y=\"588.1020891926864\" height=\"115.29791080731354\" width=\"84.24967619075403\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"299.55440423379184\" y=\"429.60270778766335\" height=\"273.79729221233663\" width=\"84.24967619075397\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"205.9436529107319\" y=\"690.3959209715986\" height=\"13.004079028401407\" width=\"84.24967619075395\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"112.33290158767196\" y=\"317.0439112000647\" height=\"386.35608879993526\" width=\"84.24967619075397\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " <rect x=\"18.722150264611997\" y=\"688.4691420964559\" height=\"14.930857903544052\" width=\"84.24967619075396\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <defs>\n", " <clipPath id=\"cGi2kWU\">\n", " <rect x=\"54.95712304215423\" y=\"19.0\" width=\"1057.8014899505774\" height=\"703.4\">\n", " </rect>\n", " </clipPath>\n", " </defs>\n", " </g>\n", " <g>\n", " <g transform=\"translate(54.95712304215423 722.4 ) \">\n", " <g transform=\"translate(60.84698835998898 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.21.9-1.21.10</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(154.45773968304894 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 21.6 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.21.6-1.21.8</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(248.0684910061089 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.21.5</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(341.67924232916886 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 21.6 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.21.4</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(435.2899936522288 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.21-1.21.1</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(528.9007449752887 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 21.6 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.20.5-1.20.6</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(622.5114962983487 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.20.6</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(716.1222476214086 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 21.6 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.20.4</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(809.7329989444686 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.20.2</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(903.3437502675285 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 21.6 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.20-1.20.1</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(996.9545015905885 0.0 ) \">\n", " <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n", " </line>\n", " <g transform=\"translate(0.0 6.0 ) \">\n", " <text class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\" y=\"0.0\">\n", " <tspan>1.19.4</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <line x1=\"0.0\" y1=\"0.0\" x2=\"1057.8014899505774\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n", " </line>\n", " </g>\n", " <g transform=\"translate(54.95712304215423 19.0 ) \">\n", " <g transform=\"translate(0.0 703.4 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>0</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 669.8324237780034 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>20,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 636.264847556007 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>40,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 602.6972713340105 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>60,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 569.129695112014 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>80,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 535.5621188900175 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>100,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 501.99454266802104 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>120,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 468.4269664460245 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>140,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 434.859390224028 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>160,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 401.2918140020315 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>180,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 367.724237780035 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>200,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 334.15666155803854 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>220,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 300.58908533604205 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>240,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 267.02150911404556 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>260,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 233.453932892049 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>280,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 199.88635667005252 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>300,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 166.31878044805603 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>320,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 132.7512042260596 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>340,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 99.18362800406305 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>360,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 65.6160517820665 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>380,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 32.048475560070074 ) \">\n", " <g transform=\"translate(-2.0 0.0 ) \">\n", " <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\" y=\"0.0\">\n", " <tspan>400,000</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(583.8578680174429 13.4 ) \">\n", " <text class=\"facet-strip-text-x\" text-anchor=\"middle\" y=\"0.0\">\n", " <tspan>Modrinth</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(75.95712304215422 15.8 ) \">\n", " <text class=\"plot-title\" y=\"0.0\">\n", " <tspan>elytra-trims downloads</tspan>\n", " </text>\n", " </g>\n", " <g transform=\"translate(15.0 392.7 ) rotate(-90.0 ) \">\n", " <text class=\"axis-title-y\" y=\"0.0\" text-anchor=\"middle\">\n", " <tspan>Downloads</tspan>\n", " </text>\n", " </g>\n", " <g transform=\"translate(604.8578680174429 794.0 ) \">\n", " <text class=\"axis-title-x\" y=\"0.0\" text-anchor=\"middle\">\n", " <tspan>Version</tspan>\n", " </text>\n", " </g>\n", " <g transform=\"translate(1136.7586129927317 295.95 ) \">\n", " <rect x=\"0.0\" y=\"0.0\" height=\"193.5\" width=\"110.24138700726836\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\">\n", " </rect>\n", " <g transform=\"translate(5.0 5.0 ) \">\n", " <g transform=\"translate(0.0 12.0 ) \">\n", " <text class=\"legend-title\" y=\"0.0\">\n", " <tspan>Loader</tspan>\n", " </text>\n", " </g>\n", " <g transform=\"translate(0.0 22.5 ) \">\n", " <g transform=\"\">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,147,103)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>fabric</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 23.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,103,119)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>quilt</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 46.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(224,208,103)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>fabric-like</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 69.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,175,158)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>neoforge</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 92.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,135,175)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>forge</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 115.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(61,78,175)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>forge-like</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " <g transform=\"translate(0.0 138.0 ) \">\n", " <g>\n", " <g transform=\"translate(1.0 1.0 ) \">\n", " <g>\n", " <rect x=\"0.0\" y=\"0.0\" height=\"21.0\" width=\"21.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(175,61,61)\" fill-opacity=\"1.0\" stroke-width=\"1.5\">\n", " </rect>\n", " </g>\n", " </g>\n", " </g>\n", " <g transform=\"translate(26.9903027277341 11.5 ) \">\n", " <text class=\"legend-item\" y=\"0.0\" dy=\"0.35em\">\n", " <tspan>mixed</tspan>\n", " </text>\n", " </g>\n", " </g>\n", " </g>\n", " </g>\n", " </g>\n", " <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 0.0 L0.0 800.0 L1250.0 800.0 L1250.0 0.0 Z\" pointer-events=\"none\">\n", " </path>\n", " </g>\n", " <g id=\"d90guFD\">\n", " </g>\n", "</svg>\n", " <script>document.getElementById(\"97071959-e057-4d6f-8174-1e738cb3be77\").style.display = \"none\";</script>" ],
"application/plot+json" : {
"output_type" : "lets_plot_spec",
"output" : {
"ggtitle" : {
"text" : "elytra-trims downloads"
},
"mapping" : { },
"data" : {
"&merged_groups" : [ "fabric", "fabric", "fabric", "fabric", "fabric", "fabric", "neoforge", "neoforge", "neoforge", "neoforge", "neoforge", "neoforge", "fabric-like", "fabric-like", "fabric-like", "fabric-like", "forge", "forge", "forge" ],
"Version" : [ "1.21.9-1.21.10", "1.21.6-1.21.8", "1.21.5", "1.21.4", "1.21-1.21.1", "1.20.5-1.20.6", "1.21.9-1.21.10", "1.21.6-1.21.8", "1.21.5", "1.21-1.21.1", "1.20.6", "1.20.4", "1.20.4", "1.20.2", "1.20-1.20.1", "1.19.4", "1.20.2", "1.20-1.20.1", "1.19.4" ],
"Loader" : [ "fabric", "fabric", "fabric", "fabric", "fabric", "fabric", "neoforge", "neoforge", "neoforge", "neoforge", "neoforge", "neoforge", "fabric-like", "fabric-like", "fabric-like", "fabric-like", "forge", "forge", "forge" ],
"Downloads" : [ 8896.0, 230196.0, 7748.0, 163132.0, 68696.0, 2534.0, 209.0, 2317.0, 416.0, 27743.0, 291.0, 588.0, 13321.0, 2607.0, 253954.0, 1242.0, 894.0, 145184.0, 936.0 ],
"Source" : [ "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth", "Modrinth" ]
},
"ggsize" : {
"width" : 1250.0,
"height" : 800.0
},
"kind" : "plot",
"scales" : [ {
"aesthetic" : "x",
"discrete" : true
}, {
"aesthetic" : "y",
"limits" : [ null, null ]
}, {
"aesthetic" : "fill",
"values" : [ "#e09367", "#e06777", "#e0d067", "#3daf9e", "#3d87af", "#3d4eaf", "#af3d3d" ],
"limits" : [ "fabric", "quilt", "fabric-like", "neoforge", "forge", "forge-like", "mixed" ]
} ],
"layers" : [ {
"mapping" : {
"x" : "Version",
"y" : "Downloads",
"fill" : "Loader",
"group" : "&merged_groups"
},
"stat" : "identity",
"sampling" : "none",
"inherit_aes" : false,
"position" : "stack",
"geom" : "bar"
} ],
"facet" : {
"name" : "grid",
"x" : "Source",
"x_order" : 1.0,
"y_order" : 1.0
},
"data_meta" : {
"series_annotations" : [ {
"type" : "str",
"column" : "Loader"
}, {
"type" : "str",
"column" : "Version"
}, {
"type" : "int",
"column" : "Downloads"
}, {
"type" : "str",
"column" : "Source"
}, {
"type" : "str",
"column" : "&merged_groups"
} ]
}
},
"apply_color_scheme" : true,
"swing_enabled" : true
}
},
"execution_count" : 265,
"metadata" : { },
"output_type" : "execute_result"
} ],
"execution_count" : 265
} ],
"metadata" : {
"kernelspec" : {
"display_name" : "Kotlin",
"language" : "kotlin",
"name" : "kotlin"
},
"language_info" : {
"name" : "kotlin",
"version" : "2.2.20",
"mimetype" : "text/x-kotlin",
"file_extension" : ".kt",
"pygments_lexer" : "kotlin",
"codemirror_mode" : "text/x-kotlin",
"nbconvert_exporter" : ""
}
},
"nbformat" : 4,
"nbformat_minor" : 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment