Skip to content

Commit 0efd40b

Browse files
Upgraded Kotlin version to 1.5.21 and Gradle version to 7.1.1 (#416)
1 parent 6d0b318 commit 0efd40b

File tree

105 files changed

+444
-456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+444
-456
lines changed

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/dateFormat/Format.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class Format(private val spec: List<SpecPart>) {
8383
Pattern.HOUR_12_LEADING_ZERO -> leadZero(getHours12(dateTime))
8484
Pattern.HOUR_24 -> leadZero(getHours24(dateTime))
8585
Pattern.MERIDIAN_LOWER -> getMeridian(dateTime)
86-
Pattern.MERIDIAN_UPPER -> getMeridian(dateTime).toUpperCase()
86+
Pattern.MERIDIAN_UPPER -> getMeridian(dateTime).uppercase()
8787
Pattern.DAY_OF_WEEK -> getWeekDayNumber(dateTime)
8888
Pattern.DAY_OF_WEEK_ABBR -> DateLocale.weekDayAbbr[dateTime.weekDay] ?: ""
8989
Pattern.DAY_OF_WEEK_FULL -> DateLocale.weekDayFull[dateTime.weekDay] ?: ""

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/enums/EnumInfoImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class EnumInfoImpl<EnumT : Enum<EnumT>>(enumConstants: Array<EnumT>) : EnumInfo<
1414
get() = myOriginalNames
1515

1616
private fun toNormalizedName(name: String): String {
17-
return name.toUpperCase()
17+
return name.uppercase()
1818
}
1919

2020
init {

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/json/JsonSupport.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fun String.escape(): String {
6262
'\n' -> appendOutput("""\n""")
6363
'\r' -> appendOutput("""\r""")
6464
'\t' -> appendOutput("""\t""")
65-
in CONTROL_CHARS -> appendOutput("""\u${ch.toInt().toString(16).padStart(4, '0')}""")
65+
in CONTROL_CHARS -> appendOutput("""\u${ch.code.toString(16).padStart(4, '0')}""")
6666
else -> output?.append(ch)
6767
}
6868
i++

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/json/Utils.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fun <T : Enum<T>> parseEnum(enumStringValue: String, values: Array<T>): T =
3636
values.first { mode -> mode.toString().equals(enumStringValue, ignoreCase = true) }
3737

3838
inline fun <reified T : Enum<T>> parseEnum(enumStringValue: String): T = parseEnum(enumStringValue, enumValues<T>())
39-
fun <T : Enum<T>> formatEnum(enumValue: T): String = enumValue.toString().toLowerCase()
39+
fun <T : Enum<T>> formatEnum(enumValue: T): String = enumValue.toString().lowercase()
4040

4141
fun <T : Enum<T>> FluentObject.put(key: String, v: Collection<T>) = this.put(key, v.map { formatEnum(it) })
4242
fun FluentObject.put(key: String, v: List<String>) = put(key, FluentArray().addStrings(v.map { it }))

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/numberFormat/NumberFormat.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class NumberFormat(private val spec: Spec) {
8383
val (intStr, fracStr, exponentString) =
8484
"^(\\d+)\\.?(\\d+)?e?([+-]?\\d+)?\$"
8585
.toRegex()
86-
.find(num.toDouble().absoluteValue.toString().toLowerCase())
86+
.find(num.toDouble().absoluteValue.toString().lowercase())
8787
?.destructured
8888
?: error("Wrong number: $num")
8989

@@ -246,7 +246,7 @@ class NumberFormat(private val spec: Spec) {
246246
"g" -> toPrecisionFormat(numberInfo, spec.precision)
247247
"b" -> FormattedNumber(numberInfo.number.roundToLong().toString(2))
248248
"o" -> FormattedNumber(numberInfo.number.roundToLong().toString(8))
249-
"X" -> FormattedNumber(numberInfo.number.roundToLong().toString(16).toUpperCase())
249+
"X" -> FormattedNumber(numberInfo.number.roundToLong().toString(16).uppercase())
250250
"x" -> FormattedNumber(numberInfo.number.roundToLong().toString(16))
251251
"s" -> toSiFormat(numberInfo, spec.precision)
252252
else -> throw IllegalArgumentException("Wrong type: ${spec.type}")
@@ -417,7 +417,7 @@ class NumberFormat(private val spec: Spec) {
417417
private fun computePrefix(output: Output): Output {
418418
val prefix = when (spec.symbol) {
419419
"$" -> CURRENCY
420-
"#" -> if ("boxX".indexOf(spec.type) > -1) "0${spec.type.toLowerCase()}" else ""
420+
"#" -> if ("boxX".indexOf(spec.type) > -1) "0${spec.type.lowercase()}" else ""
421421
else -> ""
422422
}
423423
return output.copy(prefix = prefix)

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/spatial/GeoBoundingBoxCalculator.kt

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package jetbrains.datalore.base.spatial
77

8-
import jetbrains.datalore.base.gcommon.base.Preconditions
98
import jetbrains.datalore.base.gcommon.collect.ClosedRange
109
import jetbrains.datalore.base.spatial.LongitudeSegment.Companion.splitSegment
1110
import jetbrains.datalore.base.typedGeometry.*
@@ -14,8 +13,9 @@ import kotlin.math.min
1413

1514
// Segment have direction, i.e. `start` can be less than `end` for the case
1615
// of the antimeridian intersection.
17-
// Thats why we can't use ClosedRange class with lower <= upper invariant
16+
// That's why we can't use ClosedRange class with lower <= upper invariant
1817
typealias Segment = Pair<Double, Double>
18+
1919
val Segment.start get() = first
2020
val Segment.end get() = second
2121

@@ -64,7 +64,10 @@ class GeoBoundingBoxCalculator<TypeT>(
6464
}
6565

6666
companion object {
67-
internal fun calculateLoopLimitRange(segments: Sequence<Segment>, mapRange: ClosedRange<Double>): ClosedRange<Double> {
67+
internal fun calculateLoopLimitRange(
68+
segments: Sequence<Segment>,
69+
mapRange: ClosedRange<Double>
70+
): ClosedRange<Double> {
6871
return segments
6972
.map {
7073
splitSegment(
@@ -152,7 +155,7 @@ fun <T> GeoBoundingBoxCalculator<T>.geoRectsBBox(rectangles: List<GeoRectangle>)
152155
}
153156

154157
fun <T> GeoBoundingBoxCalculator<T>.pointsBBox(xyCoords: List<Double>): Rect<T> {
155-
Preconditions.checkArgument(xyCoords.size % 2 == 0, "Longitude-Latitude list is not even-numbered.")
158+
require(xyCoords.size % 2 == 0) { "Longitude-Latitude list is not even-numbered." }
156159
val x: (Int) -> Double = { index -> xyCoords[2 * index] }
157160
val y: (Int) -> Double = { index -> xyCoords[2 * index + 1] }
158161

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/stringFormat/StringFormat.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class StringFormat private constructor(
8787
// "{{text}}" -> "{text}"
8888
// "{.1f} -> 1.2
8989
// "{{{.1f}}} -> {1.2}
90-
private val BRACES_REGEX = Regex("""(?![^{]|\{\{)(\{([^{}]*)})(?=[^}]|}}|$)""")
90+
private val BRACES_REGEX = Regex("""(?![^{]|\{\{)(\{([^{}]*)\})(?=[^}]|\}\}|$)""")
9191
const val TEXT_IN_BRACES = 2
9292

9393
fun valueInLinePattern() = "{}"

base-portable/src/commonMain/kotlin/jetbrains/datalore/base/values/Colors.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ object Colors {
6565
}
6666

6767
fun isColorName(colorName: String): Boolean {
68-
return namedColors.containsKey(colorName.toLowerCase())
68+
return namedColors.containsKey(colorName.lowercase())
6969
}
7070

7171
fun forName(colorName: String): Color {
72-
return namedColors[colorName.toLowerCase()] ?: throw IllegalArgumentException()
72+
return namedColors[colorName.lowercase()] ?: throw IllegalArgumentException()
7373
}
7474

7575
fun generateHueColor(): Double {

base-portable/src/commonTest/kotlin/jetbrains/datalore/base/numberFormat/NumberFormatExtremesTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ class NumberFormatExtremesTest {
1313
fun typeS() {
1414
val f = NumberFormat(".3s")
1515
assertEquals("0.00y", f.apply(Double.MIN_VALUE))
16-
assertEquals("1000000000000000Y", f.apply(1E39))
16+
assertEquals("100000000000000Y", f.apply(1E38))
1717
assertEquals("0.00y", f.apply(-Double.MIN_VALUE))
18-
assertEquals("-1000000000000000Y", f.apply(-1E39))
18+
assertEquals("-100000000000000Y", f.apply(-1E38))
1919

2020
assertEquals("100Y", f.apply(NumberFormat.TYPE_S_MAX))
2121
assertEquals("-100Y", f.apply(-NumberFormat.TYPE_S_MAX))

base/src/jsMain/kotlin/jetbrains/datalore/base/encoding/Base64.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import kotlinx.browser.window
1010
actual object Base64 {
1111
actual fun decode(s: String): ByteArray {
1212
val bin = window.atob(s)
13-
return ByteArray(bin.length) { i -> bin[i].toByte()}
13+
return ByteArray(bin.length) { i -> bin[i].code.toByte() }
1414
}
1515

1616
actual fun encode(data: ByteArray): String {
17-
val binStr = data.fold(StringBuilder()) { str, byte -> str.append(byte.toChar()) }.toString()
17+
val binStr = data.fold(StringBuilder()) { str, byte -> str.append(byte.toInt().toChar()) }.toString()
1818
return window.btoa(binStr)
1919
}
2020
}

base/src/jsMain/kotlin/jetbrains/datalore/base/event/dom/DomKeyCodeMapper.kt

+36-36
Original file line numberDiff line numberDiff line change
@@ -41,46 +41,46 @@ internal object DomKeyCodeMapper {
4141
KEY_ARRAY[45] = Key.INSERT
4242
KEY_ARRAY[32] = Key.SPACE
4343

44-
KEY_ARRAY['A'.toInt()] = Key.A
45-
KEY_ARRAY['B'.toInt()] = Key.B
46-
KEY_ARRAY['C'.toInt()] = Key.C
47-
KEY_ARRAY['D'.toInt()] = Key.D
48-
KEY_ARRAY['E'.toInt()] = Key.E
49-
KEY_ARRAY['F'.toInt()] = Key.F
50-
KEY_ARRAY['G'.toInt()] = Key.G
51-
KEY_ARRAY['H'.toInt()] = Key.H
52-
KEY_ARRAY['I'.toInt()] = Key.I
53-
KEY_ARRAY['J'.toInt()] = Key.J
54-
KEY_ARRAY['K'.toInt()] = Key.K
55-
KEY_ARRAY['L'.toInt()] = Key.L
56-
KEY_ARRAY['M'.toInt()] = Key.M
57-
KEY_ARRAY['N'.toInt()] = Key.N
58-
KEY_ARRAY['O'.toInt()] = Key.O
59-
KEY_ARRAY['P'.toInt()] = Key.P
60-
KEY_ARRAY['Q'.toInt()] = Key.Q
61-
KEY_ARRAY['R'.toInt()] = Key.R
62-
KEY_ARRAY['S'.toInt()] = Key.S
63-
KEY_ARRAY['T'.toInt()] = Key.T
64-
KEY_ARRAY['U'.toInt()] = Key.U
65-
KEY_ARRAY['V'.toInt()] = Key.V
66-
KEY_ARRAY['W'.toInt()] = Key.W
67-
KEY_ARRAY['X'.toInt()] = Key.X
68-
KEY_ARRAY['Y'.toInt()] = Key.Y
69-
KEY_ARRAY['Z'.toInt()] = Key.Z
44+
KEY_ARRAY['A'.code] = Key.A
45+
KEY_ARRAY['B'.code] = Key.B
46+
KEY_ARRAY['C'.code] = Key.C
47+
KEY_ARRAY['D'.code] = Key.D
48+
KEY_ARRAY['E'.code] = Key.E
49+
KEY_ARRAY['F'.code] = Key.F
50+
KEY_ARRAY['G'.code] = Key.G
51+
KEY_ARRAY['H'.code] = Key.H
52+
KEY_ARRAY['I'.code] = Key.I
53+
KEY_ARRAY['J'.code] = Key.J
54+
KEY_ARRAY['K'.code] = Key.K
55+
KEY_ARRAY['L'.code] = Key.L
56+
KEY_ARRAY['M'.code] = Key.M
57+
KEY_ARRAY['N'.code] = Key.N
58+
KEY_ARRAY['O'.code] = Key.O
59+
KEY_ARRAY['P'.code] = Key.P
60+
KEY_ARRAY['Q'.code] = Key.Q
61+
KEY_ARRAY['R'.code] = Key.R
62+
KEY_ARRAY['S'.code] = Key.S
63+
KEY_ARRAY['T'.code] = Key.T
64+
KEY_ARRAY['U'.code] = Key.U
65+
KEY_ARRAY['V'.code] = Key.V
66+
KEY_ARRAY['W'.code] = Key.W
67+
KEY_ARRAY['X'.code] = Key.X
68+
KEY_ARRAY['Y'.code] = Key.Y
69+
KEY_ARRAY['Z'.code] = Key.Z
7070

7171
KEY_ARRAY[219] = Key.LEFT_BRACE
7272
KEY_ARRAY[221] = Key.RIGHT_BRACE
7373

74-
KEY_ARRAY['0'.toInt()] = Key.DIGIT_0
75-
KEY_ARRAY['1'.toInt()] = Key.DIGIT_1
76-
KEY_ARRAY['2'.toInt()] = Key.DIGIT_2
77-
KEY_ARRAY['3'.toInt()] = Key.DIGIT_3
78-
KEY_ARRAY['4'.toInt()] = Key.DIGIT_4
79-
KEY_ARRAY['5'.toInt()] = Key.DIGIT_5
80-
KEY_ARRAY['6'.toInt()] = Key.DIGIT_6
81-
KEY_ARRAY['7'.toInt()] = Key.DIGIT_7
82-
KEY_ARRAY['8'.toInt()] = Key.DIGIT_8
83-
KEY_ARRAY['9'.toInt()] = Key.DIGIT_9
74+
KEY_ARRAY['0'.code] = Key.DIGIT_0
75+
KEY_ARRAY['1'.code] = Key.DIGIT_1
76+
KEY_ARRAY['2'.code] = Key.DIGIT_2
77+
KEY_ARRAY['3'.code] = Key.DIGIT_3
78+
KEY_ARRAY['4'.code] = Key.DIGIT_4
79+
KEY_ARRAY['5'.code] = Key.DIGIT_5
80+
KEY_ARRAY['6'.code] = Key.DIGIT_6
81+
KEY_ARRAY['7'.code] = Key.DIGIT_7
82+
KEY_ARRAY['8'.code] = Key.DIGIT_8
83+
KEY_ARRAY['9'.code] = Key.DIGIT_9
8484

8585
KEY_ARRAY[112] = Key.F1
8686
KEY_ARRAY[113] = Key.F2

future_changes.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717

1818
### Changed
1919

20-
- Upgraded Apach Batik version to 1.14 (was 1.12) [[#398](https://github.com/JetBrains/lets-plot/issues/398)].
20+
- Upgraded Apach Batik version to 1.14 (was 1.12) [[#398](https://github.com/JetBrains/lets-plot/issues/398)].
21+
- Upgraded Kotlin version to 1.5.21 (was 1.4.21)
22+
- Upgraded Gradle version to 7.1.1 (was 6.8.3)
2123

2224
### Fixed
2325

gis/src/commonMain/kotlin/jetbrains/gis/geoprotocol/MapRegion.kt

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,20 @@
55

66
package jetbrains.gis.geoprotocol
77

8-
import jetbrains.datalore.base.gcommon.base.Preconditions
9-
108
class MapRegion private constructor(private val myKind: MapRegionKind, valueList: List<String>) {
119
private val myValueList: List<String>
1210

1311
val idList: List<String>
1412
get() {
15-
Preconditions.checkArgument(containsId(), "Can't get ids from MapRegion with name")
13+
require(containsId()) { "Can't get ids from MapRegion with name" }
1614

1715
return myValueList
1816
}
1917

2018
val name: String
2119
get() {
22-
Preconditions.checkArgument(containsName(), "Can't get name from MapRegion with ids")
23-
Preconditions.checkArgument(myValueList.size == 1, "MapRegion should contain one name")
20+
require(containsName()) { "Can't get name from MapRegion with ids" }
21+
require(myValueList.size == 1) { "MapRegion should contain one name" }
2422

2523
return myValueList[0]
2624
}

gis/src/commonMain/kotlin/jetbrains/gis/tileprotocol/TileService.kt

+13-5
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ open class TileService(socketBuilder: SocketBuilder, private val myTheme: Theme)
7474
}
7575

7676
private fun sendInitMessage() {
77-
ConfigureConnectionRequest(myTheme.name.toLowerCase())
77+
ConfigureConnectionRequest(myTheme.name.lowercase())
7878
.run(RequestFormatter::format)
7979
.run(::formatJson)
8080
.run(mySocket::send)
@@ -88,15 +88,21 @@ open class TileService(socketBuilder: SocketBuilder, private val myTheme: Theme)
8888
}
8989

9090
inner class TileSocketHandler : SocketHandler {
91-
override fun onOpen() { sendInitMessage() }
91+
override fun onOpen() {
92+
sendInitMessage()
93+
}
94+
9295
override fun onClose(message: String) {
9396
myMessageQueue.add(message)
9497
if (myStatus == CONFIGURED) {
9598
myStatus = CONNECTING
9699
mySocket.connect()
97100
}
98101
}
99-
override fun onError(cause: Throwable) { myStatus = ERROR; failPending(cause) }
102+
103+
override fun onError(cause: Throwable) {
104+
myStatus = ERROR; failPending(cause)
105+
}
100106

101107
override fun onTextMessage(message: String) {
102108
if (mapConfig == null) {
@@ -115,7 +121,9 @@ open class TileService(socketBuilder: SocketBuilder, private val myTheme: Theme)
115121
}
116122
}
117123

118-
private fun failPending(cause: Throwable) { pendingRequests.pollAll().values.forEach { it.failure(cause) } }
124+
private fun failPending(cause: Throwable) {
125+
pendingRequests.pollAll().values.forEach { it.failure(cause) }
126+
}
119127
}
120128

121129
class RequestMap {
@@ -130,7 +138,7 @@ open class TileService(socketBuilder: SocketBuilder, private val myTheme: Theme)
130138
return HashMap(myAsyncMap).also { myAsyncMap.clear() }
131139
}
132140

133-
fun poll(key: String): ThreadSafeAsync<List<TileLayer>> = lock.execute{
141+
fun poll(key: String): ThreadSafeAsync<List<TileLayer>> = lock.execute {
134142
return myAsyncMap.remove(key)!!
135143
}
136144
}

gis/webpack.config.d/gis-config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
const webpack = require('webpack');
22

33
config.plugins = config.plugins || [];
4-
config.plugins.push(new webpack.IgnorePlugin(/^(ws|text-encoding|abort-controller)$/));
4+
config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /^(ws|text-encoding|abort-controller|crypto)$/ }));

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
kotlin.code.style=official
77

88

9-
kotlin_version=1.4.21
9+
kotlin_version=1.5.21
1010
kotlinLogging_version=2.0.5
1111
idea_ext_version=0.7
1212

@@ -33,4 +33,4 @@ org.gradle.warning.mode=all
3333
# Increase build VM heap 512Mb --> 2Gb (since Kotlin 1.3.71)
3434
# With defaults (https://docs.gradle.org/current/userguide/build_environment.html#sec:configuring_jvm_memory)
3535
# Task :python-extension:compileKotlinNative --> OutOfMemoryError
36-
org.gradle.jvmargs=-Xmx2g
36+
org.gradle.jvmargs=-Xmx2g
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

js-package/webpack.config.d/js-package-config.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ config.output.library = "LetsPlot";
33
config.output.libraryTarget = "window";
44
config.output.globalObject = "window";
55

6-
config.node = config.node || {};
7-
config.node.Buffer = false;
8-
96
const webpack = require('webpack');
107

118
config.plugins = config.plugins || [];
12-
config.plugins.push(new webpack.IgnorePlugin(/^(ws|text-encoding|abort-controller|buffer|node-fetch)$/));
9+
config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /^(ws|text-encoding|abort-controller|buffer|node-fetch|crypto)$/ }));

livemap-demo/src/jsMain/kotlin/jetbrains/livemap/canvasDemo/BaseCanvasDemoJs.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import jetbrains.datalore.vis.canvas.Canvas
1212
import jetbrains.datalore.vis.canvas.dom.DomCanvasControl
1313
import jetbrains.livemap.demo.DemoBaseJs
1414
import org.w3c.dom.HTMLElement
15-
import kotlin.browser.document
15+
import kotlinx.browser.document
1616

1717
fun baseCanvasDemo(demoModel: (canvas: Canvas, createSnapshot: (String) -> Async<Canvas.Snapshot>) -> Unit) {
1818
val size = Vector(800, 600)
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
const webpack = require('webpack');
22

33
config.plugins = config.plugins || [];
4-
config.plugins.push(new webpack.IgnorePlugin(/^(ws|text-encoding|abort-controller)$/));
4+
config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /^(ws|text-encoding|abort-controller|crypto)$/ }));

livemap/src/commonMain/kotlin/jetbrains/livemap/Diagnostics.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ open class Diagnostics {
191191

192192
override fun update() {
193193
val counts = registry.tryGetSingleton<DownloadingFragmentsComponent>()
194-
?.let { "D: ${it.downloading.size} Q: ${it.queue.values.sumBy(MutableSet<FragmentKey>::size)}" }
194+
?.let { "D: ${it.downloading.size} Q: ${it.queue.values.sumOf(MutableSet<FragmentKey>::size)}" }
195195
?: "D: 0 Q: 0"
196196

197197
debugService.setValue(DOWNLOADING_FRAGMENTS, "Downloading fragments: $counts")

0 commit comments

Comments
 (0)