UNPKG

1.62 MBSource Map (JSON)View Raw
1{"version":3,"file":"kotlinx-coroutines-core.js","sources":["kotlin/collections.kt","runtime/arrayUtils.kt","generated/_Arrays.kt","coroutines/Continuation.kt","util/Preconditions.kt","util/Result.kt","../../../../../common/src/Delay.kt","../../../../../common/src/EventLoop.common.kt","text/StringBuilder.kt","../../../../../atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","kotlin/math.kt","util/HashCode.kt","generated/_ArraysJs.kt","../../../../../common/src/internal/LockFreeTaskQueue.kt","../../../../../js/src/JSDispatcher.kt","../../../../../common/src/AbstractCoroutine.kt","../../../../../js/src/Builders.kt","../../../../../common/src/Annotations.kt","../../../../../common/src/CancellableContinuation.kt","../../../../../common/src/Await.kt","generated/_Collections.kt","util/Standard.kt","../../../../../common/src/Builders.common.kt","../../../../../atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","../../../../../js/src/internal/Sharing.kt","../../../../../common/src/CancellableContinuationImpl.kt","../../../../../common/src/CompletableDeferred.kt","../../../../../common/src/CompletedExceptionally.kt","../../../../../common/src/CompletionHandler.common.kt","../../../../../common/src/CoroutineDispatcher.kt","../../../../../common/src/CoroutineExceptionHandler.kt","../../../../../common/src/CoroutineName.kt","../../../../../common/src/CoroutineScope.kt","../../../../../common/src/CoroutineStart.kt","../../../../../common/src/internal/ThreadSafeHeap.kt","../../../../../common/src/Exceptions.common.kt","../../../../../common/src/Job.kt","generated/_Sequences.kt","../../../../../common/src/JobSupport.kt","../../../../../js/src/internal/LinkedList.kt","../../../../../js/src/internal/StackTraceRecovery.kt","../../../../../common/src/MainCoroutineDispatcher.kt","../../../../../common/src/NonCancellable.kt","../../../../../common/src/Supervisor.kt","../../../../../common/src/Timeout.kt","../../../../../common/src/Unconfined.kt","../../../../../common/src/Yield.kt","../../../../../common/src/channels/AbstractChannel.kt","../../../../../common/src/internal/InlineList.kt","../../../../../common/src/channels/Channel.kt","../../../../../common/src/channels/ArrayBroadcastChannel.kt","../../../../../common/src/channels/ArrayChannel.kt","../../../../../common/src/channels/Broadcast.kt","../../../../../common/src/channels/BroadcastChannel.kt","../../../../../common/src/channels/ChannelCoroutine.kt","../../../../../common/src/channels/Channels.common.kt","collections/Maps.kt","collections/MutableCollections.kt","../../../../../common/src/channels/ConflatedBroadcastChannel.kt","../../../../../common/src/internal/Symbol.kt","../../../../../atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","../../../../../common/src/channels/ConflatedChannel.kt","../../../../../common/src/channels/LinkedListChannel.kt","../../../../../common/src/channels/Produce.kt","../../../../../common/src/channels/RendezvousChannel.kt","../../../../../common/src/flow/internal/SafeCollector.common.kt","../../../../../common/src/flow/Builders.kt","collections/Iterators.kt","../../../../../common/src/flow/Channels.kt","../../../../../common/src/flow/Flow.kt","../../../../../common/src/flow/operators/Merge.kt","../../../../../common/src/flow/terminal/Collect.kt","../../../../../common/src/flow/Migration.kt","../../../../../common/src/flow/operators/Zip.kt","../../../../../common/src/flow/StateFlow.kt","../../../../../common/src/flow/internal/ChannelFlow.kt","kotlin/coroutines/intrinsics/IntrinsicsJs.kt","../../../../../common/src/selects/Select.kt","../../../../../common/src/flow/internal/Combine.kt","../../../../../common/src/flow/internal/FlowCoroutine.kt","../../../../../common/src/flow/internal/FlowExceptions.common.kt","../../../../../common/src/flow/internal/Merge.kt","../../../../../common/src/flow/internal/NopCollector.kt","../../../../../common/src/flow/internal/SendingCollector.kt","../../../../../common/src/flow/operators/Context.kt","../../../../../common/src/flow/operators/Delay.kt","../../../../../common/src/flow/operators/Distinct.kt","../../../../../common/src/flow/operators/Emitters.kt","../../../../../common/src/flow/operators/Errors.kt","../../../../../common/src/flow/operators/Limit.kt","../../../../../common/src/flow/operators/Lint.kt","../../../../../common/src/flow/operators/Transform.kt","../../../../../common/src/flow/terminal/Collection.kt","../../../../../common/src/flow/terminal/Count.kt","../../../../../common/src/flow/terminal/Reduce.kt","../../../../../common/src/internal/ArrayQueue.kt","../../../../../common/src/internal/Atomic.kt","../../../../../common/src/internal/ConcurrentLinkedList.kt","../../../../../common/src/internal/DispatchedContinuation.kt","../../../../../common/src/internal/DispatchedTask.kt","../../../../../common/src/internal/MainDispatcherFactory.kt","../../../../../common/src/internal/Scopes.kt","../../../../../common/src/internal/SystemProps.common.kt","../../../../../common/src/intrinsics/Cancellable.kt","../../../../../common/src/intrinsics/Undispatched.kt","../../../../../js/src/Runnable.kt","../../../../../common/src/selects/SelectUnbiased.kt","collections/Collections.kt","../../../../../common/src/selects/WhileSelect.kt","../../../../../common/src/sync/Mutex.kt","../../../../../common/src/sync/Semaphore.kt","../../../../../js/src/CompletionHandler.kt","kotlin/jsTypeOf.kt","../../../../../js/src/CoroutineContext.kt","../../../../../js/src/CoroutineExceptionHandlerImpl.kt","../../../../../js/src/Debug.kt","../../../../../js/src/Dispatchers.kt","../../../../../js/src/EventLoop.kt","../../../../../js/src/Exceptions.kt","../../../../../js/src/Promise.kt","../../../../../js/src/SchedulerTask.kt","../../../../../js/src/Window.kt","../../../../../js/src/channels/ArrayBufferState.kt","../../../../../js/src/channels/ArrayChannelState.kt","../../../../../js/src/channels/ConflatedChannelState.kt","../../../../../js/src/flow/internal/FlowExceptions.kt","../../../../../js/src/flow/internal/SafeCollector.kt","../../../../../js/src/internal/Concurrent.kt","../../../../../js/src/internal/CopyOnWriteList.kt","kotlin/kotlin.kt","../../../../../js/src/internal/ManualMemoryManagement.kt","../../../../../js/src/internal/ProbesSupport.kt","../../../../../js/src/internal/SystemProps.kt","../../../../../js/src/internal/ThreadContext.kt","../../../../../js/src/internal/ThreadLocal.kt","../../../../../common/src/flow/internal/NullSurrogate.kt","../../../../../common/src/internal/LockFreeLinkedList.common.kt"],"sourcesContent":["/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\nimport kotlin.comparisons.naturalOrder\nimport kotlin.random.Random\n\n/** Returns the array if it's not `null`, or an empty array otherwise. */\n@kotlin.internal.InlineOnly\npublic actual inline fun <T> Array<out T>?.orEmpty(): Array<out T> = this ?: emptyArray<T>()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun <T> Collection<T>.toTypedArray(): Array<T> = copyToArray(this)\n\n@JsName(\"copyToArray\")\n@PublishedApi\ninternal fun <T> copyToArray(collection: Collection<T>): Array<T> {\n return if (collection.asDynamic().toArray !== undefined)\n collection.asDynamic().toArray().unsafeCast<Array<T>>()\n else\n copyToArrayImpl(collection).unsafeCast<Array<T>>()\n}\n\n@JsName(\"copyToArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>): Array<Any?> {\n val array = emptyArray<Any?>()\n val iterator = collection.iterator()\n while (iterator.hasNext())\n array.asDynamic().push(iterator.next())\n return array\n}\n\n@JsName(\"copyToExistingArrayImpl\")\ninternal actual fun <T> copyToArrayImpl(collection: Collection<*>, array: Array<T>): Array<T> {\n if (array.size < collection.size)\n return copyToArrayImpl(collection).unsafeCast<Array<T>>()\n\n val iterator = collection.iterator()\n var index = 0\n while (iterator.hasNext()) {\n array[index++] = iterator.next().unsafeCast<T>()\n }\n if (index < array.size) {\n array[index] = null.unsafeCast<T>()\n }\n return array\n}\n\n\n/**\n * Returns an immutable list containing only the specified object [element].\n */\npublic fun <T> listOf(element: T): List<T> = arrayListOf(element)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <E> buildListInternal(builderAction: MutableList<E>.() -> Unit): List<E> {\n return ArrayList<E>().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <E> buildListInternal(capacity: Int, builderAction: MutableList<E>.() -> Unit): List<E> {\n checkBuilderCapacity(capacity)\n return ArrayList<E>(capacity).apply(builderAction).build()\n}\n\n\n/**\n * Returns an immutable set containing only the specified object [element].\n */\npublic fun <T> setOf(element: T): Set<T> = hashSetOf(element)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <E> buildSetInternal(builderAction: MutableSet<E>.() -> Unit): Set<E> {\n return LinkedHashSet<E>().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <E> buildSetInternal(capacity: Int, builderAction: MutableSet<E>.() -> Unit): Set<E> {\n return LinkedHashSet<E>(capacity).apply(builderAction).build()\n}\n\n\n/**\n * Returns an immutable map, mapping only the specified key to the\n * specified value.\n */\npublic fun <K, V> mapOf(pair: Pair<K, V>): Map<K, V> = hashMapOf(pair)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <K, V> buildMapInternal(builderAction: MutableMap<K, V>.() -> Unit): Map<K, V> {\n return LinkedHashMap<K, V>().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun <K, V> buildMapInternal(capacity: Int, builderAction: MutableMap<K, V>.() -> Unit): Map<K, V> {\n return LinkedHashMap<K, V>(capacity).apply(builderAction).build()\n}\n\n\n/**\n * Fills the list with the provided [value].\n *\n * Each element in the list gets replaced with the [value].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun <T> MutableList<T>.fill(value: T): Unit {\n for (index in 0..lastIndex) {\n this[index] = value\n }\n}\n\n/**\n * Randomly shuffles elements in this list.\n *\n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.2\")\npublic actual fun <T> MutableList<T>.shuffle(): Unit = shuffle(Random)\n\n/**\n * Returns a new list with the elements of this list randomly shuffled.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun <T> Iterable<T>.shuffled(): List<T> = toMutableList().apply { shuffle() }\n\n/**\n * Sorts elements in the list in-place according to their natural sort order.\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun <T : Comparable<T>> MutableList<T>.sort(): Unit {\n collectionsSort(this, naturalOrder())\n}\n\n/**\n * Sorts elements in the list in-place according to the order specified with [comparator].\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun <T> MutableList<T>.sortWith(comparator: Comparator<in T>): Unit {\n collectionsSort(this, comparator)\n}\n\nprivate fun <T> collectionsSort(list: MutableList<T>, comparator: Comparator<in T>) {\n if (list.size <= 1) return\n\n val array = copyToArray(list)\n sortArrayWith(array, comparator)\n\n for (i in 0 until array.size) {\n list[i] = array[i]\n }\n}\n\ninternal actual fun <T> arrayOfNulls(reference: Array<T>, size: Int): Array<T> {\n return arrayOfNulls<Any>(size).unsafeCast<Array<T>>()\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@JsName(\"arrayCopy\")\ninternal fun <T> arrayCopy(source: Array<out T>, destination: Array<in T>, destinationOffset: Int, startIndex: Int, endIndex: Int) {\n AbstractList.checkRangeIndexes(startIndex, endIndex, source.size)\n val rangeSize = endIndex - startIndex\n AbstractList.checkRangeIndexes(destinationOffset, destinationOffset + rangeSize, destination.size)\n\n if (js(\"ArrayBuffer\").isView(destination) && js(\"ArrayBuffer\").isView(source)) {\n val subrange = source.asDynamic().subarray(startIndex, endIndex)\n destination.asDynamic().set(subrange, destinationOffset)\n } else {\n if (source !== destination || destinationOffset <= startIndex) {\n for (index in 0 until rangeSize) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n } else {\n for (index in rangeSize - 1 downTo 0) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n }\n }\n}\n\n// no singleton map implementation in js, return map as is\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun <K, V> Map<K, V>.toSingletonMapOrSelf(): Map<K, V> = this\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun <K, V> Map<out K, V>.toSingletonMap(): Map<K, V> = this.toMutableMap()\n\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun <T> Array<out T>.copyToArrayOfAny(isVarargs: Boolean): Array<out Any?> =\n if (isVarargs)\n // no need to copy vararg array in JS\n this\n else\n this.copyOf()\n\n\n\n@PublishedApi\ninternal actual fun checkIndexOverflow(index: Int): Int {\n if (index < 0) {\n throwIndexOverflow()\n }\n return index\n}\n\n@PublishedApi\ninternal actual fun checkCountOverflow(count: Int): Int {\n if (count < 0) {\n throwCountOverflow()\n }\n return count\n}\n\n\n/**\n * JS map and set implementations do not make use of capacities or load factors.\n */\n@PublishedApi\ninternal actual fun mapCapacity(expectedSize: Int) = expectedSize\n\n/**\n * Checks a collection builder function capacity argument.\n * In JS no validation is made in Map/Set constructor yet.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@PublishedApi\ninternal fun checkBuilderCapacity(capacity: Int) {\n require(capacity >= 0) { \"capacity must be non-negative.\" }\n}","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\n@PublishedApi\nexternal internal fun <T> Array(size: Int): Array<T>\n\n@JsName(\"newArray\")\nfun <T> newArray(size: Int, initValue: T) = fillArrayVal(Array<T>(size), initValue)\n\n@JsName(\"newArrayF\")\ninline fun <T> arrayWithFun(size: Int, init: (Int) -> T) = fillArrayFun(Array<T>(size), init)\n\n@JsName(\"fillArray\")\ninline fun <T> fillArrayFun(array: Array<T>, init: (Int) -> T): Array<T> {\n for (i in 0..array.size - 1) {\n array[i] = init(i)\n }\n return array\n}\n\n@JsName(\"booleanArray\")\nfun booleanArray(size: Int, init: dynamic): Array<Boolean> {\n val result: dynamic = Array<Boolean>(size)\n result.`$type$` = \"BooleanArray\"\n return when (init) {\n null, true -> fillArrayVal(result, false)\n false -> result\n else -> fillArrayFun<Boolean>(result, init)\n }\n}\n\n@JsName(\"booleanArrayF\")\ninline fun booleanArrayWithFun(size: Int, init: (Int) -> Boolean): Array<Boolean> = fillArrayFun(booleanArray(size, false), init)\n\n@JsName(\"charArray\")\n@Suppress(\"UNUSED_PARAMETER\")\nfun charArray(size: Int, init: dynamic): Array<Char> {\n val result = js(\"new Uint16Array(size)\")\n result.`$type$` = \"CharArray\"\n return when (init) {\n null, true, false -> result // For consistency\n else -> fillArrayFun<Char>(result, init)\n }\n}\n\n@JsName(\"charArrayF\")\ninline fun charArrayWithFun(size: Int, init: (Int) -> Char): Array<Char> {\n val array = charArray(size, null)\n for (i in 0..array.size - 1) {\n @Suppress(\"UNUSED_VARIABLE\") // used in js block\n val value = init(i)\n js(\"array[i] = value;\")\n }\n return array\n}\n\n@JsName(\"untypedCharArrayF\")\ninline fun untypedCharArrayWithFun(size: Int, init: (Int) -> Char): Array<Char> {\n val array = Array<Char>(size)\n for (i in 0..array.size - 1) {\n @Suppress(\"UNUSED_VARIABLE\") // used in js block\n val value = init(i)\n js(\"array[i] = value;\")\n }\n return array\n}\n\n@JsName(\"longArray\")\nfun longArray(size: Int, init: dynamic): Array<Long> {\n val result: dynamic = Array<Long>(size)\n result.`$type$` = \"LongArray\"\n return when (init) {\n null, true -> fillArrayVal(result, 0L)\n false -> result\n else -> fillArrayFun<Long>(result, init)\n }\n}\n\n@JsName(\"longArrayF\")\ninline fun longArrayWithFun(size: Int, init: (Int) -> Long): Array<Long> = fillArrayFun(longArray(size, false), init)\n\nprivate fun <T> fillArrayVal(array: Array<T>, initValue: T): Array<T> {\n for (i in 0..array.size - 1) {\n array[i] = initValue\n }\n return array\n}","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Array<out T>.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component1(): Byte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component1(): Short {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component1(): Int {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component1(): Long {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component1(): Float {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component1(): Double {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component1(): Boolean {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component1(): Char {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Array<out T>.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component2(): Byte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component2(): Short {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component2(): Int {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component2(): Long {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component2(): Float {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component2(): Double {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component2(): Boolean {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component2(): Char {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Array<out T>.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component3(): Byte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component3(): Short {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component3(): Int {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component3(): Long {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component3(): Float {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component3(): Double {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component3(): Boolean {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component3(): Char {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Array<out T>.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component4(): Byte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component4(): Short {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component4(): Int {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component4(): Long {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component4(): Float {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component4(): Double {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component4(): Boolean {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component4(): Char {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Array<out T>.component5(): T {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component5(): Byte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component5(): Short {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component5(): Int {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component5(): Long {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component5(): Float {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component5(): Double {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component5(): Boolean {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component5(): Char {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Array<out T>.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ByteArray.contains(element: Byte): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ShortArray.contains(element: Short): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun IntArray.contains(element: Int): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun LongArray.contains(element: Long): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'any { it == element }' instead to continue using this behavior, or '.asList().contains(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"any { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@Suppress(\"DEPRECATION\")\npublic operator fun FloatArray.contains(element: Float): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'any { it == element }' instead to continue using this behavior, or '.asList().contains(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"any { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@Suppress(\"DEPRECATION\")\npublic operator fun DoubleArray.contains(element: Double): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun BooleanArray.contains(element: Boolean): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun CharArray.contains(element: Char): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun <T> Array<out T>.elementAt(index: Int): T\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ByteArray.elementAt(index: Int): Byte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ShortArray.elementAt(index: Int): Short\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun IntArray.elementAt(index: Int): Int\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun LongArray.elementAt(index: Int): Long\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun FloatArray.elementAt(index: Int): Float\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun DoubleArray.elementAt(index: Int): Double\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun BooleanArray.elementAt(index: Int): Boolean\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharArray.elementAt(index: Int): Char\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrNull(index: Int): Byte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrNull(index: Int): Short? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrNull(index: Int): Int? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrNull(index: Int): Long? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrNull(index: Int): Float? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrNull(index: Int): Double? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.find(predicate: (Int) -> Boolean): Int? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.find(predicate: (Long) -> Boolean): Long? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun <T> Array<out T>.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.first(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.first(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.first(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.first(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.first(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.first(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.first(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun <T> Array<out T>.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.first(predicate: (Short) -> Boolean): Short {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.first(predicate: (Int) -> Boolean): Int {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.first(predicate: (Long) -> Boolean): Long {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.first(predicate: (Float) -> Boolean): Float {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun <T> Array<out T>.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ByteArray.firstOrNull(): Byte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ShortArray.firstOrNull(): Short? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun IntArray.firstOrNull(): Int? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun LongArray.firstOrNull(): Long? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun FloatArray.firstOrNull(): Float? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun DoubleArray.firstOrNull(): Double? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun BooleanArray.firstOrNull(): Boolean? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun CharArray.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun <T> Array<out T>.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun <T> Array<out T>.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun ByteArray.getOrNull(index: Int): Byte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun ShortArray.getOrNull(index: Int): Short? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun IntArray.getOrNull(index: Int): Int? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun LongArray.getOrNull(index: Int): Long? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun FloatArray.getOrNull(index: Int): Float? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun DoubleArray.getOrNull(index: Int): Double? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun BooleanArray.getOrNull(index: Int): Boolean? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun CharArray.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array<out T>.indexOf(element: T): Int {\n if (element == null) {\n for (index in indices) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.indexOf(element: Byte): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.indexOf(element: Short): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.indexOf(element: Int): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.indexOf(element: Long): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfFirst { it == element }' instead to continue using this behavior, or '.asList().indexOf(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"indexOfFirst { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.indexOf(element: Float): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfFirst { it == element }' instead to continue using this behavior, or '.asList().indexOf(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"indexOfFirst { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.indexOf(element: Double): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.indexOf(element: Boolean): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.indexOf(element: Char): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun <T> Array<out T>.indexOfFirst(predicate: (T) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun <T> Array<out T>.indexOfLast(predicate: (T) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun <T> Array<out T>.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.last(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.last(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.last(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.last(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.last(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.last(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.last(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun <T> Array<out T>.last(predicate: (T) -> Boolean): T {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.last(predicate: (Short) -> Boolean): Short {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.last(predicate: (Int) -> Boolean): Int {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.last(predicate: (Long) -> Boolean): Long {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.last(predicate: (Float) -> Boolean): Float {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array<out T>.lastIndexOf(element: T): Int {\n if (element == null) {\n for (index in indices.reversed()) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.lastIndexOf(element: Byte): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.lastIndexOf(element: Short): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.lastIndexOf(element: Int): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.lastIndexOf(element: Long): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfLast { it == element }' instead to continue using this behavior, or '.asList().lastIndexOf(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"indexOfLast { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.lastIndexOf(element: Float): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@Deprecated(\"The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfLast { it == element }' instead to continue using this behavior, or '.asList().lastIndexOf(element: T)' to get the same search behavior as in a list.\", ReplaceWith(\"indexOfLast { it == element }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.lastIndexOf(element: Double): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.lastIndexOf(element: Boolean): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.lastIndexOf(element: Char): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun <T> Array<out T>.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ByteArray.lastOrNull(): Byte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ShortArray.lastOrNull(): Short? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun IntArray.lastOrNull(): Int? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun LongArray.lastOrNull(): Long? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun FloatArray.lastOrNull(): Float? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun DoubleArray.lastOrNull(): Double? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun BooleanArray.lastOrNull(): Boolean? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun CharArray.lastOrNull(): Char? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun <T> Array<out T>.lastOrNull(predicate: (T) -> Boolean): T? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.random(): Byte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.random(): Short {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.random(): Float {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.random(): Double {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.random(): Boolean {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun <T> Array<out T>.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ByteArray.random(random: Random): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ShortArray.random(random: Random): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntArray.random(random: Random): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongArray.random(random: Random): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun FloatArray.random(random: Random): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun DoubleArray.random(random: Random): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun BooleanArray.random(random: Random): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharArray.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.randomOrNull(): Byte? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.randomOrNull(): Short? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.randomOrNull(): Int? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.randomOrNull(): Long? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.randomOrNull(): Float? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.randomOrNull(): Double? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.randomOrNull(): Boolean? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> Array<out T>.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun ByteArray.randomOrNull(random: Random): Byte? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun ShortArray.randomOrNull(random: Random): Short? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun IntArray.randomOrNull(random: Random): Int? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun LongArray.randomOrNull(random: Random): Long? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun FloatArray.randomOrNull(random: Random): Float? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun DoubleArray.randomOrNull(random: Random): Double? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun BooleanArray.randomOrNull(random: Random): Boolean? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun CharArray.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun <T> Array<out T>.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ByteArray.single(): Byte {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ShortArray.single(): Short {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun IntArray.single(): Int {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun LongArray.single(): Long {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun FloatArray.single(): Float {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun DoubleArray.single(): Double {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun BooleanArray.single(): Boolean {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun CharArray.single(): Char {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun <T> Array<out T>.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Byte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ShortArray.single(predicate: (Short) -> Boolean): Short {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Short\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun IntArray.single(predicate: (Int) -> Boolean): Int {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Int\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun LongArray.single(predicate: (Long) -> Boolean): Long {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Long\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun FloatArray.single(predicate: (Float) -> Boolean): Float {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Float\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Double\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Boolean\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun CharArray.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun <T> Array<out T>.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ByteArray.singleOrNull(): Byte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ShortArray.singleOrNull(): Short? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun IntArray.singleOrNull(): Int? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun LongArray.singleOrNull(): Long? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun FloatArray.singleOrNull(): Float? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun DoubleArray.singleOrNull(): Double? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun BooleanArray.singleOrNull(): Boolean? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun CharArray.singleOrNull(): Char? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun <T> Array<out T>.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> Array<out T>.drop(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.drop(n: Int): List<Byte> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.drop(n: Int): List<Short> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.drop(n: Int): List<Int> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.drop(n: Int): List<Long> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.drop(n: Int): List<Float> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.drop(n: Int): List<Double> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.drop(n: Int): List<Boolean> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.drop(n: Int): List<Char> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> Array<out T>.dropLast(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.dropLast(n: Int): List<Byte> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.dropLast(n: Int): List<Short> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.dropLast(n: Int): List<Int> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.dropLast(n: Int): List<Long> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.dropLast(n: Int): List<Float> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.dropLast(n: Int): List<Double> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.dropLast(n: Int): List<Boolean> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.dropLast(n: Int): List<Char> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun <T> Array<out T>.dropLastWhile(predicate: (T) -> Boolean): List<T> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List<Byte> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List<Short> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List<Int> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List<Long> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List<Float> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List<Double> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List<Boolean> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List<Char> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun <T> Array<out T>.dropWhile(predicate: (T) -> Boolean): List<T> {\n var yielding = false\n val list = ArrayList<T>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List<Byte> {\n var yielding = false\n val list = ArrayList<Byte>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List<Short> {\n var yielding = false\n val list = ArrayList<Short>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List<Int> {\n var yielding = false\n val list = ArrayList<Int>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List<Long> {\n var yielding = false\n val list = ArrayList<Long>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List<Float> {\n var yielding = false\n val list = ArrayList<Float>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List<Double> {\n var yielding = false\n val list = ArrayList<Double>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List<Boolean> {\n var yielding = false\n val list = ArrayList<Boolean>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List<Char> {\n var yielding = false\n val list = ArrayList<Char>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun <T> Array<out T>.filter(predicate: (T) -> Boolean): List<T> {\n return filterTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List<Byte> {\n return filterTo(ArrayList<Byte>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filter(predicate: (Short) -> Boolean): List<Short> {\n return filterTo(ArrayList<Short>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filter(predicate: (Int) -> Boolean): List<Int> {\n return filterTo(ArrayList<Int>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filter(predicate: (Long) -> Boolean): List<Long> {\n return filterTo(ArrayList<Long>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filter(predicate: (Float) -> Boolean): List<Float> {\n return filterTo(ArrayList<Float>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List<Double> {\n return filterTo(ArrayList<Double>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List<Boolean> {\n return filterTo(ArrayList<Boolean>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filter(predicate: (Char) -> Boolean): List<Char> {\n return filterTo(ArrayList<Char>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun <T> Array<out T>.filterIndexed(predicate: (index: Int, T) -> Boolean): List<T> {\n return filterIndexedTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List<Byte> {\n return filterIndexedTo(ArrayList<Byte>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List<Short> {\n return filterIndexedTo(ArrayList<Short>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List<Int> {\n return filterIndexedTo(ArrayList<Int>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List<Long> {\n return filterIndexedTo(ArrayList<Long>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List<Float> {\n return filterIndexedTo(ArrayList<Float>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List<Double> {\n return filterIndexedTo(ArrayList<Double>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List<Boolean> {\n return filterIndexedTo(ArrayList<Boolean>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List<Char> {\n return filterIndexedTo(ArrayList<Char>(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Array<out T>.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Byte>> ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Short>> ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Int>> IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Long>> LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Float>> FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Double>> DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Boolean>> BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <C : MutableCollection<in Char>> CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstance\n */\npublic inline fun <reified R> Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList<R>())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstanceTo\n */\npublic inline fun <reified R, C : MutableCollection<in R>> Array<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun <T> Array<out T>.filterNot(predicate: (T) -> Boolean): List<T> {\n return filterNotTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List<Byte> {\n return filterNotTo(ArrayList<Byte>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List<Short> {\n return filterNotTo(ArrayList<Short>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List<Int> {\n return filterNotTo(ArrayList<Int>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List<Long> {\n return filterNotTo(ArrayList<Long>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List<Float> {\n return filterNotTo(ArrayList<Float>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List<Double> {\n return filterNotTo(ArrayList<Double>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List<Boolean> {\n return filterNotTo(ArrayList<Boolean>(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List<Char> {\n return filterNotTo(ArrayList<Char>(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun <T : Any> Array<out T?>.filterNotNull(): List<T> {\n return filterNotNullTo(ArrayList<T>())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterNotNullTo\n */\npublic fun <C : MutableCollection<in T>, T : Any> Array<out T?>.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Array<out T>.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Byte>> ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Short>> ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Int>> IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Long>> LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Float>> FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Double>> DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Boolean>> BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Char>> CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Array<out T>.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Byte>> ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Short>> ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Int>> IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Long>> LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Float>> FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Double>> DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Boolean>> BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <C : MutableCollection<in Char>> CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun <T> Array<out T>.slice(indices: IntRange): List<T> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.slice(indices: IntRange): List<Byte> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.slice(indices: IntRange): List<Short> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.slice(indices: IntRange): List<Int> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.slice(indices: IntRange): List<Long> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.slice(indices: IntRange): List<Float> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.slice(indices: IntRange): List<Double> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.slice(indices: IntRange): List<Boolean> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.slice(indices: IntRange): List<Char> {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun <T> Array<out T>.slice(indices: Iterable<Int>): List<T> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<T>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ByteArray.slice(indices: Iterable<Int>): List<Byte> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Byte>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ShortArray.slice(indices: Iterable<Int>): List<Short> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Short>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun IntArray.slice(indices: Iterable<Int>): List<Int> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Int>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun LongArray.slice(indices: Iterable<Int>): List<Long> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Long>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun FloatArray.slice(indices: Iterable<Int>): List<Float> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Float>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun DoubleArray.slice(indices: Iterable<Int>): List<Double> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Double>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun BooleanArray.slice(indices: Iterable<Int>): List<Boolean> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Boolean>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun CharArray.slice(indices: Iterable<Int>): List<Char> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<Char>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun <T> Array<T>.sliceArray(indices: Collection<Int>): Array<T> {\n val result = arrayOfNulls(this, indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ByteArray.sliceArray(indices: Collection<Int>): ByteArray {\n val result = ByteArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ShortArray.sliceArray(indices: Collection<Int>): ShortArray {\n val result = ShortArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun IntArray.sliceArray(indices: Collection<Int>): IntArray {\n val result = IntArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun LongArray.sliceArray(indices: Collection<Int>): LongArray {\n val result = LongArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun FloatArray.sliceArray(indices: Collection<Int>): FloatArray {\n val result = FloatArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun DoubleArray.sliceArray(indices: Collection<Int>): DoubleArray {\n val result = DoubleArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun BooleanArray.sliceArray(indices: Collection<Int>): BooleanArray {\n val result = BooleanArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun CharArray.sliceArray(indices: Collection<Int>): CharArray {\n val result = CharArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun <T> Array<T>.sliceArray(indices: IntRange): Array<T> {\n if (indices.isEmpty()) return copyOfRange(0, 0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.sliceArray(indices: IntRange): ByteArray {\n if (indices.isEmpty()) return ByteArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.sliceArray(indices: IntRange): ShortArray {\n if (indices.isEmpty()) return ShortArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.sliceArray(indices: IntRange): IntArray {\n if (indices.isEmpty()) return IntArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.sliceArray(indices: IntRange): LongArray {\n if (indices.isEmpty()) return LongArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.sliceArray(indices: IntRange): FloatArray {\n if (indices.isEmpty()) return FloatArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.sliceArray(indices: IntRange): DoubleArray {\n if (indices.isEmpty()) return DoubleArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.sliceArray(indices: IntRange): BooleanArray {\n if (indices.isEmpty()) return BooleanArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.sliceArray(indices: IntRange): CharArray {\n if (indices.isEmpty()) return CharArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> Array<out T>.take(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<T>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.take(n: Int): List<Byte> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Byte>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.take(n: Int): List<Short> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Short>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.take(n: Int): List<Int> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Int>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.take(n: Int): List<Long> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Long>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.take(n: Int): List<Float> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Float>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.take(n: Int): List<Double> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Double>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.take(n: Int): List<Boolean> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Boolean>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.take(n: Int): List<Char> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList<Char>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> Array<out T>.takeLast(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<T>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.takeLast(n: Int): List<Byte> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Byte>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.takeLast(n: Int): List<Short> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Short>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.takeLast(n: Int): List<Int> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Int>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.takeLast(n: Int): List<Long> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Long>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.takeLast(n: Int): List<Float> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Float>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.takeLast(n: Int): List<Double> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Double>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.takeLast(n: Int): List<Boolean> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Boolean>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.takeLast(n: Int): List<Char> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList<Char>(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun <T> Array<out T>.takeLastWhile(predicate: (T) -> Boolean): List<T> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List<Byte> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List<Short> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List<Int> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List<Long> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List<Float> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List<Double> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List<Boolean> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List<Char> {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun <T> Array<out T>.takeWhile(predicate: (T) -> Boolean): List<T> {\n val list = ArrayList<T>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List<Byte> {\n val list = ArrayList<Byte>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List<Short> {\n val list = ArrayList<Short>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List<Int> {\n val list = ArrayList<Int>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List<Long> {\n val list = ArrayList<Long>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List<Float> {\n val list = ArrayList<Float>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List<Double> {\n val list = ArrayList<Double>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List<Boolean> {\n val list = ArrayList<Boolean>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List<Char> {\n val list = ArrayList<Char>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun <T> Array<T>.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ByteArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ShortArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun IntArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun LongArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun FloatArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun DoubleArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun BooleanArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun CharArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Array<T>.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun BooleanArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements of the array in the specified range in-place.\n * \n * @param fromIndex the start of the range (inclusive) to reverse.\n * @param toIndex the end of the range (exclusive) to reverse.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val midPoint = (fromIndex + toIndex) / 2\n if (fromIndex == midPoint) return\n var reverseIndex = toIndex - 1\n for (index in fromIndex until midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun <T> Array<out T>.reversed(): List<T> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ByteArray.reversed(): List<Byte> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ShortArray.reversed(): List<Short> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun IntArray.reversed(): List<Int> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun LongArray.reversed(): List<Long> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun FloatArray.reversed(): List<Float> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun DoubleArray.reversed(): List<Double> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun BooleanArray.reversed(): List<Boolean> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun CharArray.reversed(): List<Char> {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun <T> Array<T>.reversedArray(): Array<T> {\n if (isEmpty()) return this\n val result = arrayOfNulls(this, size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ByteArray.reversedArray(): ByteArray {\n if (isEmpty()) return this\n val result = ByteArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ShortArray.reversedArray(): ShortArray {\n if (isEmpty()) return this\n val result = ShortArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun IntArray.reversedArray(): IntArray {\n if (isEmpty()) return this\n val result = IntArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun LongArray.reversedArray(): LongArray {\n if (isEmpty()) return this\n val result = LongArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun FloatArray.reversedArray(): FloatArray {\n if (isEmpty()) return this\n val result = FloatArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun DoubleArray.reversedArray(): DoubleArray {\n if (isEmpty()) return this\n val result = DoubleArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun BooleanArray.reversedArray(): BooleanArray {\n if (isEmpty()) return this\n val result = BooleanArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun CharArray.reversedArray(): CharArray {\n if (isEmpty()) return this\n val result = CharArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Array<T>.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun BooleanArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Array<T>.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun BooleanArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> Array<out T>.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> Array<out T>.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Array<out T>.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun IntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun LongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun FloatArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun DoubleArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun CharArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Array<out T>.sorted(): List<T> {\n return sortedArray().asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ByteArray.sorted(): List<Byte> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ShortArray.sorted(): List<Short> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun IntArray.sorted(): List<Int> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun LongArray.sorted(): List<Long> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun FloatArray.sorted(): List<Float> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun DoubleArray.sorted(): List<Double> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun CharArray.sorted(): List<Char> {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Array<T>.sortedArray(): Array<T> {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ByteArray.sortedArray(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ShortArray.sortedArray(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun IntArray.sortedArray(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun LongArray.sortedArray(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun FloatArray.sortedArray(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun DoubleArray.sortedArray(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun CharArray.sortedArray(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Array<T>.sortedArrayDescending(): Array<T> {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(reverseOrder()) }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedArrayDescending(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedArrayDescending(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedArrayDescending(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedArrayDescending(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedArrayDescending(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedArrayDescending(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedArrayDescending(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T> Array<out T>.sortedArrayWith(comparator: Comparator<in T>): Array<out T> {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(comparator) }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <T, R : Comparable<R>> Array<out T>.sortedBy(crossinline selector: (T) -> R?): List<T> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List<Byte> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> ShortArray.sortedBy(crossinline selector: (Short) -> R?): List<Short> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> IntArray.sortedBy(crossinline selector: (Int) -> R?): List<Int> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> LongArray.sortedBy(crossinline selector: (Long) -> R?): List<Long> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> FloatArray.sortedBy(crossinline selector: (Float) -> R?): List<Float> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List<Double> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List<Boolean> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <R : Comparable<R>> CharArray.sortedBy(crossinline selector: (Char) -> R?): List<Char> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> Array<out T>.sortedByDescending(crossinline selector: (T) -> R?): List<T> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List<Byte> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List<Short> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List<Int> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List<Long> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List<Float> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List<Double> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List<Boolean> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun <R : Comparable<R>> CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List<Char> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Array<out T>.sortedDescending(): List<T> {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedDescending(): List<Byte> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedDescending(): List<Short> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedDescending(): List<Int> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedDescending(): List<Long> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedDescending(): List<Float> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedDescending(): List<Double> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedDescending(): List<Char> {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T> Array<out T>.sortedWith(comparator: Comparator<in T>): List<T> {\n return sortedArrayWith(comparator).asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ByteArray.sortedWith(comparator: Comparator<in Byte>): List<Byte> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ShortArray.sortedWith(comparator: Comparator<in Short>): List<Short> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun IntArray.sortedWith(comparator: Comparator<in Int>): List<Int> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun LongArray.sortedWith(comparator: Comparator<in Long>): List<Long> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun FloatArray.sortedWith(comparator: Comparator<in Float>): List<Float> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun DoubleArray.sortedWith(comparator: Comparator<in Double>): List<Double> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun BooleanArray.sortedWith(comparator: Comparator<in Boolean>): List<Boolean> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun CharArray.sortedWith(comparator: Comparator<in Char>): List<Char> {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun <T> Array<out T>.asList(): List<T>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List<Byte>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List<Short>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List<Int>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List<Long>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List<Float>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List<Double>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List<Boolean>\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List<Char>\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic expect infix fun <T> Array<out T>.contentDeepEquals(other: Array<out T>): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The specified arrays are also considered deeply equal if both are `null`.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun <T> Array<out T>?.contentDeepEquals(other: Array<out T>?): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic expect fun <T> Array<out T>.contentDeepHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.4\")\npublic expect fun <T> Array<out T>?.contentDeepHashCode(): Int\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic expect fun <T> Array<out T>.contentDeepToString(): String\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun <T> Array<out T>?.contentDeepToString(): String\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun <T> Array<out T>.contentEquals(other: Array<out T>): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun ByteArray.contentEquals(other: ByteArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun ShortArray.contentEquals(other: ShortArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun IntArray.contentEquals(other: IntArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun LongArray.contentEquals(other: LongArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun FloatArray.contentEquals(other: FloatArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect infix fun CharArray.contentEquals(other: CharArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun <T> Array<out T>?.contentEquals(other: Array<out T>?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun ByteArray?.contentEquals(other: ByteArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun ShortArray?.contentEquals(other: ShortArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun IntArray?.contentEquals(other: IntArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun LongArray?.contentEquals(other: LongArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun FloatArray?.contentEquals(other: FloatArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun DoubleArray?.contentEquals(other: DoubleArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun BooleanArray?.contentEquals(other: BooleanArray?): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\npublic expect infix fun CharArray?.contentEquals(other: CharArray?): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun <T> Array<out T>.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun ByteArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun ShortArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun IntArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun LongArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun FloatArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun DoubleArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun BooleanArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun CharArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun <T> Array<out T>?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ByteArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ShortArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun IntArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun LongArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun FloatArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun DoubleArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun BooleanArray?.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\npublic expect fun CharArray?.contentHashCode(): Int\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun <T> Array<out T>.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun ByteArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun ShortArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun IntArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun LongArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun FloatArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun DoubleArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun BooleanArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic expect fun CharArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun <T> Array<out T>?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ByteArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ShortArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun IntArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun LongArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun FloatArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun DoubleArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun BooleanArray?.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\npublic expect fun CharArray?.contentToString(): String\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun <T> Array<out T>.copyInto(destination: Array<T>, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array<T>\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun <T> Array<T>.copyOf(): Array<T>\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ByteArray.copyOf(): ByteArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ShortArray.copyOf(): ShortArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun IntArray.copyOf(): IntArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun LongArray.copyOf(): LongArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun FloatArray.copyOf(): FloatArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun DoubleArray.copyOf(): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun BooleanArray.copyOf(): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun CharArray.copyOf(): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ByteArray.copyOf(newSize: Int): ByteArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ShortArray.copyOf(newSize: Int): ShortArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun IntArray.copyOf(newSize: Int): IntArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun LongArray.copyOf(newSize: Int): LongArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun FloatArray.copyOf(newSize: Int): FloatArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun DoubleArray.copyOf(newSize: Int): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun BooleanArray.copyOf(newSize: Int): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun CharArray.copyOf(newSize: Int): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun <T> Array<T>.copyOf(newSize: Int): Array<T?>\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun <T> Array<T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T>\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun <T> Array<T>.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val <T> Array<out T>.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ByteArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ShortArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val IntArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val LongArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val FloatArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val DoubleArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val BooleanArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val CharArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns the last valid index for the array.\n */\npublic val <T> Array<out T>.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ByteArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ShortArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val IntArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val LongArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val FloatArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val DoubleArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val BooleanArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val CharArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun <T> Array<T>.plus(element: T): Array<T>\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ByteArray.plus(element: Byte): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ShortArray.plus(element: Short): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun IntArray.plus(element: Int): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun LongArray.plus(element: Long): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun FloatArray.plus(element: Float): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun DoubleArray.plus(element: Double): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun BooleanArray.plus(element: Boolean): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun CharArray.plus(element: Char): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun <T> Array<T>.plus(elements: Collection<T>): Array<T>\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ByteArray.plus(elements: Collection<Byte>): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ShortArray.plus(elements: Collection<Short>): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun IntArray.plus(elements: Collection<Int>): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun LongArray.plus(elements: Collection<Long>): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun FloatArray.plus(elements: Collection<Float>): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun DoubleArray.plus(elements: Collection<Double>): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun BooleanArray.plus(elements: Collection<Boolean>): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun CharArray.plus(elements: Collection<Char>): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun <T> Array<T>.plus(elements: Array<out T>): Array<T>\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ByteArray.plus(elements: ByteArray): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ShortArray.plus(elements: ShortArray): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun IntArray.plus(elements: IntArray): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun LongArray.plus(elements: LongArray): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun FloatArray.plus(elements: FloatArray): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun CharArray.plus(elements: CharArray): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun <T> Array<T>.plusElement(element: T): Array<T>\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun IntArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun LongArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ByteArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ShortArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun DoubleArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun FloatArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun CharArray.sort(): Unit\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable\n */\npublic expect fun <T : Comparable<T>> Array<out T>.sort(): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArrayOfComparable\n */\n@SinceKotlin(\"1.4\")\npublic expect fun <T : Comparable<T>> Array<out T>.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun ShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun IntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun LongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun FloatArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun DoubleArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\npublic expect fun CharArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Array<out T>.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sortWith(reverseOrder(), fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts elements of the array in the specified range in-place.\n * The elements are sorted descending according to their natural sort order.\n * \n * @param fromIndex the start of the range (inclusive) to sort.\n * @param toIndex the end of the range (exclusive) to sort.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun <T> Array<out T>.sortWith(comparator: Comparator<in T>): Unit\n\n/**\n * Sorts a range in the array in-place with the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic expect fun <T> Array<out T>.sortWith(comparator: Comparator<in T>, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Returns an array of Boolean containing all of the elements of this generic array.\n */\npublic fun Array<out Boolean>.toBooleanArray(): BooleanArray {\n return BooleanArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this generic array.\n */\npublic fun Array<out Byte>.toByteArray(): ByteArray {\n return ByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Char containing all of the elements of this generic array.\n */\npublic fun Array<out Char>.toCharArray(): CharArray {\n return CharArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Double containing all of the elements of this generic array.\n */\npublic fun Array<out Double>.toDoubleArray(): DoubleArray {\n return DoubleArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Float containing all of the elements of this generic array.\n */\npublic fun Array<out Float>.toFloatArray(): FloatArray {\n return FloatArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Int containing all of the elements of this generic array.\n */\npublic fun Array<out Int>.toIntArray(): IntArray {\n return IntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Long containing all of the elements of this generic array.\n */\npublic fun Array<out Long>.toLongArray(): LongArray {\n return LongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Short containing all of the elements of this generic array.\n */\npublic fun Array<out Short>.toShortArray(): ShortArray {\n return ShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ByteArray.toTypedArray(): Array<Byte>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array<Short>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array<Int>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array<Long>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array<Float>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array<Double>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array<Boolean>\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array<Char>\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <T, K, V> Array<out T>.associate(transform: (T) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> ByteArray.associate(transform: (Byte) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> ShortArray.associate(transform: (Short) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> IntArray.associate(transform: (Int) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> LongArray.associate(transform: (Long) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> FloatArray.associate(transform: (Float) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> DoubleArray.associate(transform: (Double) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> BooleanArray.associate(transform: (Boolean) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun <K, V> CharArray.associate(transform: (Char) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <T, K> Array<out T>.associateBy(keySelector: (T) -> K): Map<K, T> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, T>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> ByteArray.associateBy(keySelector: (Byte) -> K): Map<K, Byte> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Byte>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> ShortArray.associateBy(keySelector: (Short) -> K): Map<K, Short> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Short>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> IntArray.associateBy(keySelector: (Int) -> K): Map<K, Int> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Int>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> LongArray.associateBy(keySelector: (Long) -> K): Map<K, Long> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Long>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> FloatArray.associateBy(keySelector: (Float) -> K): Map<K, Float> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Float>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> DoubleArray.associateBy(keySelector: (Double) -> K): Map<K, Double> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Double>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> BooleanArray.associateBy(keySelector: (Boolean) -> K): Map<K, Boolean> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Boolean>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun <K> CharArray.associateBy(keySelector: (Char) -> K): Map<K, Char> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, Char>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <T, K, V> Array<out T>.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun <K, V> CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map<K, V> {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <T, K, M : MutableMap<in K, in T>> Array<out T>.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Byte>> ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Short>> ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Int>> IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Long>> LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Float>> FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Double>> DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Boolean>> BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun <K, M : MutableMap<in K, in Char>> CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateTo(destination: M, transform: (T) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> ByteArray.associateTo(destination: M, transform: (Byte) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> ShortArray.associateTo(destination: M, transform: (Short) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> IntArray.associateTo(destination: M, transform: (Int) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> LongArray.associateTo(destination: M, transform: (Long) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> FloatArray.associateTo(destination: M, transform: (Float) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> DoubleArray.associateTo(destination: M, transform: (Double) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> CharArray.associateTo(destination: M, transform: (Char) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <K, V> Array<out K>.associateWith(valueSelector: (K) -> V): Map<K, V> {\n val result = LinkedHashMap<K, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> ByteArray.associateWith(valueSelector: (Byte) -> V): Map<Byte, V> {\n val result = LinkedHashMap<Byte, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> ShortArray.associateWith(valueSelector: (Short) -> V): Map<Short, V> {\n val result = LinkedHashMap<Short, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> IntArray.associateWith(valueSelector: (Int) -> V): Map<Int, V> {\n val result = LinkedHashMap<Int, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> LongArray.associateWith(valueSelector: (Long) -> V): Map<Long, V> {\n val result = LinkedHashMap<Long, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> FloatArray.associateWith(valueSelector: (Float) -> V): Map<Float, V> {\n val result = LinkedHashMap<Float, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> DoubleArray.associateWith(valueSelector: (Double) -> V): Map<Double, V> {\n val result = LinkedHashMap<Double, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> BooleanArray.associateWith(valueSelector: (Boolean) -> V): Map<Boolean, V> {\n val result = LinkedHashMap<Boolean, V>(mapCapacity(size).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Returns a [Map] where keys are elements from the given array and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V> CharArray.associateWith(valueSelector: (Char) -> V): Map<Char, V> {\n val result = LinkedHashMap<Char, V>(mapCapacity(size.coerceAtMost(128)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <K, V, M : MutableMap<in K, in V>> Array<out K>.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Byte, in V>> ByteArray.associateWithTo(destination: M, valueSelector: (Byte) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Short, in V>> ShortArray.associateWithTo(destination: M, valueSelector: (Short) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Int, in V>> IntArray.associateWithTo(destination: M, valueSelector: (Int) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Long, in V>> LongArray.associateWithTo(destination: M, valueSelector: (Long) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Float, in V>> FloatArray.associateWithTo(destination: M, valueSelector: (Float) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Double, in V>> DoubleArray.associateWithTo(destination: M, valueSelector: (Double) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Boolean, in V>> BooleanArray.associateWithTo(destination: M, valueSelector: (Boolean) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <V, M : MutableMap<in Char, in V>> CharArray.associateWithTo(destination: M, valueSelector: (Char) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <T, C : MutableCollection<in T>> Array<out T>.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Byte>> ByteArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Short>> ShortArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Int>> IntArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Long>> LongArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Float>> FloatArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Double>> DoubleArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Boolean>> BooleanArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <C : MutableCollection<in Char>> CharArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun <T> Array<out T>.toHashSet(): HashSet<T> {\n return toCollection(HashSet<T>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet<Byte> {\n return toCollection(HashSet<Byte>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet<Short> {\n return toCollection(HashSet<Short>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet<Int> {\n return toCollection(HashSet<Int>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet<Long> {\n return toCollection(HashSet<Long>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet<Float> {\n return toCollection(HashSet<Float>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet<Double> {\n return toCollection(HashSet<Double>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet<Boolean> {\n return toCollection(HashSet<Boolean>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet<Char> {\n return toCollection(HashSet<Char>(mapCapacity(size.coerceAtMost(128))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun <T> Array<out T>.toList(): List<T> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ByteArray.toList(): List<Byte> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ShortArray.toList(): List<Short> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun IntArray.toList(): List<Int> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun LongArray.toList(): List<Long> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun FloatArray.toList(): List<Float> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun DoubleArray.toList(): List<Double> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun BooleanArray.toList(): List<Boolean> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun CharArray.toList(): List<Char> {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun <T> Array<out T>.toMutableList(): MutableList<T> {\n return ArrayList(this.asCollection())\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun ByteArray.toMutableList(): MutableList<Byte> {\n val list = ArrayList<Byte>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun ShortArray.toMutableList(): MutableList<Short> {\n val list = ArrayList<Short>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun IntArray.toMutableList(): MutableList<Int> {\n val list = ArrayList<Int>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun LongArray.toMutableList(): MutableList<Long> {\n val list = ArrayList<Long>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun FloatArray.toMutableList(): MutableList<Float> {\n val list = ArrayList<Float>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun DoubleArray.toMutableList(): MutableList<Double> {\n val list = ArrayList<Double>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun BooleanArray.toMutableList(): MutableList<Boolean> {\n val list = ArrayList<Boolean>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this array.\n */\npublic fun CharArray.toMutableList(): MutableList<Char> {\n val list = ArrayList<Char>(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun <T> Array<out T>.toSet(): Set<T> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<T>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toSet(): Set<Byte> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Byte>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toSet(): Set<Short> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Short>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toSet(): Set<Int> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Int>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toSet(): Set<Long> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Long>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toSet(): Set<Float> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Float>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toSet(): Set<Double> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Double>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toSet(): Set<Boolean> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Boolean>(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toSet(): Set<Char> {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet<Char>(mapCapacity(size.coerceAtMost(128))))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <T, R> Array<out T>.flatMap(transform: (T) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> ByteArray.flatMap(transform: (Byte) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> ShortArray.flatMap(transform: (Short) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> IntArray.flatMap(transform: (Int) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> LongArray.flatMap(transform: (Long) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> FloatArray.flatMap(transform: (Float) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> DoubleArray.flatMap(transform: (Double) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> BooleanArray.flatMap(transform: (Boolean) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <R> CharArray.flatMap(transform: (Char) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequence\")\npublic inline fun <T, R> Array<out T>.flatMap(transform: (T) -> Sequence<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.flatMapIndexed(transform: (index: Int, Byte) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.flatMapIndexed(transform: (index: Int, Short) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.flatMapIndexed(transform: (index: Int, Int) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.flatMapIndexed(transform: (index: Int, Long) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.flatMapIndexed(transform: (index: Int, Float) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.flatMapIndexed(transform: (index: Int, Double) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.flatMapIndexed(transform: (index: Int, Boolean) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.flatMapIndexed(transform: (index: Int, Char) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequence\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.flatMapIndexed(transform: (index: Int, T) -> Sequence<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> ByteArray.flatMapIndexedTo(destination: C, transform: (index: Int, Byte) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> ShortArray.flatMapIndexedTo(destination: C, transform: (index: Int, Short) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> IntArray.flatMapIndexedTo(destination: C, transform: (index: Int, Int) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> LongArray.flatMapIndexedTo(destination: C, transform: (index: Int, Long) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> FloatArray.flatMapIndexedTo(destination: C, transform: (index: Int, Float) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> DoubleArray.flatMapIndexedTo(destination: C, transform: (index: Int, Double) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> BooleanArray.flatMapIndexedTo(destination: C, transform: (index: Int, Boolean) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <R, C : MutableCollection<in R>> CharArray.flatMapIndexedTo(destination: C, transform: (index: Int, Char) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequenceTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(index++, element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapTo(destination: C, transform: (T) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequenceTo\")\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapTo(destination: C, transform: (T) -> Sequence<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K> Array<out T>.groupBy(keySelector: (T) -> K): Map<K, List<T>> {\n return groupByTo(LinkedHashMap<K, MutableList<T>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> ByteArray.groupBy(keySelector: (Byte) -> K): Map<K, List<Byte>> {\n return groupByTo(LinkedHashMap<K, MutableList<Byte>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> ShortArray.groupBy(keySelector: (Short) -> K): Map<K, List<Short>> {\n return groupByTo(LinkedHashMap<K, MutableList<Short>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> IntArray.groupBy(keySelector: (Int) -> K): Map<K, List<Int>> {\n return groupByTo(LinkedHashMap<K, MutableList<Int>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> LongArray.groupBy(keySelector: (Long) -> K): Map<K, List<Long>> {\n return groupByTo(LinkedHashMap<K, MutableList<Long>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> FloatArray.groupBy(keySelector: (Float) -> K): Map<K, List<Float>> {\n return groupByTo(LinkedHashMap<K, MutableList<Float>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> DoubleArray.groupBy(keySelector: (Double) -> K): Map<K, List<Double>> {\n return groupByTo(LinkedHashMap<K, MutableList<Double>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> BooleanArray.groupBy(keySelector: (Boolean) -> K): Map<K, List<Boolean>> {\n return groupByTo(LinkedHashMap<K, MutableList<Boolean>>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K> CharArray.groupBy(keySelector: (Char) -> K): Map<K, List<Char>> {\n return groupByTo(LinkedHashMap<K, MutableList<Char>>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V> Array<out T>.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V> CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K, M : MutableMap<in K, MutableList<T>>> Array<out T>.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<T>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Byte>>> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Byte>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Short>>> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Short>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Int>>> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Int>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Long>>> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Long>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Float>>> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Float>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Double>>> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Double>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Boolean>>> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Boolean>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <K, M : MutableMap<in K, MutableList<Char>>> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<Char>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Array<out T>.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun <T, K> Array<out T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {\n return object : Grouping<T, K> {\n override fun sourceIterator(): Iterator<T> = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <T, R> Array<out T>.map(transform: (T) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> ByteArray.map(transform: (Byte) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> ShortArray.map(transform: (Short) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> IntArray.map(transform: (Int) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> LongArray.map(transform: (Long) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> FloatArray.map(transform: (Float) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> DoubleArray.map(transform: (Double) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> BooleanArray.map(transform: (Boolean) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <R> CharArray.map(transform: (Char) -> R): List<R> {\n return mapTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R> Array<out T>.mapIndexed(transform: (index: Int, T) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> IntArray.mapIndexed(transform: (index: Int, Int) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> LongArray.mapIndexed(transform: (index: Int, Long) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R> CharArray.mapIndexed(transform: (index: Int, Char) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R : Any> Array<out T>.mapIndexedNotNull(transform: (index: Int, T) -> R?): List<R> {\n return mapIndexedNotNullTo(ArrayList<R>(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Array<out T>.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <R, C : MutableCollection<in R>> CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.mapNotNull\n */\npublic inline fun <T, R : Any> Array<out T>.mapNotNull(transform: (T) -> R?): List<R> {\n return mapNotNullTo(ArrayList<R>(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original array\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Array<out T>.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Array<out T>.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> ByteArray.mapTo(destination: C, transform: (Byte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> ShortArray.mapTo(destination: C, transform: (Short) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> IntArray.mapTo(destination: C, transform: (Int) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> LongArray.mapTo(destination: C, transform: (Long) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> FloatArray.mapTo(destination: C, transform: (Float) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> DoubleArray.mapTo(destination: C, transform: (Double) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun <R, C : MutableCollection<in R>> CharArray.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ByteArray.withIndex(): Iterable<IndexedValue<Byte>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ShortArray.withIndex(): Iterable<IndexedValue<Short>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun IntArray.withIndex(): Iterable<IndexedValue<Int>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun LongArray.withIndex(): Iterable<IndexedValue<Long>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun FloatArray.withIndex(): Iterable<IndexedValue<Float>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun DoubleArray.withIndex(): Iterable<IndexedValue<Double>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun BooleanArray.withIndex(): Iterable<IndexedValue<Boolean>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun CharArray.withIndex(): Iterable<IndexedValue<Char>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * Among equal elements of the given array, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun <T> Array<out T>.distinct(): List<T> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ByteArray.distinct(): List<Byte> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ShortArray.distinct(): List<Short> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun IntArray.distinct(): List<Int> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun LongArray.distinct(): List<Long> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun FloatArray.distinct(): List<Float> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun DoubleArray.distinct(): List<Double> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun BooleanArray.distinct(): List<Boolean> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun CharArray.distinct(): List<Char> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * Among elements of the given array with equal keys, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <T, K> Array<out T>.distinctBy(selector: (T) -> K): List<T> {\n val set = HashSet<K>()\n val list = ArrayList<T>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> ByteArray.distinctBy(selector: (Byte) -> K): List<Byte> {\n val set = HashSet<K>()\n val list = ArrayList<Byte>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> ShortArray.distinctBy(selector: (Short) -> K): List<Short> {\n val set = HashSet<K>()\n val list = ArrayList<Short>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> IntArray.distinctBy(selector: (Int) -> K): List<Int> {\n val set = HashSet<K>()\n val list = ArrayList<Int>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> LongArray.distinctBy(selector: (Long) -> K): List<Long> {\n val set = HashSet<K>()\n val list = ArrayList<Long>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> FloatArray.distinctBy(selector: (Float) -> K): List<Float> {\n val set = HashSet<K>()\n val list = ArrayList<Float>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> DoubleArray.distinctBy(selector: (Double) -> K): List<Double> {\n val set = HashSet<K>()\n val list = ArrayList<Double>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> BooleanArray.distinctBy(selector: (Boolean) -> K): List<Boolean> {\n val set = HashSet<K>()\n val list = ArrayList<Boolean>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <K> CharArray.distinctBy(selector: (Char) -> K): List<Char> {\n val set = HashSet<K>()\n val list = ArrayList<Char>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun <T> Array<out T>.intersect(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ByteArray.intersect(other: Iterable<Byte>): Set<Byte> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ShortArray.intersect(other: Iterable<Short>): Set<Short> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun IntArray.intersect(other: Iterable<Int>): Set<Int> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun LongArray.intersect(other: Iterable<Long>): Set<Long> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun FloatArray.intersect(other: Iterable<Float>): Set<Float> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun DoubleArray.intersect(other: Iterable<Double>): Set<Double> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun BooleanArray.intersect(other: Iterable<Boolean>): Set<Boolean> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun CharArray.intersect(other: Iterable<Char>): Set<Char> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun <T> Array<out T>.subtract(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.subtract(other: Iterable<Byte>): Set<Byte> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.subtract(other: Iterable<Short>): Set<Short> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.subtract(other: Iterable<Int>): Set<Int> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.subtract(other: Iterable<Long>): Set<Long> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.subtract(other: Iterable<Float>): Set<Float> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.subtract(other: Iterable<Double>): Set<Double> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.subtract(other: Iterable<Boolean>): Set<Boolean> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.subtract(other: Iterable<Char>): Set<Char> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun <T> Array<out T>.toMutableSet(): MutableSet<T> {\n return toCollection(LinkedHashSet<T>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toMutableSet(): MutableSet<Byte> {\n return toCollection(LinkedHashSet<Byte>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toMutableSet(): MutableSet<Short> {\n return toCollection(LinkedHashSet<Short>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toMutableSet(): MutableSet<Int> {\n return toCollection(LinkedHashSet<Int>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toMutableSet(): MutableSet<Long> {\n return toCollection(LinkedHashSet<Long>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toMutableSet(): MutableSet<Float> {\n return toCollection(LinkedHashSet<Float>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toMutableSet(): MutableSet<Double> {\n return toCollection(LinkedHashSet<Double>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toMutableSet(): MutableSet<Boolean> {\n return toCollection(LinkedHashSet<Boolean>(mapCapacity(size)))\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toMutableSet(): MutableSet<Char> {\n return toCollection(LinkedHashSet<Char>(mapCapacity(size.coerceAtMost(128))))\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun <T> Array<out T>.union(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ByteArray.union(other: Iterable<Byte>): Set<Byte> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ShortArray.union(other: Iterable<Short>): Set<Short> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun IntArray.union(other: Iterable<Int>): Set<Int> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun LongArray.union(other: Iterable<Long>): Set<Long> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun FloatArray.union(other: Iterable<Float>): Set<Float> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun DoubleArray.union(other: Iterable<Double>): Set<Double> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun BooleanArray.union(other: Iterable<Boolean>): Set<Boolean> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun CharArray.union(other: Iterable<Char>): Set<Char> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun <T> Array<out T>.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ByteArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ShortArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun IntArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun LongArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun FloatArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun DoubleArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun BooleanArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun <T> Array<out T>.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun <T> Array<out T>.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ShortArray.count(predicate: (Short) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun IntArray.count(predicate: (Int) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun LongArray.count(predicate: (Long) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun FloatArray.count(predicate: (Float) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun CharArray.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Array<out T>.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <R> CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Array<out T>.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <R> CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Array<out T>.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Array<out T>.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns the specified [initial] value if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <R> CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun <T> Array<out T>.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ShortArray.forEach(action: (Short) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun IntArray.forEach(action: (Int) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun LongArray.forEach(action: (Long) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun FloatArray.forEach(action: (Float) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun CharArray.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun <T> Array<out T>.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array<out Double>.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array<out Float>.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Array<out T>.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.max(): Byte? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.max(): Short? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.max(): Int? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.max(): Long? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.max(): Char? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Array<out T>.maxBy(selector: (T) -> R): T? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> ShortArray.maxBy(selector: (Short) -> R): Short? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> IntArray.maxBy(selector: (Int) -> R): Int? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> LongArray.maxBy(selector: (Long) -> R): Long? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> FloatArray.maxBy(selector: (Float) -> R): Float? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> DoubleArray.maxBy(selector: (Double) -> R): Double? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> CharArray.maxBy(selector: (Char) -> R): Char? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Array<out T>.maxByOrNull(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> ByteArray.maxByOrNull(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> ShortArray.maxByOrNull(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> IntArray.maxByOrNull(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> LongArray.maxByOrNull(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> FloatArray.maxByOrNull(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> DoubleArray.maxByOrNull(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> BooleanArray.maxByOrNull(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> CharArray.maxByOrNull(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.maxOf(selector: (T) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.maxOf(selector: (Byte) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.maxOf(selector: (Short) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.maxOf(selector: (Int) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.maxOf(selector: (Long) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.maxOf(selector: (Float) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.maxOf(selector: (Double) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.maxOf(selector: (Boolean) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.maxOf(selector: (Char) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.maxOf(selector: (T) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.maxOf(selector: (Byte) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.maxOf(selector: (Short) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.maxOf(selector: (Int) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.maxOf(selector: (Long) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.maxOf(selector: (Float) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.maxOf(selector: (Double) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.maxOf(selector: (Boolean) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.maxOf(selector: (Char) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Array<out T>.maxOf(selector: (T) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ByteArray.maxOf(selector: (Byte) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ShortArray.maxOf(selector: (Short) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> IntArray.maxOf(selector: (Int) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> LongArray.maxOf(selector: (Long) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> FloatArray.maxOf(selector: (Float) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> DoubleArray.maxOf(selector: (Double) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> BooleanArray.maxOf(selector: (Boolean) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> CharArray.maxOf(selector: (Char) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.maxOfOrNull(selector: (T) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.maxOfOrNull(selector: (Byte) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.maxOfOrNull(selector: (Short) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.maxOfOrNull(selector: (Int) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.maxOfOrNull(selector: (Long) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.maxOfOrNull(selector: (Float) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.maxOfOrNull(selector: (Double) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.maxOfOrNull(selector: (Boolean) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.maxOfOrNull(selector: (Char) -> Double): Double? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.maxOfOrNull(selector: (T) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.maxOfOrNull(selector: (Byte) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.maxOfOrNull(selector: (Short) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.maxOfOrNull(selector: (Int) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.maxOfOrNull(selector: (Long) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.maxOfOrNull(selector: (Float) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.maxOfOrNull(selector: (Double) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.maxOfOrNull(selector: (Boolean) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.maxOfOrNull(selector: (Char) -> Float): Float? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Array<out T>.maxOfOrNull(selector: (T) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ByteArray.maxOfOrNull(selector: (Byte) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ShortArray.maxOfOrNull(selector: (Short) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> IntArray.maxOfOrNull(selector: (Int) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> LongArray.maxOfOrNull(selector: (Long) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> FloatArray.maxOfOrNull(selector: (Float) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> DoubleArray.maxOfOrNull(selector: (Double) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> BooleanArray.maxOfOrNull(selector: (Boolean) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> CharArray.maxOfOrNull(selector: (Char) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.maxOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.maxOfWith(comparator: Comparator<in R>, selector: (Byte) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.maxOfWith(comparator: Comparator<in R>, selector: (Short) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.maxOfWith(comparator: Comparator<in R>, selector: (Int) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.maxOfWith(comparator: Comparator<in R>, selector: (Long) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.maxOfWith(comparator: Comparator<in R>, selector: (Float) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.maxOfWith(comparator: Comparator<in R>, selector: (Double) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.maxOfWith(comparator: Comparator<in R>, selector: (Boolean) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.maxOfWith(comparator: Comparator<in R>, selector: (Char) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Byte) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Short) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Int) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Long) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Float) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Double) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Boolean) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Char) -> R): R? {\n if (isEmpty()) return null\n var maxValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Array<out Double>.maxOrNull(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Array<out Float>.maxOrNull(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Array<out T>.maxOrNull(): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.maxOrNull(): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.maxOrNull(): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.maxOrNull(): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.maxOrNull(): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.maxOrNull(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.maxOrNull(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.maxOrNull(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Array<out T>.maxWith(comparator: Comparator<in T>): T? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.maxWith(comparator: Comparator<in Byte>): Byte? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.maxWith(comparator: Comparator<in Short>): Short? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.maxWith(comparator: Comparator<in Int>): Int? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.maxWith(comparator: Comparator<in Long>): Long? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.maxWith(comparator: Comparator<in Float>): Float? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.maxWith(comparator: Comparator<in Double>): Double? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun BooleanArray.maxWith(comparator: Comparator<in Boolean>): Boolean? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.maxWith(comparator: Comparator<in Char>): Char? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Array<out T>.maxWithOrNull(comparator: Comparator<in T>): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.maxWithOrNull(comparator: Comparator<in Byte>): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.maxWithOrNull(comparator: Comparator<in Short>): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.maxWithOrNull(comparator: Comparator<in Int>): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.maxWithOrNull(comparator: Comparator<in Long>): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.maxWithOrNull(comparator: Comparator<in Float>): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.maxWithOrNull(comparator: Comparator<in Double>): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun BooleanArray.maxWithOrNull(comparator: Comparator<in Boolean>): Boolean? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.maxWithOrNull(comparator: Comparator<in Char>): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array<out Double>.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array<out Float>.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Array<out T>.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.min(): Byte? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.min(): Short? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.min(): Int? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.min(): Long? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.min(): Char? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Array<out T>.minBy(selector: (T) -> R): T? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> ByteArray.minBy(selector: (Byte) -> R): Byte? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> ShortArray.minBy(selector: (Short) -> R): Short? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> IntArray.minBy(selector: (Int) -> R): Int? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> LongArray.minBy(selector: (Long) -> R): Long? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> FloatArray.minBy(selector: (Float) -> R): Float? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> DoubleArray.minBy(selector: (Double) -> R): Double? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <R : Comparable<R>> CharArray.minBy(selector: (Char) -> R): Char? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Array<out T>.minByOrNull(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> ByteArray.minByOrNull(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> ShortArray.minByOrNull(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> IntArray.minByOrNull(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> LongArray.minByOrNull(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> FloatArray.minByOrNull(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> DoubleArray.minByOrNull(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> BooleanArray.minByOrNull(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <R : Comparable<R>> CharArray.minByOrNull(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.minOf(selector: (T) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.minOf(selector: (Byte) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.minOf(selector: (Short) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.minOf(selector: (Int) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.minOf(selector: (Long) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.minOf(selector: (Float) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.minOf(selector: (Double) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.minOf(selector: (Boolean) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.minOf(selector: (Char) -> Double): Double {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.minOf(selector: (T) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.minOf(selector: (Byte) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.minOf(selector: (Short) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.minOf(selector: (Int) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.minOf(selector: (Long) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.minOf(selector: (Float) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.minOf(selector: (Double) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.minOf(selector: (Boolean) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.minOf(selector: (Char) -> Float): Float {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Array<out T>.minOf(selector: (T) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ByteArray.minOf(selector: (Byte) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ShortArray.minOf(selector: (Short) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> IntArray.minOf(selector: (Int) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> LongArray.minOf(selector: (Long) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> FloatArray.minOf(selector: (Float) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> DoubleArray.minOf(selector: (Double) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> BooleanArray.minOf(selector: (Boolean) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> CharArray.minOf(selector: (Char) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.minOfOrNull(selector: (T) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.minOfOrNull(selector: (Byte) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.minOfOrNull(selector: (Short) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.minOfOrNull(selector: (Int) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.minOfOrNull(selector: (Long) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.minOfOrNull(selector: (Float) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.minOfOrNull(selector: (Double) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.minOfOrNull(selector: (Boolean) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.minOfOrNull(selector: (Char) -> Double): Double? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.minOfOrNull(selector: (T) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.minOfOrNull(selector: (Byte) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.minOfOrNull(selector: (Short) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.minOfOrNull(selector: (Int) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.minOfOrNull(selector: (Long) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.minOfOrNull(selector: (Float) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.minOfOrNull(selector: (Double) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.minOfOrNull(selector: (Boolean) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.minOfOrNull(selector: (Char) -> Float): Float? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Array<out T>.minOfOrNull(selector: (T) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ByteArray.minOfOrNull(selector: (Byte) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> ShortArray.minOfOrNull(selector: (Short) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> IntArray.minOfOrNull(selector: (Int) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> LongArray.minOfOrNull(selector: (Long) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> FloatArray.minOfOrNull(selector: (Float) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> DoubleArray.minOfOrNull(selector: (Double) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> BooleanArray.minOfOrNull(selector: (Boolean) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R : Comparable<R>> CharArray.minOfOrNull(selector: (Char) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.minOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.minOfWith(comparator: Comparator<in R>, selector: (Byte) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.minOfWith(comparator: Comparator<in R>, selector: (Short) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.minOfWith(comparator: Comparator<in R>, selector: (Int) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.minOfWith(comparator: Comparator<in R>, selector: (Long) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.minOfWith(comparator: Comparator<in R>, selector: (Float) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.minOfWith(comparator: Comparator<in R>, selector: (Double) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.minOfWith(comparator: Comparator<in R>, selector: (Boolean) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array.\n * \n * @throws NoSuchElementException if the array is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.minOfWith(comparator: Comparator<in R>, selector: (Char) -> R): R {\n if (isEmpty()) throw NoSuchElementException()\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Array<out T>.minOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Byte) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Short) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Int) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Long) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Float) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Double) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Boolean) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the array or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Char) -> R): R? {\n if (isEmpty()) return null\n var minValue = selector(this[0])\n for (i in 1..lastIndex) {\n val v = selector(this[i])\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Array<out Double>.minOrNull(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Array<out Float>.minOrNull(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Array<out T>.minOrNull(): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.minOrNull(): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.minOrNull(): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.minOrNull(): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.minOrNull(): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.minOrNull(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.minOrNull(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.minOrNull(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Array<out T>.minWith(comparator: Comparator<in T>): T? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.minWith(comparator: Comparator<in Byte>): Byte? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.minWith(comparator: Comparator<in Short>): Short? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.minWith(comparator: Comparator<in Int>): Int? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.minWith(comparator: Comparator<in Long>): Long? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.minWith(comparator: Comparator<in Float>): Float? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.minWith(comparator: Comparator<in Double>): Double? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun BooleanArray.minWith(comparator: Comparator<in Boolean>): Boolean? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.minWith(comparator: Comparator<in Char>): Char? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Array<out T>.minWithOrNull(comparator: Comparator<in T>): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ByteArray.minWithOrNull(comparator: Comparator<in Byte>): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun ShortArray.minWithOrNull(comparator: Comparator<in Short>): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun IntArray.minWithOrNull(comparator: Comparator<in Int>): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun LongArray.minWithOrNull(comparator: Comparator<in Long>): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun FloatArray.minWithOrNull(comparator: Comparator<in Float>): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun DoubleArray.minWithOrNull(comparator: Comparator<in Double>): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun BooleanArray.minWithOrNull(comparator: Comparator<in Boolean>): Boolean? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharArray.minWithOrNull(comparator: Comparator<in Char>): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun <T> Array<out T>.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun IntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun LongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun FloatArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun DoubleArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun BooleanArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun <T> Array<out T>.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.onEach(action: (T) -> Unit): Array<out T> {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.onEach(action: (Byte) -> Unit): ByteArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.onEach(action: (Short) -> Unit): ShortArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.onEach(action: (Int) -> Unit): IntArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.onEach(action: (Long) -> Unit): LongArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.onEach(action: (Float) -> Unit): FloatArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.onEach(action: (Double) -> Unit): DoubleArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.onEach(action: (Boolean) -> Unit): BooleanArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element and returns the array itself afterwards.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.onEach(action: (Char) -> Unit): CharArray {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.onEachIndexed(action: (index: Int, T) -> Unit): Array<out T> {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.onEachIndexed(action: (index: Int, Byte) -> Unit): ByteArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.onEachIndexed(action: (index: Int, Short) -> Unit): ShortArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.onEachIndexed(action: (index: Int, Int) -> Unit): IntArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.onEachIndexed(action: (index: Int, Long) -> Unit): LongArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.onEachIndexed(action: (index: Int, Float) -> Unit): FloatArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.onEachIndexed(action: (index: Int, Double) -> Unit): DoubleArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.onEachIndexed(action: (index: Int, Boolean) -> Unit): BooleanArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the array itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.onEachIndexed(action: (index: Int, Char) -> Unit): CharArray {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Array<out T>.reduce(operation: (acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Array<out T>.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Array<out T>.reduceIndexedOrNull(operation: (index: Int, acc: S, T) -> S): S? {\n if (isEmpty())\n return null\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun ByteArray.reduceIndexedOrNull(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun ShortArray.reduceIndexedOrNull(operation: (index: Int, acc: Short, Short) -> Short): Short? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun IntArray.reduceIndexedOrNull(operation: (index: Int, acc: Int, Int) -> Int): Int? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun LongArray.reduceIndexedOrNull(operation: (index: Int, acc: Long, Long) -> Long): Long? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun FloatArray.reduceIndexedOrNull(operation: (index: Int, acc: Float, Float) -> Float): Float? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun DoubleArray.reduceIndexedOrNull(operation: (index: Int, acc: Double, Double) -> Double): Double? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun BooleanArray.reduceIndexedOrNull(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharArray.reduceIndexedOrNull(operation: (index: Int, acc: Char, Char) -> Char): Char? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Array<out T>.reduceOrNull(operation: (acc: S, T) -> S): S? {\n if (isEmpty())\n return null\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun ByteArray.reduceOrNull(operation: (acc: Byte, Byte) -> Byte): Byte? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun ShortArray.reduceOrNull(operation: (acc: Short, Short) -> Short): Short? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun IntArray.reduceOrNull(operation: (acc: Int, Int) -> Int): Int? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun LongArray.reduceOrNull(operation: (acc: Long, Long) -> Long): Long? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun FloatArray.reduceOrNull(operation: (acc: Float, Float) -> Float): Float? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun DoubleArray.reduceOrNull(operation: (acc: Double, Double) -> Double): Double? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun BooleanArray.reduceOrNull(operation: (acc: Boolean, Boolean) -> Boolean): Boolean? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun CharArray.reduceOrNull(operation: (acc: Char, Char) -> Char): Char? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun <S, T : S> Array<out T>.reduceRight(operation: (T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun <S, T : S> Array<out T>.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Throws an exception if this array is empty. If the array can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Array<out T>.reduceRightIndexedOrNull(operation: (index: Int, T, acc: S) -> S): S? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun ByteArray.reduceRightIndexedOrNull(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun ShortArray.reduceRightIndexedOrNull(operation: (index: Int, Short, acc: Short) -> Short): Short? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun IntArray.reduceRightIndexedOrNull(operation: (index: Int, Int, acc: Int) -> Int): Int? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun LongArray.reduceRightIndexedOrNull(operation: (index: Int, Long, acc: Long) -> Long): Long? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun FloatArray.reduceRightIndexedOrNull(operation: (index: Int, Float, acc: Float) -> Float): Float? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun DoubleArray.reduceRightIndexedOrNull(operation: (index: Int, Double, acc: Double) -> Double): Double? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun BooleanArray.reduceRightIndexedOrNull(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharArray.reduceRightIndexedOrNull(operation: (index: Int, Char, acc: Char) -> Char): Char? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Array<out T>.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun ByteArray.reduceRightOrNull(operation: (Byte, acc: Byte) -> Byte): Byte? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun ShortArray.reduceRightOrNull(operation: (Short, acc: Short) -> Short): Short? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun IntArray.reduceRightOrNull(operation: (Int, acc: Int) -> Int): Int? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun LongArray.reduceRightOrNull(operation: (Long, acc: Long) -> Long): Long? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun FloatArray.reduceRightOrNull(operation: (Float, acc: Float) -> Float): Float? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun DoubleArray.reduceRightOrNull(operation: (Double, acc: Double) -> Double): Double? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun BooleanArray.reduceRightOrNull(operation: (Boolean, acc: Boolean) -> Boolean): Boolean? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the array is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun CharArray.reduceRightOrNull(operation: (Char, acc: Char) -> Char): Char? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R> Array<out T>.runningFold(initial: R, operation: (acc: R, T) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.runningFold(initial: R, operation: (acc: R, Byte) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.runningFold(initial: R, operation: (acc: R, Short) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.runningFold(initial: R, operation: (acc: R, Int) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.runningFold(initial: R, operation: (acc: R, Long) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.runningFold(initial: R, operation: (acc: R, Float) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.runningFold(initial: R, operation: (acc: R, Double) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.runningFold(initial: R, operation: (acc: R, Boolean) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.runningFold(initial: R, operation: (acc: R, Char) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R> Array<out T>.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List<R> {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList<R>(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Array<out T>.runningReduce(operation: (acc: S, T) -> S): List<S> {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList<S>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.runningReduce(operation: (acc: Byte, Byte) -> Byte): List<Byte> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Byte>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.runningReduce(operation: (acc: Short, Short) -> Short): List<Short> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Short>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.runningReduce(operation: (acc: Int, Int) -> Int): List<Int> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Int>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.runningReduce(operation: (acc: Long, Long) -> Long): List<Long> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Long>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.runningReduce(operation: (acc: Float, Float) -> Float): List<Float> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Float>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.runningReduce(operation: (acc: Double, Double) -> Double): List<Double> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Double>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.runningReduce(operation: (acc: Boolean, Boolean) -> Boolean): List<Boolean> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Boolean>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.runningReduce(operation: (acc: Char, Char) -> Char): List<Char> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Char>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Array<out T>.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List<S> {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList<S>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.runningReduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): List<Byte> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Byte>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.runningReduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): List<Short> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Short>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.runningReduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): List<Int> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Int>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.runningReduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): List<Long> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Long>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.runningReduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): List<Float> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Float>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.runningReduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): List<Double> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Double>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.runningReduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): List<Boolean> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Boolean>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.runningReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List<Char> {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList<Char>(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <T, R> Array<out T>.scan(initial: R, operation: (acc: R, T) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.scan(initial: R, operation: (acc: R, Byte) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.scan(initial: R, operation: (acc: R, Short) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.scan(initial: R, operation: (acc: R, Int) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.scan(initial: R, operation: (acc: R, Long) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.scan(initial: R, operation: (acc: R, Float) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.scan(initial: R, operation: (acc: R, Double) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.scan(initial: R, operation: (acc: R, Boolean) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.scan(initial: R, operation: (acc: R, Char) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <T, R> Array<out T>.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> ByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> ShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> IntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> LongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> FloatArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> DoubleArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> BooleanArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <R> CharArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun <S, T : S> Array<out T>.scanReduce(operation: (acc: S, T) -> S): List<S> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduce(operation: (acc: Byte, Byte) -> Byte): List<Byte> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduce(operation: (acc: Short, Short) -> Short): List<Short> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduce(operation: (acc: Int, Int) -> Int): List<Int> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduce(operation: (acc: Long, Long) -> Long): List<Long> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduce(operation: (acc: Float, Float) -> Float): List<Float> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduce(operation: (acc: Double, Double) -> Double): List<Double> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduce(operation: (acc: Boolean, Boolean) -> Boolean): List<Boolean> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduce(operation: (acc: Char, Char) -> Char): List<Char> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun <S, T : S> Array<out T>.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List<S> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): List<Byte> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): List<Short> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): List<Int> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): List<Long> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): List<Float> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): List<Double> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): List<Boolean> {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List<Char> {\n return runningReduceIndexed(operation)\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun <T> Array<out T>.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumBy(selector: (Short) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumBy(selector: (Int) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumBy(selector: (Long) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumBy(selector: (Float) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun <T> Array<out T>.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.sumOf(selector: (T) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sumOf(selector: (Byte) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sumOf(selector: (Short) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sumOf(selector: (Int) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sumOf(selector: (Long) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sumOf(selector: (Float) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sumOf(selector: (Double) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.sumOf(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sumOf(selector: (Char) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.sumOf(selector: (T) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sumOf(selector: (Byte) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sumOf(selector: (Short) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sumOf(selector: (Int) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sumOf(selector: (Long) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sumOf(selector: (Float) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sumOf(selector: (Double) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.sumOf(selector: (Boolean) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sumOf(selector: (Char) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.sumOf(selector: (T) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sumOf(selector: (Byte) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sumOf(selector: (Short) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sumOf(selector: (Int) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sumOf(selector: (Long) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sumOf(selector: (Float) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sumOf(selector: (Double) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.sumOf(selector: (Boolean) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sumOf(selector: (Char) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.sumOf(selector: (T) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sumOf(selector: (Byte) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sumOf(selector: (Short) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sumOf(selector: (Int) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sumOf(selector: (Long) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sumOf(selector: (Float) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sumOf(selector: (Double) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.sumOf(selector: (Boolean) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sumOf(selector: (Char) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Array<out T>.sumOf(selector: (T) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sumOf(selector: (Byte) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sumOf(selector: (Short) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sumOf(selector: (Int) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sumOf(selector: (Long) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sumOf(selector: (Float) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sumOf(selector: (Double) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.sumOf(selector: (Boolean) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sumOf(selector: (Char) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun <T : Any> Array<T?>.requireNoNulls(): Array<T> {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Array<T>\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun <T> Array<out T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>> {\n val first = ArrayList<T>()\n val second = ArrayList<T>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair<List<Byte>, List<Byte>> {\n val first = ArrayList<Byte>()\n val second = ArrayList<Byte>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair<List<Short>, List<Short>> {\n val first = ArrayList<Short>()\n val second = ArrayList<Short>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair<List<Int>, List<Int>> {\n val first = ArrayList<Int>()\n val second = ArrayList<Int>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair<List<Long>, List<Long>> {\n val first = ArrayList<Long>()\n val second = ArrayList<Long>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair<List<Float>, List<Float>> {\n val first = ArrayList<Float>()\n val second = ArrayList<Float>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair<List<Double>, List<Double>> {\n val first = ArrayList<Double>()\n val second = ArrayList<Double>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair<List<Boolean>, List<Boolean>> {\n val first = ArrayList<Boolean>()\n val second = ArrayList<Boolean>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair<List<Char>, List<Char>> {\n val first = ArrayList<Char>()\n val second = ArrayList<Char>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <T, R> Array<out T>.zip(other: Array<out R>): List<Pair<T, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> ByteArray.zip(other: Array<out R>): List<Pair<Byte, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> ShortArray.zip(other: Array<out R>): List<Pair<Short, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> IntArray.zip(other: Array<out R>): List<Pair<Int, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> LongArray.zip(other: Array<out R>): List<Pair<Long, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> FloatArray.zip(other: Array<out R>): List<Pair<Float, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> DoubleArray.zip(other: Array<out R>): List<Pair<Double, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> BooleanArray.zip(other: Array<out R>): List<Pair<Boolean, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> CharArray.zip(other: Array<out R>): List<Pair<Char, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <T, R, V> Array<out T>.zip(other: Array<out R>, transform: (a: T, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> ByteArray.zip(other: Array<out R>, transform: (a: Byte, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> ShortArray.zip(other: Array<out R>, transform: (a: Short, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> IntArray.zip(other: Array<out R>, transform: (a: Int, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> LongArray.zip(other: Array<out R>, transform: (a: Long, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> FloatArray.zip(other: Array<out R>, transform: (a: Float, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> DoubleArray.zip(other: Array<out R>, transform: (a: Double, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> BooleanArray.zip(other: Array<out R>, transform: (a: Boolean, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> CharArray.zip(other: Array<out R>, transform: (a: Char, b: R) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <T, R> Array<out T>.zip(other: Iterable<R>): List<Pair<T, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> ByteArray.zip(other: Iterable<R>): List<Pair<Byte, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> ShortArray.zip(other: Iterable<R>): List<Pair<Short, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> IntArray.zip(other: Iterable<R>): List<Pair<Int, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> LongArray.zip(other: Iterable<R>): List<Pair<Long, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> FloatArray.zip(other: Iterable<R>): List<Pair<Float, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> DoubleArray.zip(other: Iterable<R>): List<Pair<Double, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> BooleanArray.zip(other: Iterable<R>): List<Pair<Boolean, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <R> CharArray.zip(other: Iterable<R>): List<Pair<Char, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <T, R, V> Array<out T>.zip(other: Iterable<R>, transform: (a: T, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> ByteArray.zip(other: Iterable<R>, transform: (a: Byte, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> ShortArray.zip(other: Iterable<R>, transform: (a: Short, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> IntArray.zip(other: Iterable<R>, transform: (a: Int, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> LongArray.zip(other: Iterable<R>, transform: (a: Long, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> FloatArray.zip(other: Iterable<R>, transform: (a: Float, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> DoubleArray.zip(other: Iterable<R>, transform: (a: Double, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> BooleanArray.zip(other: Iterable<R>, transform: (a: Boolean, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <R, V> CharArray.zip(other: Iterable<R>, transform: (a: Char, b: R) -> V): List<V> {\n val arraySize = size\n val list = ArrayList<V>(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: ByteArray): List<Pair<Byte, Byte>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: ShortArray): List<Pair<Short, Short>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: IntArray): List<Pair<Int, Int>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: LongArray): List<Pair<Long, Long>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: FloatArray): List<Pair<Float, Float>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: DoubleArray): List<Pair<Double, Double>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: BooleanArray): List<Pair<Boolean, Boolean>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: CharArray): List<Pair<Char, Char>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <V> CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List<V> {\n val size = minOf(size, other.size)\n val list = ArrayList<V>(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <T, A : Appendable> Array<out T>.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> ByteArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> ShortArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> IntArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> LongArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> FloatArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> DoubleArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> BooleanArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <A : Appendable> CharArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun <T> Array<out T>.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ByteArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ShortArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun IntArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun LongArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun FloatArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun DoubleArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun BooleanArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun CharArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun <T> Array<out T>.asIterable(): Iterable<T> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ByteArray.asIterable(): Iterable<Byte> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ShortArray.asIterable(): Iterable<Short> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun IntArray.asIterable(): Iterable<Int> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun LongArray.asIterable(): Iterable<Long> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun FloatArray.asIterable(): Iterable<Float> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun DoubleArray.asIterable(): Iterable<Double> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun BooleanArray.asIterable(): Iterable<Boolean> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun CharArray.asIterable(): Iterable<Char> {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun <T> Array<out T>.asSequence(): Sequence<T> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ByteArray.asSequence(): Sequence<Byte> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ShortArray.asSequence(): Sequence<Short> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun IntArray.asSequence(): Sequence<Int> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun LongArray.asSequence(): Sequence<Long> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun FloatArray.asSequence(): Sequence<Float> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun DoubleArray.asSequence(): Sequence<Double> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun BooleanArray.asSequence(): Sequence<Boolean> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun CharArray.asSequence(): Sequence<Char> {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Array<out Byte>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Array<out Short>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Array<out Int>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Array<out Long>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Array<out Float>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Array<out Double>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ByteArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ShortArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun IntArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun LongArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun FloatArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun DoubleArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Array<out Byte>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Array<out Short>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Array<out Int>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Array<out Long>.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Array<out Float>.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Array<out Double>.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ByteArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ShortArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun IntArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun LongArray.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun FloatArray.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun DoubleArray.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.contracts.*\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Interface representing a continuation after a suspension point that returns a value of type `T`.\n */\n@SinceKotlin(\"1.3\")\npublic interface Continuation<in T> {\n /**\n * The context of the coroutine that corresponds to this continuation.\n */\n public val context: CoroutineContext\n\n /**\n * Resumes the execution of the corresponding coroutine passing a successful or failed [result] as the\n * return value of the last suspension point.\n */\n public fun resumeWith(result: Result<T>)\n}\n\n/**\n * Classes and interfaces marked with this annotation are restricted when used as receivers for extension\n * `suspend` functions. These `suspend` extensions can only invoke other member or extension `suspend` functions on this particular\n * receiver and are restricted from calling arbitrary suspension functions.\n */\n@SinceKotlin(\"1.3\")\n@Target(AnnotationTarget.CLASS)\n@Retention(AnnotationRetention.BINARY)\npublic annotation class RestrictsSuspension\n\n/**\n * Resumes the execution of the corresponding coroutine passing [value] as the return value of the last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun <T> Continuation<T>.resume(value: T): Unit =\n resumeWith(Result.success(value))\n\n/**\n * Resumes the execution of the corresponding coroutine so that the [exception] is re-thrown right after the\n * last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun <T> Continuation<T>.resumeWithException(exception: Throwable): Unit =\n resumeWith(Result.failure(exception))\n\n\n/**\n * Creates a [Continuation] instance with the given [context] and implementation of [resumeWith] method.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun <T> Continuation(\n context: CoroutineContext,\n crossinline resumeWith: (Result<T>) -> Unit\n): Continuation<T> =\n object : Continuation<T> {\n override val context: CoroutineContext\n get() = context\n\n override fun resumeWith(result: Result<T>) =\n resumeWith(result)\n }\n\n/**\n * Creates a coroutine without a receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun <T> (suspend () -> T).createCoroutine(\n completion: Continuation<T>\n): Continuation<Unit> =\n SafeContinuation(createCoroutineUnintercepted(completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Creates a coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun <R, T> (suspend R.() -> T).createCoroutine(\n receiver: R,\n completion: Continuation<T>\n): Continuation<Unit> =\n SafeContinuation(createCoroutineUnintercepted(receiver, completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Starts a coroutine without a receiver and with result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun <T> (suspend () -> T).startCoroutine(\n completion: Continuation<T>\n) {\n createCoroutineUnintercepted(completion).intercepted().resume(Unit)\n}\n\n/**\n * Starts a coroutine with receiver type [R] and result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun <R, T> (suspend R.() -> T).startCoroutine(\n receiver: R,\n completion: Continuation<T>\n) {\n createCoroutineUnintercepted(receiver, completion).intercepted().resume(Unit)\n}\n\n/**\n * Obtains the current continuation instance inside suspend functions and suspends\n * the currently running coroutine.\n *\n * In this function both [Continuation.resume] and [Continuation.resumeWithException] can be used either synchronously in\n * the same stack-frame where the suspension function is run or asynchronously later in the same thread or\n * from a different thread of execution. Subsequent invocation of any resume function will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic suspend inline fun <T> suspendCoroutine(crossinline block: (Continuation<T>) -> Unit): T {\n contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }\n return suspendCoroutineUninterceptedOrReturn { c: Continuation<T> ->\n val safe = SafeContinuation(c.intercepted())\n block(safe)\n safe.getOrThrow()\n }\n}\n\n/**\n * Returns the context of the current coroutine.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"WRONG_MODIFIER_TARGET\")\n@InlineOnly\npublic suspend inline val coroutineContext: CoroutineContext\n get() {\n throw NotImplementedError(\"Implemented as intrinsic\")\n }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T : Any> requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T : Any> requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T : Any> checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T : Any> checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNCHECKED_CAST\", \"RedundantVisibilityModifier\")\n\npackage kotlin\n\nimport kotlin.contracts.*\nimport kotlin.internal.InlineOnly\nimport kotlin.jvm.JvmField\nimport kotlin.jvm.JvmName\n\n/**\n * A discriminated union that encapsulates a successful outcome with a value of type [T]\n * or a failure with an arbitrary [Throwable] exception.\n */\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\npublic inline class Result<out T> @PublishedApi internal constructor(\n @PublishedApi\n internal val value: Any?\n) : Serializable {\n // discovery\n\n /**\n * Returns `true` if this instance represents a successful outcome.\n * In this case [isFailure] returns `false`.\n */\n public val isSuccess: Boolean get() = value !is Failure\n\n /**\n * Returns `true` if this instance represents a failed outcome.\n * In this case [isSuccess] returns `false`.\n */\n public val isFailure: Boolean get() = value is Failure\n\n // value & exception retrieval\n\n /**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or `null`\n * if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { null }` (see [getOrElse]) or\n * `fold(onSuccess = { it }, onFailure = { null })` (see [fold]).\n */\n @InlineOnly\n public inline fun getOrNull(): T? =\n when {\n isFailure -> null\n else -> value as T\n }\n\n /**\n * Returns the encapsulated [Throwable] exception if this instance represents [failure][isFailure] or `null`\n * if it is [success][isSuccess].\n *\n * This function is a shorthand for `fold(onSuccess = { null }, onFailure = { it })` (see [fold]).\n */\n public fun exceptionOrNull(): Throwable? =\n when (value) {\n is Failure -> value.exception\n else -> null\n }\n\n /**\n * Returns a string `Success(v)` if this instance represents [success][Result.isSuccess]\n * where `v` is a string representation of the value or a string `Failure(x)` if\n * it is [failure][isFailure] where `x` is a string representation of the exception.\n */\n public override fun toString(): String =\n when (value) {\n is Failure -> value.toString() // \"Failure($exception)\"\n else -> \"Success($value)\"\n }\n\n // companion with constructors\n\n /**\n * Companion object for [Result] class that contains its constructor functions\n * [success] and [failure].\n */\n public companion object {\n /**\n * Returns an instance that encapsulates the given [value] as successful value.\n */\n @Suppress(\"INAPPLICABLE_JVM_NAME\")\n @InlineOnly\n @JvmName(\"success\")\n public inline fun <T> success(value: T): Result<T> =\n Result(value)\n\n /**\n * Returns an instance that encapsulates the given [Throwable] [exception] as failure.\n */\n @Suppress(\"INAPPLICABLE_JVM_NAME\")\n @InlineOnly\n @JvmName(\"failure\")\n public inline fun <T> failure(exception: Throwable): Result<T> =\n Result(createFailure(exception))\n }\n\n internal class Failure(\n @JvmField\n val exception: Throwable\n ) : Serializable {\n override fun equals(other: Any?): Boolean = other is Failure && exception == other.exception\n override fun hashCode(): Int = exception.hashCode()\n override fun toString(): String = \"Failure($exception)\"\n }\n}\n\n/**\n * Creates an instance of internal marker [Result.Failure] class to\n * make sure that this class is not exposed in ABI.\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun createFailure(exception: Throwable): Any =\n Result.Failure(exception)\n\n/**\n * Throws exception if the result is failure. This internal function minimizes\n * inlined bytecode for [getOrThrow] and makes sure that in the future we can\n * add some exception-augmenting logic here (if needed).\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun Result<*>.throwOnFailure() {\n if (value is Result.Failure) throw value.exception\n}\n\n/**\n * Calls the specified function [block] and returns its encapsulated result if invocation was successful,\n * catching any [Throwable] exception that was thrown from the [block] function execution and encapsulating it as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R> runCatching(block: () -> R): Result<R> {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its encapsulated result if invocation was successful,\n * catching any [Throwable] exception that was thrown from the [block] function execution and encapsulating it as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <T, R> T.runCatching(block: T.() -> R): Result<R> {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n// -- extensions ---\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or throws the encapsulated [Throwable] exception\n * if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { throw it }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <T> Result<T>.getOrThrow(): T {\n throwOnFailure()\n return value as T\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * result of [onFailure] function for the encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [onFailure] function.\n *\n * This function is a shorthand for `fold(onSuccess = { it }, onFailure = onFailure)` (see [fold]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T : R> Result<T>.getOrElse(onFailure: (exception: Throwable) -> R): R {\n contract {\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> value as T\n else -> onFailure(exception)\n }\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * [defaultValue] if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { defaultValue }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T : R> Result<T>.getOrDefault(defaultValue: R): R {\n if (isFailure) return defaultValue\n return value as T\n}\n\n/**\n * Returns the result of [onSuccess] for the encapsulated value if this instance represents [success][Result.isSuccess]\n * or the result of [onFailure] function for the encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [onSuccess] or by [onFailure] function.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T> Result<T>.fold(\n onSuccess: (value: T) -> R,\n onFailure: (exception: Throwable) -> R\n): R {\n contract {\n callsInPlace(onSuccess, InvocationKind.AT_MOST_ONCE)\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> onSuccess(value as T)\n else -> onFailure(exception)\n }\n}\n\n// transformation\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [transform] function.\n * See [mapCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T> Result<T>.map(transform: (value: T) -> R): Result<R> {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when {\n isSuccess -> Result.success(transform(value as T))\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * This function catches any [Throwable] exception thrown by [transform] function and encapsulates it as a failure.\n * See [map] for an alternative that rethrows exceptions from `transform` function.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T> Result<T>.mapCatching(transform: (value: T) -> R): Result<R> {\n return when {\n isSuccess -> runCatching { transform(value as T) }\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated [Throwable] exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [transform] function.\n * See [recoverCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T : R> Result<T>.recover(transform: (exception: Throwable) -> R): Result<R> {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> Result.success(transform(exception))\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated [Throwable] exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * This function catches any [Throwable] exception thrown by [transform] function and encapsulates it as a failure.\n * See [recover] for an alternative that rethrows exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <R, T : R> Result<T>.recoverCatching(transform: (exception: Throwable) -> R): Result<R> {\n val value = value // workaround for inline classes BE bug\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> runCatching { transform(exception) }\n }\n}\n\n// \"peek\" onto value/exception and pipe\n\n/**\n * Performs the given [action] on the encapsulated [Throwable] exception if this instance represents [failure][Result.isFailure].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <T> Result<T>.onFailure(action: (exception: Throwable) -> Unit): Result<T> {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n exceptionOrNull()?.let { action(it) }\n return this\n}\n\n/**\n * Performs the given [action] on the encapsulated value if this instance represents [success][Result.isSuccess].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun <T> Result<T>.onSuccess(action: (value: T) -> Unit): Result<T> {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n if (isSuccess) action(value as T)\n return this\n}\n\n// -------------------\n",null,null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.*\n\n/**\n * A mutable sequence of characters.\n *\n * String builder can be used to efficiently perform multiple string manipulation operations.\n */\nexpect class StringBuilder : Appendable, CharSequence {\n /** Constructs an empty string builder. */\n constructor()\n\n /** Constructs an empty string builder with the specified initial [capacity]. */\n constructor(capacity: Int)\n\n /** Constructs a string builder that contains the same characters as the specified [content] char sequence. */\n constructor(content: CharSequence)\n\n /** Constructs a string builder that contains the same characters as the specified [content] string. */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n constructor(content: String)\n\n override val length: Int\n\n override operator fun get(index: Int): Char\n\n override fun subSequence(startIndex: Int, endIndex: Int): CharSequence\n\n override fun append(value: Char): StringBuilder\n override fun append(value: CharSequence?): StringBuilder\n override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder\n\n /**\n * Reverses the contents of this string builder and returns this instance.\n *\n * Surrogate pairs included in this string builder are treated as single characters.\n * Therefore, the order of the high-low surrogates is never reversed.\n *\n * Note that the reverse operation may produce new surrogate pairs that were unpaired low-surrogates and high-surrogates before the operation.\n * For example, reversing `\"\\uDC00\\uD800\"` produces `\"\\uD800\\uDC00\"` which is a valid surrogate pair.\n */\n fun reverse(): StringBuilder\n\n /**\n * Appends the string representation of the specified object [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n fun append(value: Any?): StringBuilder\n\n /**\n * Appends the string representation of the specified boolean [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n @SinceKotlin(\"1.3\")\n fun append(value: Boolean): StringBuilder\n\n /**\n * Appends characters in the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at the index 0.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun append(value: CharArray): StringBuilder\n\n /**\n * Appends the specified string [value] to this string builder and returns this instance.\n *\n * If [value] is `null`, then the four characters `\"null\"` are appended.\n */\n @SinceKotlin(\"1.3\")\n fun append(value: String?): StringBuilder\n\n /**\n * Returns the current capacity of this string builder.\n *\n * The capacity is the maximum length this string builder can have before an allocation occurs.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n @Deprecated(\"Obtaining StringBuilder capacity is not supported in JS and common code.\", level = DeprecationLevel.ERROR)\n fun capacity(): Int\n\n /**\n * Ensures that the capacity of this string builder is at least equal to the specified [minimumCapacity].\n *\n * If the current capacity is less than the [minimumCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun ensureCapacity(minimumCapacity: Int)\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun indexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string],\n * starting at the specified [startIndex].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun indexOf(string: String, startIndex: Int): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string].\n * The last occurrence of empty string `\"\"` is considered to be at the index equal to `this.length`.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun lastIndexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string],\n * starting from the specified [startIndex] toward the beginning.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun lastIndexOf(string: String, startIndex: Int): Int\n\n /**\n * Inserts the string representation of the specified boolean [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Boolean): StringBuilder\n\n /**\n * Inserts the specified character [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Char): StringBuilder\n\n /**\n * Inserts characters in the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] character array, starting at [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: CharArray): StringBuilder\n\n /**\n * Inserts characters in the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which characters are inserted. If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: CharSequence?): StringBuilder\n\n /**\n * Inserts the string representation of the specified object [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Any?): StringBuilder\n\n /**\n * Inserts the string [value] into this string builder at the specified [index] and returns this instance.\n *\n * If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: String?): StringBuilder\n\n /**\n * Sets the length of this string builder to the specified [newLength].\n *\n * If the [newLength] is less than the current length, it is changed to the specified [newLength].\n * Otherwise, null characters '\\u0000' are appended to this string builder until its length is less than the [newLength].\n *\n * Note that in Kotlin/JS [set] operator function has non-constant execution time complexity.\n * Therefore, increasing length of this string builder and then updating each character by index may slow down your program.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [newLength] is less than zero.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun setLength(newLength: Int)\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [length] (exclusive).\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun substring(startIndex: Int): String\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [endIndex] (exclusive).\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun substring(startIndex: Int, endIndex: Int): String\n\n /**\n * Attempts to reduce storage used for this string builder.\n *\n * If the backing storage of this string builder is larger than necessary to hold its current contents,\n * then it may be resized to become more space efficient.\n * Calling this method may, but is not required to, affect the value of the [capacity] property.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun trimToSize()\n}\n\n\n/**\n * Clears the content of this string builder making it empty and returns this instance.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n@SinceKotlin(\"1.3\")\npublic expect fun StringBuilder.clear(): StringBuilder\n\n/**\n * Sets the character at the specified [index] to the specified [value].\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect operator fun StringBuilder.set(index: Int, value: Char)\n\n/**\n * Replaces characters in the specified range of this string builder with characters in the specified string [value] and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to replace.\n * @param endIndex the end (exclusive) of the range to replace.\n * @param value the string to replace with.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [startIndex] is less than zero, greater than the length of this string builder, or `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder\n\n/**\n * Removes the character at the specified [index] from this string builder and returns this instance.\n *\n * If the `Char` at the specified [index] is part of a supplementary code point, this method does not remove the entire supplementary character.\n *\n * @param index the index of `Char` to remove.\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.deleteAt(index: Int): StringBuilder\n\n/**\n * Removes characters in the specified range from this string builder and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to remove.\n * @param endIndex the end (exclusive) of the range to remove.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.deleteRange(startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Copies characters from this string builder into the [destination] character array.\n *\n * @param destination the array to copy to.\n * @param destinationOffset the position in the array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the range to copy, 0 by default.\n * @param endIndex the end (exclusive) of the range to copy, length of this string builder by default.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length)\n\n/**\n * Appends characters in a subarray of the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at specified [startIndex].\n *\n * @param value the array from which characters are appended.\n * @param startIndex the beginning (inclusive) of the subarray to append.\n * @param endIndex the end (exclusive) of the subarray to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this string builder and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.appendRange(value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subarray of the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] array, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the array from which characters are inserted.\n * @param startIndex the beginning (inclusive) of the subarray to insert.\n * @param endIndex the end (exclusive) of the subarray to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subsequence of the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which a subsequence is inserted.\n * @param startIndex the beginning (inclusive) of the subsequence to insert.\n * @param endIndex the end (exclusive) of the subsequence to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.insertRange(index: Int, value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n@Deprecated(\"Use append(value: Any?) instead\", ReplaceWith(\"append(value = obj)\"), DeprecationLevel.WARNING)\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.append(obj: Any?): StringBuilder = this.append(obj)\n\n/**\n * Builds new string by populating newly created [StringBuilder] using provided [builderAction]\n * and then converting it to [String].\n */\n@kotlin.internal.InlineOnly\npublic inline fun buildString(builderAction: StringBuilder.() -> Unit): String {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return StringBuilder().apply(builderAction).toString()\n}\n\n/**\n * Builds new string by populating newly created [StringBuilder] initialized with the given [capacity]\n * using provided [builderAction] and then converting it to [String].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun buildString(capacity: Int, builderAction: StringBuilder.() -> Unit): String {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return StringBuilder(capacity).apply(builderAction).toString()\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: String?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: Any?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/** Appends a line feed character (`\\n`) to this StringBuilder. */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(): StringBuilder = append('\\n')\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: CharSequence?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: String?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Any?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: CharArray): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Char): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Boolean): StringBuilder = append(value).appendLine()\n",null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:Suppress(\"DEPRECATION_ERROR\")\npackage kotlin.math\n\n\nimport kotlin.internal.InlineOnly\nimport kotlin.js.Math as nativeMath\n\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Double): Double = nativeMath.sin(x)\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Double): Double = nativeMath.cos(x)\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Double): Double = nativeMath.tan(x)\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Double): Double = nativeMath.asin(x)\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Double): Double = nativeMath.acos(x)\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Double): Double = nativeMath.atan(x)\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Double, x: Double): Double = nativeMath.atan2(y, x)\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Double): Double = nativeMath.sinh(x)\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Double): Double = nativeMath.cosh(x)\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Double): Double = nativeMath.tanh(x)\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Double): Double = nativeMath.asinh(x)\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Double): Double = nativeMath.acosh(x)\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Double): Double = nativeMath.atanh(x)\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Double, y: Double): Double = nativeMath.hypot(x, y)\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Double): Double = nativeMath.sqrt(x)\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Double): Double = nativeMath.exp(x)\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Double): Double = nativeMath.expm1(x)\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun log(x: Double, base: Double): Double {\n if (base <= 0.0 || base == 1.0) return Double.NaN\n return nativeMath.log(x) / nativeMath.log(base)\n}\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Double): Double = nativeMath.log(x)\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Double): Double = nativeMath.log10(x)\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Double): Double = nativeMath.log2(x)\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Double): Double = nativeMath.log1p(x)\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Double): Double = nativeMath.ceil(x).unsafeCast<Double>() // TODO: Remove unsafe cast after removing public js.math\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Double): Double = nativeMath.floor(x).unsafeCast<Double>()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Double): Double = nativeMath.trunc(x)\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun round(x: Double): Double {\n if (x % 0.5 != 0.0) {\n return nativeMath.round(x).unsafeCast<Double>()\n }\n val floor = floor(x)\n return if (floor % 2 == 0.0) floor else ceil(x)\n}\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Double): Double = nativeMath.abs(x)\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Double): Double = nativeMath.sign(x)\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Double, b: Double): Double = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Double, b: Double): Double = nativeMath.max(a, b)\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(x: Double): Double = nativeMath.pow(this, x)\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(n: Int): Double = nativeMath.pow(this, n.toDouble())\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.absoluteValue: Double get() = nativeMath.abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.sign: Double get() = nativeMath.sign(this)\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.withSign(sign: Int): Double = this.withSign(sign.toDouble())\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic actual val Double.ulp: Double get() = when {\n this < 0 -> (-this).ulp\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == Double.MAX_VALUE -> this - this.nextDown()\n else -> this.nextUp() - this\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextUp(): Double = when {\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == 0.0 -> Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) 1 else -1)\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextDown(): Double = when {\n this.isNaN() || this == Double.NEGATIVE_INFINITY -> this\n this == 0.0 -> -Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) -1 else 1)\n}\n\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextTowards(to: Double): Double = when {\n this.isNaN() || to.isNaN() -> Double.NaN\n to == this -> to\n to > this -> this.nextUp()\n else /* to < this */ -> this.nextDown()\n}\n\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToInt(): Int = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Int.MAX_VALUE -> Int.MAX_VALUE\n this < Int.MIN_VALUE -> Int.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast<Double>().toInt()\n}\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToLong(): Long = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Long.MAX_VALUE -> Long.MAX_VALUE\n this < Long.MIN_VALUE -> Long.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast<Double>().toLong()\n}\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Float): Float = nativeMath.sin(x.toDouble()).toFloat()\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Float): Float = nativeMath.cos(x.toDouble()).toFloat()\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Float): Float = nativeMath.tan(x.toDouble()).toFloat()\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Float): Float = nativeMath.asin(x.toDouble()).toFloat()\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Float): Float = nativeMath.acos(x.toDouble()).toFloat()\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Float): Float = nativeMath.atan(x.toDouble()).toFloat()\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Float, x: Float): Float = nativeMath.atan2(y.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Float): Float = nativeMath.sinh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Float): Float = nativeMath.cosh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Float): Float = nativeMath.tanh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Float): Float = nativeMath.asinh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Float): Float = nativeMath.acosh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Float): Float = nativeMath.atanh(x.toDouble()).toFloat()\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Float, y: Float): Float = nativeMath.hypot(x.toDouble(), y.toDouble()).toFloat()\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Float): Float = nativeMath.sqrt(x.toDouble()).toFloat()\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Float): Float = nativeMath.exp(x.toDouble()).toFloat()\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Float): Float = nativeMath.expm1(x.toDouble()).toFloat()\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log(x: Float, base: Float): Float = log(x.toDouble(), base.toDouble()).toFloat()\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Float): Float = nativeMath.log(x.toDouble()).toFloat()\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Float): Float = nativeMath.log10(x.toDouble()).toFloat()\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Float): Float = nativeMath.log2(x.toDouble()).toFloat()\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Float): Float = nativeMath.log1p(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Float): Float = nativeMath.ceil(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Float): Float = nativeMath.floor(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Float): Float = truncate(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun round(x: Float): Float = round(x.toDouble()).toFloat()\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Float): Float = nativeMath.abs(x.toDouble()).toFloat()\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Float): Float = nativeMath.sign(x.toDouble()).toFloat()\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Float, b: Float): Float = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Float, b: Float): Float = nativeMath.max(a, b)\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(x: Float): Float = nativeMath.pow(this.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(n: Int): Float = nativeMath.pow(this.toDouble(), n.toDouble()).toFloat()\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.absoluteValue: Float get() = nativeMath.abs(this.toDouble()).toFloat()\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.sign: Float get() = nativeMath.sign(this.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Float): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Int): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToInt(): Int = toDouble().roundToInt()\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToLong(): Long = toDouble().roundToLong()\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n// TODO: remove manual 'or' when KT-19290 is fixed\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Int): Int = if (n < 0) (-n or 0) else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Int, b: Int): Int = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Int, b: Int): Int = nativeMath.max(a, b)\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Int.absoluteValue: Int get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Int.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Long): Long = if (n < 0) -n else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun max(a: Long, b: Long): Long = if (a >= b) a else b\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Long.absoluteValue: Long get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Long.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n// endregion\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.internal.InlineOnly\n\n\n/**\n * Returns a hash code value for the object or zero if the object is `null`.\n *\n * @see Any.hashCode\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Any?.hashCode(): Int = this?.hashCode() ?: 0\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport primitiveArrayConcat\nimport withType\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun <T> Array<out T>.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ByteArray.elementAt(index: Int): Byte {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ShortArray.elementAt(index: Int): Short {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun IntArray.elementAt(index: Int): Int {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun LongArray.elementAt(index: Int): Long {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun FloatArray.elementAt(index: Int): Float {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun DoubleArray.elementAt(index: Int): Double {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun BooleanArray.elementAt(index: Int): Boolean {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun CharArray.elementAt(index: Int): Char {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun <T> Array<out T>.asList(): List<T> {\n return ArrayList<T>(this.unsafeCast<Array<Any?>>())\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ByteArray.asList(): List<Byte> {\n return this.unsafeCast<Array<Byte>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ShortArray.asList(): List<Short> {\n return this.unsafeCast<Array<Short>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun IntArray.asList(): List<Int> {\n return this.unsafeCast<Array<Int>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun LongArray.asList(): List<Long> {\n return this.unsafeCast<Array<Long>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun FloatArray.asList(): List<Float> {\n return this.unsafeCast<Array<Float>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun DoubleArray.asList(): List<Double> {\n return this.unsafeCast<Array<Double>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun BooleanArray.asList(): List<Boolean> {\n return this.unsafeCast<Array<Boolean>>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun CharArray.asList(): List<Char> {\n return object : AbstractList<Char>(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: Char): Boolean = this@asList.contains(element)\n override fun get(index: Int): Char {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic actual infix fun <T> Array<out T>.contentDeepEquals(other: Array<out T>): Boolean {\n return this.contentDeepEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The specified arrays are also considered deeply equal if both are `null`.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayDeepEquals\")\npublic actual infix fun <T> Array<out T>?.contentDeepEquals(other: Array<out T>?): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic actual fun <T> Array<out T>.contentDeepHashCode(): Int {\n return this.contentDeepHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayDeepHashCode\")\npublic actual fun <T> Array<out T>?.contentDeepHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.LowPriorityInOverloadResolution\npublic actual fun <T> Array<out T>.contentDeepToString(): String {\n return this.contentDeepToString()\n}\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayDeepToString\")\npublic actual fun <T> Array<out T>?.contentDeepToString(): String {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun <T> Array<out T>.contentEquals(other: Array<out T>): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun ByteArray.contentEquals(other: ByteArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun ShortArray.contentEquals(other: ShortArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun IntArray.contentEquals(other: IntArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun LongArray.contentEquals(other: LongArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun FloatArray.contentEquals(other: FloatArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual infix fun CharArray.contentEquals(other: CharArray): Boolean {\n return this.contentEquals(other)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun <T> Array<out T>?.contentEquals(other: Array<out T>?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun ByteArray?.contentEquals(other: ByteArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun ShortArray?.contentEquals(other: ShortArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun IntArray?.contentEquals(other: IntArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun LongArray?.contentEquals(other: LongArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun FloatArray?.contentEquals(other: FloatArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun DoubleArray?.contentEquals(other: DoubleArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun BooleanArray?.contentEquals(other: BooleanArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayEquals\")\npublic actual infix fun CharArray?.contentEquals(other: CharArray?): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun <T> Array<out T>.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun ByteArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun ShortArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun IntArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun LongArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun FloatArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun DoubleArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun BooleanArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun CharArray.contentHashCode(): Int {\n return this.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun <T> Array<out T>?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun ByteArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun ShortArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun IntArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun LongArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun FloatArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun DoubleArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun BooleanArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayHashCode\")\npublic actual fun CharArray?.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun <T> Array<out T>.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun ByteArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun ShortArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun IntArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun LongArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun FloatArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun DoubleArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun BooleanArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.1\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\npublic actual fun CharArray.contentToString(): String {\n return this.contentToString()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun <T> Array<out T>?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun ByteArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun ShortArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun IntArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun LongArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun FloatArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun DoubleArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun BooleanArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.4\")\n@library(\"arrayToString\")\npublic actual fun CharArray?.contentToString(): String {\n definedExternally\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun <T> Array<out T>.copyInto(destination: Array<T>, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array<T> {\n arrayCopy(this, destination, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray {\n arrayCopy(this.unsafeCast<Array<Byte>>(), destination.unsafeCast<Array<Byte>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray {\n arrayCopy(this.unsafeCast<Array<Short>>(), destination.unsafeCast<Array<Short>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray {\n arrayCopy(this.unsafeCast<Array<Int>>(), destination.unsafeCast<Array<Int>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray {\n arrayCopy(this.unsafeCast<Array<Long>>(), destination.unsafeCast<Array<Long>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray {\n arrayCopy(this.unsafeCast<Array<Float>>(), destination.unsafeCast<Array<Float>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray {\n arrayCopy(this.unsafeCast<Array<Double>>(), destination.unsafeCast<Array<Double>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray {\n arrayCopy(this.unsafeCast<Array<Boolean>>(), destination.unsafeCast<Array<Boolean>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray {\n arrayCopy(this.unsafeCast<Array<Char>>(), destination.unsafeCast<Array<Char>>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun <T> Array<out T>.copyOf(): Array<T> {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ByteArray.copyOf(): ByteArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ShortArray.copyOf(): ShortArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun IntArray.copyOf(): IntArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun LongArray.copyOf(): LongArray {\n return withType(\"LongArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun FloatArray.copyOf(): FloatArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun DoubleArray.copyOf(): DoubleArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun BooleanArray.copyOf(): BooleanArray {\n return withType(\"BooleanArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun CharArray.copyOf(): CharArray {\n return withType(\"CharArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ByteArray.copyOf(newSize: Int): ByteArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ByteArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ShortArray.copyOf(newSize: Int): ShortArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ShortArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun IntArray.copyOf(newSize: Int): IntArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, IntArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun LongArray.copyOf(newSize: Int): LongArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"LongArray\", arrayCopyResize(this, newSize, 0L))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun FloatArray.copyOf(newSize: Int): FloatArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, FloatArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun DoubleArray.copyOf(newSize: Int): DoubleArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, DoubleArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun BooleanArray.copyOf(newSize: Int): BooleanArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"BooleanArray\", arrayCopyResize(this, newSize, false))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun CharArray.copyOf(newSize: Int): CharArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"CharArray\", fillFrom(this, CharArray(newSize)))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun <T> Array<out T>.copyOf(newSize: Int): Array<T?> {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return arrayCopyResize(this, newSize, null)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun <T> Array<out T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T> {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"LongArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"BooleanArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive) to copy.\n * @param toIndex the end of the range (exclusive) to copy.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\npublic actual fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"CharArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun <T> Array<T>.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive) to fill, 0 by default.\n * @param toIndex the end of the range (exclusive) to fill, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun <T> Array<out T>.plus(element: T): Array<T> {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(element: Byte): ByteArray {\n return plus(byteArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(element: Short): ShortArray {\n return plus(shortArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(element: Int): IntArray {\n return plus(intArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(element: Long): LongArray {\n return plus(longArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(element: Float): FloatArray {\n return plus(floatArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(element: Double): DoubleArray {\n return plus(doubleArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(element: Boolean): BooleanArray {\n return plus(booleanArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(element: Char): CharArray {\n return plus(charArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual operator fun <T> Array<out T>.plus(elements: Collection<T>): Array<T> {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ByteArray.plus(elements: Collection<Byte>): ByteArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ShortArray.plus(elements: Collection<Short>): ShortArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun IntArray.plus(elements: Collection<Int>): IntArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun LongArray.plus(elements: Collection<Long>): LongArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun FloatArray.plus(elements: Collection<Float>): FloatArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun DoubleArray.plus(elements: Collection<Double>): DoubleArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun BooleanArray.plus(elements: Collection<Boolean>): BooleanArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun CharArray.plus(elements: Collection<Char>): CharArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun <T> Array<out T>.plus(elements: Array<out T>): Array<T> {\n return this.asDynamic().concat(elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(elements: ByteArray): ByteArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(elements: ShortArray): ShortArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(elements: IntArray): IntArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(elements: LongArray): LongArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(elements: FloatArray): FloatArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(elements: CharArray): CharArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun <T> Array<out T>.plusElement(element: T): Array<T> {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun IntArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic actual fun LongArray.sort(): Unit {\n if (size > 1) sort { a: Long, b: Long -> a.compareTo(b) }\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun ByteArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun ShortArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun DoubleArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun FloatArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun CharArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable\n */\npublic actual fun <T : Comparable<T>> Array<out T>.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T> Array<out T>.sort(comparison: (a: T, b: T) -> Int): Unit {\n if (size > 1) sortArrayWith(this, comparison)\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArrayOfComparable\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun <T : Comparable<T>> Array<out T>.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArrayWith(this, fromIndex, toIndex, naturalOrder())\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<ByteArray>()\n subarray.sort()\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<ShortArray>()\n subarray.sort()\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun IntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<IntArray>()\n subarray.sort()\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun LongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArrayWith(this.unsafeCast<Array<Long>>(), fromIndex, toIndex, naturalOrder())\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun FloatArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<FloatArray>()\n subarray.sort()\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun DoubleArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<DoubleArray>()\n subarray.sort()\n}\n\n/**\n * Sorts a range in the array in-place.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n * \n * @sample samples.collections.Arrays.Sorting.sortRangeOfArray\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast<CharArray>()\n subarray.sort()\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sort(noinline comparison: (a: Byte, b: Byte) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sort(noinline comparison: (a: Short, b: Short) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sort(noinline comparison: (a: Int, b: Int) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sort(noinline comparison: (a: Long, b: Long) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sort(noinline comparison: (a: Float, b: Float) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sort(noinline comparison: (a: Double, b: Double) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sort(noinline comparison: (a: Char, b: Char) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun <T> Array<out T>.sortWith(comparator: Comparator<in T>): Unit {\n if (size > 1) sortArrayWith(this, comparator)\n}\n\n/**\n * Sorts a range in the array in-place with the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @param fromIndex the start of the range (inclusive) to sort, 0 by default.\n * @param toIndex the end of the range (exclusive) to sort, size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.4\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun <T> Array<out T>.sortWith(comparator: Comparator<in T>, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArrayWith(this, fromIndex, toIndex, comparator)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ByteArray.toTypedArray(): Array<Byte> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ShortArray.toTypedArray(): Array<Short> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun IntArray.toTypedArray(): Array<Int> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun LongArray.toTypedArray(): Array<Long> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun FloatArray.toTypedArray(): Array<Float> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun DoubleArray.toTypedArray(): Array<Double> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun BooleanArray.toTypedArray(): Array<Boolean> {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun CharArray.toTypedArray(): Array<Char> {\n return Array(size) { index -> this[index] }\n}\n\n",null,null,null,null,null,null,null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 1.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> List<T>.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 2.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> List<T>.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 3.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> List<T>.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 4.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> List<T>.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 5.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> List<T>.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable<T>.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun <T> Iterable<T>.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun <T> Iterable<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun <T> Iterable<T>.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun <T> Iterable<T>.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun <T> List<T>.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun <T> Iterable<T>.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun <T> Iterable<T>.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun <T> List<T>.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun <T> Iterable<T>.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun <T> List<T>.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable<T>.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List<T>.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun <T> Iterable<T>.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun <T> List<T>.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun <T> Iterable<T>.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun <T> List<T>.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun <T> Iterable<T>.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun <T> List<T>.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun <T> Iterable<T>.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun <T> List<T>.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable<T>.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List<T>.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n */\npublic fun <T> Iterable<T>.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n */\npublic fun <T> List<T>.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun <T> Iterable<T>.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun <T> List<T>.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun <T> Collection<T>.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this collection, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> Collection<T>.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun <T> Iterable<T>.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun <T> List<T>.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun <T> Iterable<T>.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun <T> Iterable<T>.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun <T> List<T>.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun <T> Iterable<T>.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> Iterable<T>.drop(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList<T>\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList<T>(resultSize)\n if (this is List<T>) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList<T>()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> List<T>.dropLast(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun <T> List<T>.dropLastWhile(predicate: (T) -> Boolean): List<T> {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun <T> Iterable<T>.dropWhile(predicate: (T) -> Boolean): List<T> {\n var yielding = false\n val list = ArrayList<T>()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {\n return filterTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun <T> Iterable<T>.filterIndexed(predicate: (index: Int, T) -> Boolean): List<T> {\n return filterIndexedTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstance\n */\npublic inline fun <reified R> Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList<R>())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstanceTo\n */\npublic inline fun <reified R, C : MutableCollection<in R>> Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun <T> Iterable<T>.filterNot(predicate: (T) -> Boolean): List<T> {\n return filterNotTo(ArrayList<T>(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun <T : Any> Iterable<T?>.filterNotNull(): List<T> {\n return filterNotNullTo(ArrayList<T>())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterNotNullTo\n */\npublic fun <C : MutableCollection<in T>, T : Any> Iterable<T?>.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun <T> List<T>.slice(indices: IntRange): List<T> {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun <T> List<T>.slice(indices: Iterable<Int>): List<T> {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList<T>(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> Iterable<T>.take(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection<T>) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList<T>(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> List<T>.takeLast(n: Int): List<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList<T>(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun <T> List<T>.takeLastWhile(predicate: (T) -> Boolean): List<T> {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList<T>(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun <T> Iterable<T>.takeWhile(predicate: (T) -> Boolean): List<T> {\n val list = ArrayList<T>()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun <T> MutableList<T>.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun <T> Iterable<T>.reversed(): List<T> {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Randomly shuffles elements in this list in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.3\")\npublic fun <T> MutableList<T>.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n this[j] = this.set(i, this[j])\n }\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> MutableList<T>.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> MutableList<T>.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> MutableList<T>.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Iterable<T>.sorted(): List<T> {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray<Comparable<T>>() as Array<T>).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <T, R : Comparable<R>> Iterable<T>.sortedBy(crossinline selector: (T) -> R?): List<T> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun <T, R : Comparable<R>> Iterable<T>.sortedByDescending(crossinline selector: (T) -> R?): List<T> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T : Comparable<T>> Iterable<T>.sortedDescending(): List<T> {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun <T> Iterable<T>.sortedWith(comparator: Comparator<in T>): List<T> {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray<Any?>() as Array<T>).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection<Boolean>.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection<Byte>.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection<Char>.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection<Double>.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection<Float>.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection<Int>.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection<Long>.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection<Short>.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun <T, K, V> Iterable<T>.associate(transform: (T) -> Pair<K, V>): Map<K, V> {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap<K, V>(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun <T, K> Iterable<T>.associateBy(keySelector: (T) -> K): Map<K, T> {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, T>(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun <T, K, V> Iterable<T>.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, V> {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap<K, V>(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun <T, K, M : MutableMap<in K, in T>> Iterable<T>.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Iterable<T>.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Iterable<T>.associateTo(destination: M, transform: (T) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun <K, V> Iterable<K>.associateWith(valueSelector: (K) -> V): Map<K, V> {\n val result = LinkedHashMap<K, V>(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun <K, V, M : MutableMap<in K, in V>> Iterable<K>.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun <T, C : MutableCollection<in T>> Iterable<T>.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun <T> Iterable<T>.toHashSet(): HashSet<T> {\n return toCollection(HashSet<T>(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun <T> Iterable<T>.toList(): List<T> {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this collection.\n */\npublic fun <T> Iterable<T>.toMutableList(): MutableList<T> {\n if (this is Collection<T>)\n return this.toMutableList()\n return toCollection(ArrayList<T>())\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this collection.\n */\npublic fun <T> Collection<T>.toMutableList(): MutableList<T> {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun <T> Iterable<T>.toSet(): Set<T> {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet<T>(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet<T>()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun <T, R> Iterable<T>.flatMap(transform: (T) -> Iterable<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequence\")\npublic inline fun <T, R> Iterable<T>.flatMap(transform: (T) -> Sequence<R>): List<R> {\n return flatMapTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequence\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.flatMapIndexed(transform: (index: Int, T) -> Sequence<R>): List<R> {\n return flatMapIndexedTo(ArrayList<R>(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequenceTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapTo(destination: C, transform: (T) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequenceTo\")\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapTo(destination: C, transform: (T) -> Sequence<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K> Iterable<T>.groupBy(keySelector: (T) -> K): Map<K, List<T>> {\n return groupByTo(LinkedHashMap<K, MutableList<T>>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V> Iterable<T>.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K, M : MutableMap<in K, MutableList<T>>> Iterable<T>.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<T>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Iterable<T>.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun <T, K> Iterable<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {\n return object : Grouping<T, K> {\n override fun sourceIterator(): Iterator<T> = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R> {\n return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R> Iterable<T>.mapIndexed(transform: (index: Int, T) -> R): List<R> {\n return mapIndexedTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R : Any> Iterable<T>.mapIndexedNotNull(transform: (index: Int, T) -> R?): List<R> {\n return mapIndexedNotNullTo(ArrayList<R>(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Iterable<T>.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.mapNotNull\n */\npublic inline fun <T, R : Any> Iterable<T>.mapNotNull(transform: (T) -> R?): List<R> {\n return mapNotNullTo(ArrayList<R>(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Iterable<T>.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original collection\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * Among equal elements of the given collection, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun <T> Iterable<T>.distinct(): List<T> {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * Among elements of the given collection with equal keys, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun <T, K> Iterable<T>.distinctBy(selector: (T) -> K): List<T> {\n val set = HashSet<K>()\n val list = ArrayList<T>()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this collection and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun <T> Iterable<T>.intersect(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun <T> Iterable<T>.subtract(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun <T> Iterable<T>.toMutableSet(): MutableSet<T> {\n return when (this) {\n is Collection<T> -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet<T>())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun <T> Iterable<T>.union(other: Iterable<T>): Set<T> {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun <T> Iterable<T>.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun <T> Iterable<T>.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun <T> Iterable<T>.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the collection is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Iterable<T>.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Returns the specified [initial] value if the collection is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun <T, R> Iterable<T>.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the list is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <T, R> List<T>.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Returns the specified [initial] value if the list is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun <T, R> List<T>.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun <T> Iterable<T>.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable<Double>.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable<Float>.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Iterable<T>.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Iterable<T>.maxBy(selector: (T) -> R): T? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Iterable<T>.maxByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.maxOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.maxOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Iterable<T>.maxOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.maxOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.maxOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Iterable<T>.maxOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.maxOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable<Double>.maxOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable<Float>.maxOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Iterable<T>.maxOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Iterable<T>.maxWith(comparator: Comparator<in T>): T? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Iterable<T>.maxWithOrNull(comparator: Comparator<in T>): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable<Double>.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable<Float>.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Iterable<T>.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Iterable<T>.minBy(selector: (T) -> R): T? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Iterable<T>.minByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.minOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.minOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Iterable<T>.minOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.minOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.minOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Iterable<T>.minOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.minOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Iterable<T>.minOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable<Double>.minOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable<Float>.minOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Iterable<T>.minOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Iterable<T>.minWith(comparator: Comparator<in T>): T? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Iterable<T>.minWithOrNull(comparator: Comparator<in T>): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun <T> Iterable<T>.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun <T> Iterable<T>.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun <T, C : Iterable<T>> C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the collection itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, C : Iterable<T>> C.onEachIndexed(action: (index: Int, T) -> Unit): C {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this collection is empty. If the collection can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Iterable<T>.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Throws an exception if this collection is empty. If the collection can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Iterable<T>.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Returns `null` if the collection is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Iterable<T>.reduceIndexedOrNull(operation: (index: Int, acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the collection is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Iterable<T>.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this list is empty. If the list can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun <S, T : S> List<T>.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Throws an exception if this list is empty. If the list can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun <S, T : S> List<T>.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Returns `null` if the list is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> List<T>.reduceRightIndexedOrNull(operation: (index: Int, T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the list is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> List<T>.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R> Iterable<T>.runningFold(initial: R, operation: (acc: R, T) -> R): List<R> {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList<R>(estimatedSize + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R> Iterable<T>.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List<R> {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList<R>(estimatedSize + 1).apply { add(initial) }\n var index = 0\n var accumulator = initial\n for (element in this) {\n accumulator = operation(index++, accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Iterable<T>.runningReduce(operation: (acc: S, T) -> S): List<S> {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList<S>(collectionSizeOrDefault(10)).apply { add(accumulator) }\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Iterable<T>.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List<S> {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList<S>(collectionSizeOrDefault(10)).apply { add(accumulator) }\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(index++, accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <T, R> Iterable<T>.scan(initial: R, operation: (acc: R, T) -> R): List<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <T, R> Iterable<T>.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun <S, T : S> Iterable<T>.scanReduce(operation: (acc: S, T) -> S): List<S> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun <S, T : S> Iterable<T>.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List<S> {\n return runningReduceIndexed(operation)\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun <T> Iterable<T>.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun <T> Iterable<T>.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.sumOf(selector: (T) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.sumOf(selector: (T) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.sumOf(selector: (T) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.sumOf(selector: (T) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.sumOf(selector: (T) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun <T : Any> Iterable<T?>.requireNoNulls(): Iterable<T> {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable<T>\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun <T : Any> List<T?>.requireNoNulls(): List<T> {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List<T>\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Iterable<T>.chunked(size: Int): List<List<T>> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun <T, R> Iterable<T>.chunked(size: Int, transform: (List<T>) -> R): List<R> {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun <T> Iterable<T>.minus(element: T): List<T> {\n val result = ArrayList<T>(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun <T> Iterable<T>.minus(elements: Array<out T>): List<T> {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun <T> Iterable<T>.minus(elements: Iterable<T>): List<T> {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun <T> Iterable<T>.minus(elements: Sequence<T>): List<T> {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.minusElement(element: T): List<T> {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Iterables.Operations.partition\n */\npublic inline fun <T> Iterable<T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>> {\n val first = ArrayList<T>()\n val second = ArrayList<T>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun <T> Iterable<T>.plus(element: T): List<T> {\n if (this is Collection) return this.plus(element)\n val result = ArrayList<T>()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun <T> Collection<T>.plus(element: T): List<T> {\n val result = ArrayList<T>(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun <T> Iterable<T>.plus(elements: Array<out T>): List<T> {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList<T>()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun <T> Collection<T>.plus(elements: Array<out T>): List<T> {\n val result = ArrayList<T>(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun <T> Iterable<T>.plus(elements: Iterable<T>): List<T> {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList<T>()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun <T> Collection<T>.plus(elements: Iterable<T>): List<T> {\n if (elements is Collection) {\n val result = ArrayList<T>(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList<T>(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun <T> Iterable<T>.plus(elements: Sequence<T>): List<T> {\n val result = ArrayList<T>()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun <T> Collection<T>.plus(elements: Sequence<T>): List<T> {\n val result = ArrayList<T>(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.plusElement(element: T): List<T> {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>.plusElement(element: T): List<T> {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Iterable<T>.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List<List<T>> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList<List<T>>(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList<List<T>>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun <T, R> Iterable<T>.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List<T>) -> R): List<R> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList<R>(resultCapacity)\n val window = MovingSubList(this)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (!partialWindows && windowSize < size) break\n window.move(index, index + windowSize)\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList<R>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <T, R> Iterable<T>.zip(other: Array<out R>): List<Pair<T, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <T, R, V> Iterable<T>.zip(other: Array<out R>, transform: (a: T, b: R) -> V): List<V> {\n val arraySize = other.size\n val list = ArrayList<V>(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun <T, R> Iterable<T>.zip(other: Iterable<R>): List<Pair<T, R>> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun <T, R, V> Iterable<T>.zip(other: Iterable<R>, transform: (a: T, b: R) -> V): List<V> {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList<V>(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Iterable<T>.zipWithNext(): List<Pair<T, T>> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun <T, R> Iterable<T>.zipWithNext(transform: (a: T, b: T) -> R): List<R> {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf<R>()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <T, A : Appendable> Iterable<T>.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun <T> Iterable<T>.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Iterable<T>.asIterable(): Iterable<T> {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun <T> Iterable<T>.asSequence(): Sequence<T> {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable<Byte>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable<Short>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable<Int>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable<Long>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable<Float>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable<Double>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable<Byte>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable<Short>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable<Int>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable<Long>.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable<Float>.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable<Double>.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun <R> run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun <T> T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun <T> T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun <T> T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns `true` if [element] is found in the sequence.\n *\n * The operation is _terminal_.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Sequence<T>.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun <T> Sequence<T>.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Sequence doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun <T> Sequence<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun <T> Sequence<T>.elementAtOrNull(index: Int): T? {\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.first(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.firstOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns first index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence<T>.indexOf(element: T): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.last(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns last index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence<T>.lastIndexOf(element: T): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.lastOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the single element, or throws an exception if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.single(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Sequence has more than one element.\")\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.singleOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a sequence containing all elements except first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> Sequence<T>.drop(n: Int): Sequence<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> this\n this is DropTakeSequence -> this.drop(n)\n else -> DropSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing all elements except first elements that satisfy the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun <T> Sequence<T>.dropWhile(predicate: (T) -> Boolean): Sequence<T> {\n return DropWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic fun <T> Sequence<T>.filter(predicate: (T) -> Boolean): Sequence<T> {\n return FilteringSequence(this, true, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic fun <T> Sequence<T>.filterIndexed(predicate: (index: Int, T) -> Boolean): Sequence<T> {\n // TODO: Rewrite with generalized MapFilterIndexingSequence\n return TransformingSequence(FilteringSequence(IndexingSequence(this), true, { predicate(it.index, it.value) }), { it.value })\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Sequence<T>.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a sequence containing all elements that are instances of specified type parameter R.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstance\n */\npublic inline fun <reified R> Sequence<*>.filterIsInstance(): Sequence<@kotlin.internal.NoInfer R> {\n @Suppress(\"UNCHECKED_CAST\")\n return filter { it is R } as Sequence<R>\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstanceTo\n */\npublic inline fun <reified R, C : MutableCollection<in R>> Sequence<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing all elements not matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic fun <T> Sequence<T>.filterNot(predicate: (T) -> Boolean): Sequence<T> {\n return FilteringSequence(this, false, predicate)\n}\n\n/**\n * Returns a sequence containing all elements that are not `null`.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun <T : Any> Sequence<T?>.filterNotNull(): Sequence<T> {\n @Suppress(\"UNCHECKED_CAST\")\n return filterNot { it == null } as Sequence<T>\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNullTo\n */\npublic fun <C : MutableCollection<in T>, T : Any> Sequence<T?>.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Sequence<T>.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun <T, C : MutableCollection<in T>> Sequence<T>.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> Sequence<T>.take(n: Int): Sequence<T> {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> emptySequence()\n this is DropTakeSequence -> this.take(n)\n else -> TakeSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing first elements satisfying the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun <T> Sequence<T>.takeWhile(predicate: (T) -> Boolean): Sequence<T> {\n return TakeWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun <T : Comparable<T>> Sequence<T>.sorted(): Sequence<T> {\n return object : Sequence<T> {\n override fun iterator(): Iterator<T> {\n val sortedList = this@sorted.toMutableList()\n sortedList.sort()\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun <T, R : Comparable<R>> Sequence<T>.sortedBy(crossinline selector: (T) -> R?): Sequence<T> {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic inline fun <T, R : Comparable<R>> Sequence<T>.sortedByDescending(crossinline selector: (T) -> R?): Sequence<T> {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun <T : Comparable<T>> Sequence<T>.sortedDescending(): Sequence<T> {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun <T> Sequence<T>.sortedWith(comparator: Comparator<in T>): Sequence<T> {\n return object : Sequence<T> {\n override fun iterator(): Iterator<T> {\n val sortedList = this@sortedWith.toMutableList()\n sortedList.sortWith(comparator)\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun <T, K, V> Sequence<T>.associate(transform: (T) -> Pair<K, V>): Map<K, V> {\n return associateTo(LinkedHashMap<K, V>(), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given sequence indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun <T, K> Sequence<T>.associateBy(keySelector: (T) -> K): Map<K, T> {\n return associateByTo(LinkedHashMap<K, T>(), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun <T, K, V> Sequence<T>.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, V> {\n return associateByTo(LinkedHashMap<K, V>(), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given sequence\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun <T, K, M : MutableMap<in K, in T>> Sequence<T>.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Sequence<T>.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun <T, K, V, M : MutableMap<in K, in V>> Sequence<T>.associateTo(destination: M, transform: (T) -> Pair<K, V>): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given sequence and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun <K, V> Sequence<K>.associateWith(valueSelector: (K) -> V): Map<K, V> {\n val result = LinkedHashMap<K, V>()\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given sequence,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun <K, V, M : MutableMap<in K, in V>> Sequence<K>.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n *\n * The operation is _terminal_.\n */\npublic fun <T, C : MutableCollection<in T>> Sequence<T>.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.toHashSet(): HashSet<T> {\n return toCollection(HashSet<T>())\n}\n\n/**\n * Returns a [List] containing all elements.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.toList(): List<T> {\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.toMutableList(): MutableList<T> {\n return toCollection(ArrayList<T>())\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.toSet(): Set<T> {\n return toCollection(LinkedHashSet<T>()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIterable\")\npublic fun <T, R> Sequence<T>.flatMap(transform: (T) -> Iterable<R>): Sequence<R> {\n return FlatteningSequence(this, transform, Iterable<R>::iterator)\n}\n\n/**\n * Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic fun <T, R> Sequence<T>.flatMap(transform: (T) -> Sequence<R>): Sequence<R> {\n return FlatteningSequence(this, transform, Sequence<R>::iterator)\n}\n\n/**\n * Returns a single sequence of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\npublic fun <T, R> Sequence<T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): Sequence<R> {\n return flatMapIndexed(this, transform, Iterable<R>::iterator)\n}\n\n/**\n * Returns a single sequence of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequence\")\npublic fun <T, R> Sequence<T>.flatMapIndexed(transform: (index: Int, T) -> Sequence<R>): Sequence<R> {\n return flatMapIndexed(this, transform, Sequence<R>::iterator)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequenceTo\")\n@kotlin.internal.InlineOnly\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence<R>): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIterableTo\")\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.flatMapTo(destination: C, transform: (T) -> Iterable<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.flatMapTo(destination: C, transform: (T) -> Sequence<R>): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K> Sequence<T>.groupBy(keySelector: (T) -> K): Map<K, List<T>> {\n return groupByTo(LinkedHashMap<K, MutableList<T>>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V> Sequence<T>.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, List<V>> {\n return groupByTo(LinkedHashMap<K, MutableList<V>>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun <T, K, M : MutableMap<in K, MutableList<T>>> Sequence<T>.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<T>() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Sequence<T>.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList<V>() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun <T, K> Sequence<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {\n return object : Grouping<T, K> {\n override fun sourceIterator(): Iterator<T> = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic fun <T, R> Sequence<T>.map(transform: (T) -> R): Sequence<R> {\n return TransformingSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun <T, R> Sequence<T>.mapIndexed(transform: (index: Int, T) -> R): Sequence<R> {\n return TransformingIndexedSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun <T, R : Any> Sequence<T>.mapIndexedNotNull(transform: (index: Int, T) -> R?): Sequence<R> {\n return TransformingIndexedSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Sequence<T>.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.mapNotNull\n */\npublic fun <T, R : Any> Sequence<T>.mapNotNull(transform: (T) -> R?): Sequence<R> {\n return TransformingSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element in the original sequence\n * and appends only the non-null results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R : Any, C : MutableCollection<in R>> Sequence<T>.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original sequence\n * and appends the results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R, C : MutableCollection<in R>> Sequence<T>.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a sequence that wraps each element of the original sequence\n * into an [IndexedValue] containing the index of that element and the element itself.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun <T> Sequence<T>.withIndex(): Sequence<IndexedValue<T>> {\n return IndexingSequence(this)\n}\n\n/**\n * Returns a sequence containing only distinct elements from the given sequence.\n * \n * Among equal elements of the given sequence, only the first one will be present in the resulting sequence.\n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun <T> Sequence<T>.distinct(): Sequence<T> {\n return this.distinctBy { it }\n}\n\n/**\n * Returns a sequence containing only elements from the given sequence\n * having distinct keys returned by the given [selector] function.\n * \n * Among elements of the given sequence with equal keys, only the first one will be present in the resulting sequence.\n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun <T, K> Sequence<T>.distinctBy(selector: (T) -> K): Sequence<T> {\n return DistinctSequence(this, selector)\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given sequence.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.toMutableSet(): MutableSet<T> {\n val set = LinkedHashSet<T>()\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun <T> Sequence<T>.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if sequence has at least one element.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun <T> Sequence<T>.any(): Boolean {\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun <T> Sequence<T>.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun <T> Sequence<T>.count(): Int {\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the sequence is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R> Sequence<T>.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * \n * Returns the specified [initial] value if the sequence is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T, R> Sequence<T>.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence<Double>.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence<Float>.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Sequence<T>.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Sequence<T>.maxBy(selector: (T) -> R): T? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Sequence<T>.maxByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.maxOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.maxOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Sequence<T>.maxOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.maxOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.maxOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Sequence<T>.maxOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the sequence.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Sequence<T>.maxOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the sequence or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Sequence<T>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence<Double>.maxOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence<Float>.maxOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Sequence<T>.maxOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Sequence<T>.maxWith(comparator: Comparator<in T>): T? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Sequence<T>.maxWithOrNull(comparator: Comparator<in T>): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence<Double>.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence<Float>.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T : Comparable<T>> Sequence<T>.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun <T, R : Comparable<R>> Sequence<T>.minBy(selector: (T) -> R): T? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <T, R : Comparable<R>> Sequence<T>.minByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.minOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.minOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Sequence<T>.minOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.minOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.minOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the sequence or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R : Comparable<R>> Sequence<T>.minOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the sequence.\n * \n * @throws NoSuchElementException if the sequence is empty.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Sequence<T>.minOfWith(comparator: Comparator<in R>, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the sequence or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun <T, R> Sequence<T>.minOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence<Double>.minOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence<Float>.minOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T : Comparable<T>> Sequence<T>.minOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun <T> Sequence<T>.minWith(comparator: Comparator<in T>): T? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Sequence<T>.minWithOrNull(comparator: Comparator<in T>): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the sequence has no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun <T> Sequence<T>.none(): Boolean {\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun <T> Sequence<T>.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns a sequence which performs the given [action] on each element of the original sequence as they pass through it.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@SinceKotlin(\"1.1\")\npublic fun <T> Sequence<T>.onEach(action: (T) -> Unit): Sequence<T> {\n return map {\n action(it)\n it\n }\n}\n\n/**\n * Returns a sequence which performs the given [action] on each element of the original sequence as they pass through it.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@SinceKotlin(\"1.4\")\npublic fun <T> Sequence<T>.onEachIndexed(action: (index: Int, T) -> Unit): Sequence<T> {\n return mapIndexed { index, element ->\n action(index, element)\n element\n }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this sequence is empty. If the sequence can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Sequence<T>.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * \n * Throws an exception if this sequence is empty. If the sequence can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun <S, T : S> Sequence<T>.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * \n * Returns `null` if the sequence is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun <S, T : S> Sequence<T>.reduceIndexedOrNull(operation: (index: Int, acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the sequence is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun <S, T : S> Sequence<T>.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic fun <T, R> Sequence<T>.runningFold(initial: R, operation: (acc: R, T) -> R): Sequence<R> {\n return sequence {\n yield(initial)\n var accumulator = initial\n for (element in this@runningFold) {\n accumulator = operation(accumulator, element)\n yield(accumulator)\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original sequence and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic fun <T, R> Sequence<T>.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): Sequence<R> {\n return sequence {\n yield(initial)\n var index = 0\n var accumulator = initial\n for (element in this@runningFoldIndexed) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n yield(accumulator)\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <S, T : S> Sequence<T>.runningReduce(operation: (acc: S, T) -> S): Sequence<S> {\n return sequence {\n val iterator = iterator()\n if (iterator.hasNext()) {\n var accumulator: S = iterator.next()\n yield(accumulator)\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n yield(accumulator)\n }\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original sequence and current accumulator value that starts with the first element of this sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic fun <S, T : S> Sequence<T>.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): Sequence<S> {\n return sequence {\n val iterator = iterator()\n if (iterator.hasNext()) {\n var accumulator: S = iterator.next()\n yield(accumulator)\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n yield(accumulator)\n }\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T, R> Sequence<T>.scan(initial: R, operation: (acc: R, T) -> R): Sequence<R> {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original sequence and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T, R> Sequence<T>.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): Sequence<R> {\n return runningFoldIndexed(initial, operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun <S, T : S> Sequence<T>.scanReduce(operation: (acc: S, T) -> S): Sequence<S> {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun <S, T : S> Sequence<T>.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): Sequence<S> {\n return runningReduceIndexed(operation)\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun <T> Sequence<T>.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.sumOf(selector: (T) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.sumOf(selector: (T) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.sumOf(selector: (T) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.sumOf(selector: (T) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.sumOf(selector: (T) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun <T : Any> Sequence<T?>.requireNoNulls(): Sequence<T> {\n return map { it ?: throw IllegalArgumentException(\"null element found in $this.\") }\n}\n\n/**\n * Splits this sequence into a sequence of lists each not exceeding the given [size].\n * \n * The last list in the resulting sequence may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Sequence<T>.chunked(size: Int): Sequence<List<T>> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this sequence into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return sequence of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun <T, R> Sequence<T>.chunked(size: Int, transform: (List<T>) -> R): Sequence<R> {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun <T> Sequence<T>.minus(element: T): Sequence<T> {\n return object: Sequence<T> {\n override fun iterator(): Iterator<T> {\n var removed = false\n return this@minus.filter { if (!removed && it == element) { removed = true; false } else true }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] array.\n * \n * Note that the source sequence and the array being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun <T> Sequence<T>.minus(elements: Array<out T>): Sequence<T> {\n if (elements.isEmpty()) return this\n return object: Sequence<T> {\n override fun iterator(): Iterator<T> {\n val other = elements.toHashSet()\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] collection.\n * \n * Note that the source sequence and the collection being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun <T> Sequence<T>.minus(elements: Iterable<T>): Sequence<T> {\n return object: Sequence<T> {\n override fun iterator(): Iterator<T> {\n val other = elements.convertToSetForSetOperation()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The operation is _intermediate_ for this sequence and _terminal_ and _stateful_ for the [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun <T> Sequence<T>.minus(elements: Sequence<T>): Sequence<T> {\n return object: Sequence<T> {\n override fun iterator(): Iterator<T> {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.minusElement(element: T): Sequence<T> {\n return minus(element)\n}\n\n/**\n * Splits the original sequence into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Sequences.Transformations.partition\n */\npublic inline fun <T> Sequence<T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>> {\n val first = ArrayList<T>()\n val second = ArrayList<T>()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun <T> Sequence<T>.plus(element: T): Sequence<T> {\n return sequenceOf(this, sequenceOf(element)).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] array.\n * \n * Note that the source sequence and the array being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun <T> Sequence<T>.plus(elements: Array<out T>): Sequence<T> {\n return this.plus(elements.asList())\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] collection.\n * \n * Note that the source sequence and the collection being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun <T> Sequence<T>.plus(elements: Iterable<T>): Sequence<T> {\n return sequenceOf(this, elements.asSequence()).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun <T> Sequence<T>.plus(elements: Sequence<T>): Sequence<T> {\n return sequenceOf(this, elements).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.plusElement(element: T): Sequence<T> {\n return plus(element)\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this sequence with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Sequence<T>.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence<List<T>> {\n return windowedSequence(size, step, partialWindows, reuseBuffer = false)\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this sequence with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun <T, R> Sequence<T>.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List<T>) -> R): Sequence<R> {\n return windowedSequence(size, step, partialWindows, reuseBuffer = true).map(transform)\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zip\n */\npublic infix fun <T, R> Sequence<T>.zip(other: Sequence<R>): Sequence<Pair<T, R>> {\n return MergingSequence(this, other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zipWithTransform\n */\npublic fun <T, R, V> Sequence<T>.zip(other: Sequence<R>, transform: (a: T, b: R) -> V): Sequence<V> {\n return MergingSequence(this, other, transform)\n}\n\n/**\n * Returns a sequence of pairs of each two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun <T> Sequence<T>.zipWithNext(): Sequence<Pair<T, T>> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic fun <T, R> Sequence<T>.zipWithNext(transform: (a: T, b: T) -> R): Sequence<R> {\n return sequence result@ {\n val iterator = iterator()\n if (!iterator.hasNext()) return@result\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n yield(transform(current, next))\n current = next\n }\n }\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun <T, A : Appendable> Sequence<T>.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun <T> Sequence<T>.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original sequence returning its elements when being iterated.\n */\npublic fun <T> Sequence<T>.asIterable(): Iterable<T> {\n return Iterable { this.iterator() }\n}\n\n/**\n * Returns this sequence as a [Sequence].\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Sequence<T>.asSequence(): Sequence<T> {\n return this\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Sequence<Byte>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Sequence<Short>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Sequence<Int>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Sequence<Long>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Sequence<Float>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Sequence<Double>.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Sequence<Byte>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Sequence<Short>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Sequence<Int>.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Sequence<Long>.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Sequence<Float>.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Sequence<Double>.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n@file:OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map<Any?, Nothing>, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set<Map.Entry<Any?, Nothing>> get() = EmptySet\n override val keys: Set<Any?> get() = EmptySet\n override val values: Collection<Nothing> get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun <K, V> emptyMap(): Map<K, V> = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map<K, V>)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun <K, V> mapOf(vararg pairs: Pair<K, V>): Map<K, V> =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> mapOf(): Map<K, V> = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> mutableMapOf(): MutableMap<K, V> = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun <K, V> mutableMapOf(vararg pairs: Pair<K, V>): MutableMap<K, V> =\n LinkedHashMap<K, V>(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n *\n * @sample samples.collections.Maps.Instantiation.emptyHashMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> hashMapOf(): HashMap<K, V> = HashMap<K, V>()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun <K, V> hashMapOf(vararg pairs: Pair<K, V>): HashMap<K, V> = HashMap<K, V>(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> linkedMapOf(): LinkedHashMap<K, V> = LinkedHashMap<K, V>()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun <K, V> linkedMapOf(vararg pairs: Pair<K, V>): LinkedHashMap<K, V> = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> buildMap(@BuilderInference builderAction: MutableMap<K, V>.() -> Unit): Map<K, V> {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildMapInternal(builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun <K, V> buildMapInternal(builderAction: MutableMap<K, V>.() -> Unit): Map<K, V>\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of pairs added in the [builderAction].\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> buildMap(capacity: Int, @BuilderInference builderAction: MutableMap<K, V>.() -> Unit): Map<K, V> {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildMapInternal(capacity, builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun <K, V> buildMapInternal(capacity: Int, builderAction: MutableMap<K, V>.() -> Unit): Map<K, V>\n\n/**\n * Calculate the initial capacity of a map.\n */\n@PublishedApi\ninternal expect fun mapCapacity(expectedSize: Int): Int\n\n/**\n * Returns `true` if this map is not empty.\n * @sample samples.collections.Maps.Usage.mapIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> Map<out K, V>.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> Map<out K, V>?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> Map<K, V>?.orEmpty(): Map<K, V> = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <M, R> M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n *\n * @sample samples.collections.Maps.Usage.containsKey\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map<K, V>).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map<out K, *>.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map<K, *>).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <K, @kotlin.internal.OnlyInputTypes V> Map<K, V>.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap<out K, V>.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap<K, V>).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> Map.Entry<K, V>.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> Map.Entry<K, V>.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> Map.Entry<K, V>.toPair(): Pair<K, V> = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun <K, V> Map<K, V>.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun <K, V> Map<K, V>.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun <K, V> Map<K, V>.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun <K, V> MutableMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> Map<out K, V>.iterator(): Iterator<Map.Entry<K, V>> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.iterator(): MutableIterator<MutableMap.MutableEntry<K, V>> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun <K, V, R, M : MutableMap<in K, in R>> Map<out K, V>.mapValuesTo(destination: M, transform: (Map.Entry<K, V>) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun <K, V, R, M : MutableMap<in R, in V>> Map<out K, V>.mapKeysTo(destination: M, transform: (Map.Entry<K, V>) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun <K, V> MutableMap<in K, in V>.putAll(pairs: Array<out Pair<K, V>>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun <K, V> MutableMap<in K, in V>.putAll(pairs: Iterable<Pair<K, V>>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun <K, V> MutableMap<in K, in V>.putAll(pairs: Sequence<Pair<K, V>>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun <K, V, R> Map<out K, V>.mapValues(transform: (Map.Entry<K, V>) -> R): Map<K, R> {\n return mapValuesTo(LinkedHashMap<K, R>(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun <K, V, R> Map<out K, V>.mapKeys(transform: (Map.Entry<K, V>) -> R): Map<R, V> {\n return mapKeysTo(LinkedHashMap<R, V>(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun <K, V> Map<out K, V>.filterKeys(predicate: (K) -> Boolean): Map<K, V> {\n val result = LinkedHashMap<K, V>()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun <K, V> Map<out K, V>.filterValues(predicate: (V) -> Boolean): Map<K, V> {\n val result = LinkedHashMap<K, V>()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.filterTo(destination: M, predicate: (Map.Entry<K, V>) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun <K, V> Map<out K, V>.filter(predicate: (Map.Entry<K, V>) -> Boolean): Map<K, V> {\n return filterTo(LinkedHashMap<K, V>(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.filterNotTo(destination: M, predicate: (Map.Entry<K, V>) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun <K, V> Map<out K, V>.filterNot(predicate: (Map.Entry<K, V>) -> Boolean): Map<K, V> {\n return filterNotTo(LinkedHashMap<K, V>(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun <K, V> Iterable<Pair<K, V>>.toMap(): Map<K, V> {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap<K, V>(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap<K, V>()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun <K, V, M : MutableMap<in K, in V>> Iterable<Pair<K, V>>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun <K, V> Array<out Pair<K, V>>.toMap(): Map<K, V> = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap<K, V>(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun <K, V, M : MutableMap<in K, in V>> Array<out Pair<K, V>>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun <K, V> Sequence<Pair<K, V>>.toMap(): Map<K, V> = toMap(LinkedHashMap<K, V>()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun <K, V, M : MutableMap<in K, in V>> Sequence<Pair<K, V>>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun <K, V> Map<out K, V>.toMap(): Map<K, V> = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun <K, V> Map<out K, V>.toMutableMap(): MutableMap<K, V> = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun <K, V> Map<out K, V>.plus(pair: Pair<K, V>): Map<K, V> =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun <K, V> Map<out K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V> =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun <K, V> Map<out K, V>.plus(pairs: Array<out Pair<K, V>>): Map<K, V> =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun <K, V> Map<out K, V>.plus(pairs: Sequence<Pair<K, V>>): Map<K, V> =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun <K, V> Map<out K, V>.plus(map: Map<out K, V>): Map<K, V> =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pair: Pair<K, V>) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Iterable<Pair<K, V>>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Array<out Pair<K, V>>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Sequence<Pair<K, V>>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(map: Map<K, V>) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun <K, V> Map<out K, V>.minus(key: K): Map<K, V> =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun <K, V> Map<out K, V>.minus(keys: Iterable<K>): Map<K, V> =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun <K, V> Map<out K, V>.minus(keys: Array<out K>): Map<K, V> =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun <K, V> Map<out K, V>.minus(keys: Sequence<K>): Map<K, V> =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Iterable<K>) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Array<out K>) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Sequence<K>) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun <K, V> Map<K, V>.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.random.Random\n\n/**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * Allows to overcome type-safety restriction of `remove` that requires to pass an element of type `E`.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection<out T>.remove(element: T): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection<T>).remove(element)\n\n/**\n * Removes all of this collection's elements that are also contained in the specified collection.\n\n * Allows to overcome type-safety restriction of `removeAll` that requires to pass a collection of type `Collection<E>`.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection<out T>.removeAll(elements: Collection<T>): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection<T>).removeAll(elements)\n\n/**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * Allows to overcome type-safety restriction of `retainAll` that requires to pass a collection of type `Collection<E>`.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection<out T>.retainAll(elements: Collection<T>): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection<T>).retainAll(elements)\n\n/**\n * Adds the specified [element] to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.plusAssign(element: T) {\n this.add(element)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.plusAssign(elements: Iterable<T>) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] array to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.plusAssign(elements: Array<T>) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.plusAssign(elements: Sequence<T>) {\n this.addAll(elements)\n}\n\n/**\n * Removes a single instance of the specified [element] from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.minusAssign(element: T) {\n this.remove(element)\n}\n\n/**\n * Removes all elements contained in the given [elements] collection from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.minusAssign(elements: Iterable<T>) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] array from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.minusAssign(elements: Array<T>) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] sequence from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> MutableCollection<in T>.minusAssign(elements: Sequence<T>) {\n this.removeAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this [MutableCollection].\n */\npublic fun <T> MutableCollection<in T>.addAll(elements: Iterable<T>): Boolean {\n when (elements) {\n is Collection -> return addAll(elements)\n else -> {\n var result: Boolean = false\n for (item in elements)\n if (add(item)) result = true\n return result\n }\n }\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this [MutableCollection].\n */\npublic fun <T> MutableCollection<in T>.addAll(elements: Sequence<T>): Boolean {\n var result: Boolean = false\n for (item in elements) {\n if (add(item)) result = true\n }\n return result\n}\n\n/**\n * Adds all elements of the given [elements] array to this [MutableCollection].\n */\npublic fun <T> MutableCollection<in T>.addAll(elements: Array<out T>): Boolean {\n return addAll(elements.asList())\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] collection.\n */\npublic fun <T> MutableCollection<in T>.removeAll(elements: Iterable<T>): Boolean {\n return removeAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] sequence.\n */\npublic fun <T> MutableCollection<in T>.removeAll(elements: Sequence<T>): Boolean {\n val set = elements.toHashSet()\n return set.isNotEmpty() && removeAll(set)\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] array.\n */\npublic fun <T> MutableCollection<in T>.removeAll(elements: Array<out T>): Boolean {\n return elements.isNotEmpty() && removeAll(elements.toHashSet())\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] collection.\n */\npublic fun <T> MutableCollection<in T>.retainAll(elements: Iterable<T>): Boolean {\n return retainAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] array.\n */\npublic fun <T> MutableCollection<in T>.retainAll(elements: Array<out T>): Boolean {\n if (elements.isNotEmpty())\n return retainAll(elements.toHashSet())\n else\n return retainNothing()\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] sequence.\n */\npublic fun <T> MutableCollection<in T>.retainAll(elements: Sequence<T>): Boolean {\n val set = elements.toHashSet()\n if (set.isNotEmpty())\n return retainAll(set)\n else\n return retainNothing()\n}\n\nprivate fun MutableCollection<*>.retainNothing(): Boolean {\n val result = isNotEmpty()\n clear()\n return result\n}\n\n\n/**\n * Removes all elements from this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun <T> MutableIterable<T>.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun <T> MutableIterable<T>.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun <T> MutableIterable<T>.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n var result = false\n with(iterator()) {\n while (hasNext())\n if (predicate(next()) == predicateResultToRemove) {\n remove()\n result = true\n }\n }\n return result\n}\n\n\n/**\n * Removes the element at the specified [index] from this list.\n * In Kotlin one should use the [MutableList.removeAt] function instead.\n */\n@Deprecated(\"Use removeAt(index) instead.\", ReplaceWith(\"removeAt(index)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun <T> MutableList<T>.remove(index: Int): T = removeAt(index)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> MutableList<T>.removeFirst(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(0)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> MutableList<T>.removeFirstOrNull(): T? = if (isEmpty()) null else removeAt(0)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> MutableList<T>.removeLast(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(lastIndex)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun <T> MutableList<T>.removeLastOrNull(): T? = if (isEmpty()) null else removeAt(lastIndex)\n\n/**\n * Removes all elements from this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun <T> MutableList<T>.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun <T> MutableList<T>.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun <T> MutableList<T>.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n if (this !is RandomAccess)\n return (this as MutableIterable<T>).filterInPlace(predicate, predicateResultToRemove)\n\n var writeIndex: Int = 0\n for (readIndex in 0..lastIndex) {\n val element = this[readIndex]\n if (predicate(element) == predicateResultToRemove)\n continue\n\n if (writeIndex != readIndex)\n this[writeIndex] = element\n\n writeIndex++\n }\n if (writeIndex < size) {\n for (removeIndex in lastIndex downTo writeIndex)\n removeAt(removeIndex)\n\n return true\n } else {\n return false\n }\n}\n",null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n\n/**\n * Returns the given iterator itself. This allows to use an instance of iterator in a `for` loop.\n * @sample samples.collections.Iterators.iterator\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <T> Iterator<T>.iterator(): Iterator<T> = this\n\n/**\n * Returns an [Iterator] that wraps each element produced by the original iterator\n * into an [IndexedValue] containing the index of that element and the element itself.\n *\n * @sample samples.collections.Iterators.withIndexIterator\n */\npublic fun <T> Iterator<T>.withIndex(): Iterator<IndexedValue<T>> = IndexingIterator(this)\n\n/**\n * Performs the given [operation] on each element of this [Iterator].\n * @sample samples.collections.Iterators.forEachIterator\n */\npublic inline fun <T> Iterator<T>.forEach(operation: (T) -> Unit): Unit {\n for (element in this) operation(element)\n}\n\n/**\n * Iterator transforming original `iterator` into iterator of [IndexedValue], counting index from zero.\n */\ninternal class IndexingIterator<out T>(private val iterator: Iterator<T>) : Iterator<IndexedValue<T>> {\n private var index = 0\n final override fun hasNext(): Boolean = iterator.hasNext()\n final override fun next(): IndexedValue<T> = IndexedValue(checkIndexOverflow(index++), iterator.next())\n}\n",null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Starts an unintercepted coroutine without a receiver and with result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun <T> (suspend () -> T).startCoroutineUninterceptedOrReturn(\n completion: Continuation<T>\n): Any? = this.asDynamic()(completion, false)\n\n/**\n * Starts an unintercepted coroutine with receiver type [R] and result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun <R, T> (suspend R.() -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n completion: Continuation<T>\n): Any? = this.asDynamic()(receiver, completion, false)\n\n@InlineOnly\ninternal actual inline fun <R, P, T> (suspend R.(P) -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n param: P,\n completion: Continuation<T>\n): Any? = this.asDynamic()(receiver, param, completion, false)\n\n/**\n * Creates unintercepted coroutine without receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun <T> (suspend () -> T).createCoroutineUnintercepted(\n completion: Continuation<T>\n): Continuation<Unit> =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 2) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(completion)\n }\n }\n\n/**\n * Creates unintercepted coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun <R, T> (suspend R.() -> T).createCoroutineUnintercepted(\n receiver: R,\n completion: Continuation<T>\n): Continuation<Unit> =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 3) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(receiver, completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(receiver, completion)\n }\n }\n\n/**\n * Intercepts this continuation with [ContinuationInterceptor].\n *\n * This function shall be used on the immediate result of [createCoroutineUnintercepted] or [suspendCoroutineUninterceptedOrReturn],\n * in which case it checks for [ContinuationInterceptor] in the continuation's [context][Continuation.context],\n * invokes [ContinuationInterceptor.interceptContinuation], caches and returns the result.\n *\n * If this function is invoked on other [Continuation] instances it returns `this` continuation unchanged.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun <T> Continuation<T>.intercepted(): Continuation<T> =\n (this as? CoroutineImpl)?.intercepted() ?: this\n\n\nprivate inline fun <T> createCoroutineFromSuspendFunction(\n completion: Continuation<T>,\n crossinline block: () -> Any?\n): Continuation<Unit> {\n @Suppress(\"UNCHECKED_CAST\")\n return object : CoroutineImpl(completion as Continuation<Any?>) {\n override fun doResume(): Any? {\n exception?.let { throw it }\n return block()\n }\n }\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n@file:OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\nimport kotlin.random.Random\n\ninternal object EmptyIterator : ListIterator<Nothing> {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List<Nothing>, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection<Nothing>): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator<Nothing> = EmptyIterator\n override fun listIterator(): ListIterator<Nothing> = EmptyIterator\n override fun listIterator(index: Int): ListIterator<Nothing> {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List<Nothing> {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun <T> Array<out T>.asCollection(): Collection<T> = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection<T>(val values: Array<out T>, val isVarargs: Boolean) : Collection<T> {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection<T>): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator<T> = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array<out Any?> = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun <T> emptyList(): List<T> = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> listOf(): List<T> = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> mutableListOf(): MutableList<T> = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> arrayListOf(): ArrayList<T> = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun <T> mutableListOf(vararg elements: T): MutableList<T> =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun <T> arrayListOf(vararg elements: T): ArrayList<T> =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun <T : Any> listOfNotNull(element: T?): List<T> = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun <T : Any> listOfNotNull(vararg elements: T?): List<T> = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> List(size: Int, init: (index: Int) -> T): List<T> = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> MutableList(size: Int, init: (index: Int) -> T): MutableList<T> {\n val list = ArrayList<T>(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun <E> buildList(@BuilderInference builderAction: MutableList<E>.() -> Unit): List<E> {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildListInternal(builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun <E> buildListInternal(builderAction: MutableList<E>.() -> Unit): List<E>\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun <E> buildList(capacity: Int, @BuilderInference builderAction: MutableList<E>.() -> Unit): List<E> {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildListInternal(capacity, builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun <E> buildListInternal(capacity: Int, builderAction: MutableList<E>.() -> Unit): List<E>\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val <T> List<T>.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> Collection<T>?.orEmpty(): Collection<T> = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun <T> List<T>?.orEmpty(): List<T> = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun <C, R> C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection<E>`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection<T>.containsAll(elements: Collection<T>): Boolean = this.containsAll(elements)\n\n\n/**\n * Returns a new list with the elements of this list randomly shuffled\n * using the specified [random] instance as the source of randomness.\n */\n@SinceKotlin(\"1.3\")\npublic fun <T> Iterable<T>.shuffled(random: Random): List<T> = toMutableList().apply { shuffle(random) }\n\n\ninternal fun <T> List<T>.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun <T : Comparable<T>> List<T?>.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun <T> List<T>.binarySearch(element: T, comparator: Comparator<in T>, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun <T, K : Comparable<K>> List<T>.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun <T, K> List<T>.binarySearchBy(key: K, comparator: Comparator<K>, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which the given [comparison] function returns zero using the binary search algorithm.\n *\n * The list is expected to be sorted so that the signs of the [comparison] function's return values ascend on the list elements,\n * i.e. negative values come before zero and zeroes come before positive values.\n * Otherwise, the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that returns zero when called on the list element being searched.\n * On the elements coming before the target element, the function must return negative values;\n * on the elements coming after the target element, the function must return positive values.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun <T> List<T>.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n",null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Function corresponding to JavaScript's `typeof` operator\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun jsTypeOf(a: Any?): String = js(\"typeof a\")\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNUSED_PARAMETER\", \"NOTHING_TO_INLINE\")\n\npackage kotlin\n\n/**\n * Returns an empty array of the specified type [T].\n */\npublic inline fun <T> emptyArray(): Array<T> = js(\"[]\")\n\n@library\npublic fun <T> arrayOf(vararg elements: T): Array<T> = definedExternally\n\n@library\npublic fun doubleArrayOf(vararg elements: Double): DoubleArray = definedExternally\n\n@library\npublic fun floatArrayOf(vararg elements: Float): FloatArray = definedExternally\n\n@library\npublic fun longArrayOf(vararg elements: Long): LongArray = definedExternally\n\n@library\npublic fun intArrayOf(vararg elements: Int): IntArray = definedExternally\n\n@library\npublic fun charArrayOf(vararg elements: Char): CharArray = definedExternally\n\n@library\npublic fun shortArrayOf(vararg elements: Short): ShortArray = definedExternally\n\n@library\npublic fun byteArrayOf(vararg elements: Byte): ByteArray = definedExternally\n\n@library\npublic fun booleanArrayOf(vararg elements: Boolean): BooleanArray = definedExternally\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n */\npublic actual fun <T> lazy(initializer: () -> T): Lazy<T> = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [mode] parameter is ignored. */\npublic actual fun <T> lazy(mode: LazyThreadSafetyMode, initializer: () -> T): Lazy<T> = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [lock] parameter is ignored.\n */\npublic actual fun <T> lazy(lock: Any?, initializer: () -> T): Lazy<T> = UnsafeLazyImpl(initializer)\n\n\ninternal fun fillFrom(src: dynamic, dst: dynamic): dynamic {\n val srcLen: Int = src.length\n val dstLen: Int = dst.length\n var index: Int = 0\n while (index < srcLen && index < dstLen) dst[index] = src[index++]\n return dst\n}\n\n\ninternal fun arrayCopyResize(source: dynamic, newSize: Int, defaultValue: Any?): dynamic {\n val result = source.slice(0, newSize)\n copyArrayType(source, result)\n var index: Int = source.length\n if (newSize > index) {\n result.length = newSize\n while (index < newSize) result[index++] = defaultValue\n }\n return result\n}\n\ninternal fun <T> arrayPlusCollection(array: dynamic, collection: Collection<T>): dynamic {\n val result = array.slice()\n result.length += collection.size\n copyArrayType(array, result)\n var index: Int = array.length\n for (element in collection) result[index++] = element\n return result\n}\n\ninternal fun <T> fillFromCollection(dst: dynamic, startIndex: Int, collection: Collection<T>): dynamic {\n var index = startIndex\n for (element in collection) dst[index++] = element\n return dst\n}\n\ninternal inline fun copyArrayType(from: dynamic, to: dynamic) {\n if (from.`$type$` !== undefined) {\n to.`$type$` = from.`$type$`\n }\n}\n\ninternal inline fun jsIsType(obj: dynamic, jsClass: dynamic) = js(\"Kotlin\").isType(obj, jsClass)",null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;oBAcA,qC;gBCDA,K;;uBCm7VA,gD;eC15VA,oB;;;;;;;;mCCkGA,gD;;;;;;sBC3CQ,mC;;;;;;;;;WCOyD,e;;WAAQ,gB;iCC+GN,qB;oBA/G1C,qB;iBA+CI,4B;uBACF,iC;6BAMM,+B;;;sCHjIjC,mD;;;;;2BIsXA,qC;;;;;;;cCxYA,+C;eCm/BA,I;;iBCh/BA,e;;;;;;;;;;kBCo3BA,mC;;;;;;6BCrxB2B,6B;oBA2KG,+B;6BAEA,uC;6BAGE,6B;6BAEA,6B;;;;;;;oBChRF,+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECuBe,kD;IAMzC,sB;MAAA,SAAkB,I;IAClB,sBAAW,MAAX,C;IANA,kC;IAOA,yBAIsD,gCAAgB,IAAhB,C;G;;;SAJtD,Y;MAAA,6B;K;;;;SASuD,Y;MAAQ,mB;K;;;;SAEhC,Y;MAAQ,OAAM,yD;K;;sDAE7C,Y;IASI,mCAAsB,+BAAc,qBAAd,CAAtB,C;EACJ,C;wCAEA,Y;EAI8B,C;gDAE9B,Y;IACI,c;EACJ,C;kDAEA,iB;EAI0C,C;mDAE1C,0B;EAWoE,C;6DAEpE,Y;IAAsD,OAAE,yBAAF,mB;G;6DAEtD,iB;IAKoB,Q;IAHhB,IAAI,4CAAJ,C;MACI,wBAAY,KAAM,MAAlB,EAAyB,KAAM,QAA/B,C;;MAEA,uBAAY,sEAAZ,C;;EACR,C;mDAEA,kB;IAII,YAAY,gCAA0B,QAAP,MAAO,CAA1B,C;IACZ,IAAI,UAAU,2BAAd,C;MAA2C,M;IAC3C,yBAAY,KAAZ,C;EACJ,C;oDAEA,iB;IAAoD,6BAAgB,KAAhB,C;G;oEAEpD,qB;IACI,yBAAyB,YAAzB,EAAkC,SAAlC,C;EACJ,C;2CAEA,Y;IACgC,Q;IAAA,yBAAR,YAAQ,C;IAAR,iB;MAAyB,OAAa,0C;KAA1D,oBAAoB,I;IACpB,OAAO,MAAI,aAAJ,eAA4B,0C;EACvC,C;8CAEA,kC;IAa4C,ICjHlC,wB;IACV,mBDgH2B,KChH3B,EDgHkC,QChHlC,EDgH4C,IChH5C,EDgHkD,KChHlD,C;EDiHA,C;;;;;;EEpIJ,qC;G;;;;;;EAWA,uB;G;;;;;;EAsBA,iC;G;;;;;;EAWA,iC;G;;;;;;ECwI0C,2D;IAAA,wB;MAClC,kBAAkB,gCAAkC,YAAN,KAAM,CAAlC,EAA8D,CAA9D,C;MAMlB,WAAY,qB;MACZ,cAAM,WAAN,C;MAPA,OAQA,WAAY,Y;IAChB,C;G;EC7LJ,yD;IAAA,wC;IAAA,yB;IAAA,kC;G;;;;;;;;0CAAA,Y;;;;;YAaI,IAAI,oBjBilPG,YAAQ,CiBjlPf,C;cAAA,OAAyB,W;;cAAqC,gB;8BAAA,CAApB,aAAS,oBAAT,CAAoB,a;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;YAA9D,OAA8D,a;;;;;;;;;;;;;;;;G;EAblE,0D;mBAAA,mD;QAAA,S;aAAA,Q;;aAAA,uB;G;EAeA,2D;IAAA,wC;IAAA,yB;IAAA,kC;G;;;;;;;;4CAAA,Y;;;;;YAaI,IAAI,8BAAJ,C;cAAA,OAAe,W;;cAA0C,gB;8BAAA,CAAzB,anBtBkC,iCmBsBlC,CAAyB,a;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;YAAzD,OAAyD,a;;;;;;;;;;;;;;;;G;EAb7D,4D;mBAAA,qD;QAAA,S;aAAA,Q;;aAAA,uB;G;EAeA,mD;IAAA,wC;IAAA,yB;IAAA,kC;IAAA,wB;IAAA,wB;G;;;;;;;;yCAAA,Y;;;;;YjBgkaI,mB;YAAA,gB;;;;;YAAA,wBiBzjaiD,ejByjajD,Q;cAAA,gB;;;YAAgB,ciBzjaiC,ejByjajD,iB;YiBzjamE,gB;4BjByjatC,OiBzjasC,W;gBAAA,qC;qBAAA,mB;YAAA,Q;;YjByjanE,gB;;;YAAA,iB;YAAA,gB;;;YiBzjaiD,gC;;;;;;;;;;;;;;G;EAPrD,oD;mBAAA,6C;QAAA,S;aAAA,Q;;aAAA,uB;G;EASA,0D;IAAA,wC;IAAA,yB;IAAA,kC;IAAA,wB;IAAA,kC;G;;;;;;;;2CAAA,Y;;;;;YCstDoB,iD;YAAhB,gB;;;;;YAAA,KAAgB,yBAAhB,C;cAAA,gB;;;YAAgB,oC;YD/sD8C,gB;4BC+sDjC,OD/sDiC,W;gBAAA,qC;qBAAA,mB;YAAA,Q;;YC+sD9D,gB;;;YD/sDiD,gC;;;;;;;;;;;;;;G;EAPrD,2D;mBAAA,oD;QAAA,S;aAAA,Q;;aAAA,uB;G;EASyB,6B;IAAC,4B;IACtB,2BAAgC,SAAO,gBAAU,OAAjB,C;G;EAE2B,8C;IAAA,uB;MAG3C,WAAM,yBAAU,O;MlBjDuB,YAAa,QAAS,IAAT,C;MAIvD,Q;MAAA,OAAA,KAAM,OAAN,GAAa,CAAb,I;MAAb,aAAU,CAAV,iB;QkB6CsC,mC;QAC9B,eAAe,4BlB7CH,CkB6CG,C;QACf,QAAS,Q;QACoB,gBAA7B,iDAAmB,QAAnB,C;QEgBR,SFfY,mBAAmB,oCEe/B,SFf+B,CAAnB,C;QlBhDR,MAAM,CAAN,IoBgEG,S;;MFpBH,YlB1CG,K;MkBiDH,eAAe,oDAAwB,KAAxB,C;MjBiiaH,U;MAAhB,4BiB/haI,KjB+haJ,kB;QAAgB,ciB/haZ,KjB+haJ,Q;QAA6B,OiB/haN,8B;;MAGnB,IAAI,IAAK,YAAT,C;QAEI,QAAS,a;;QAET,IAAK,8BAA+B,QAA/B,C;;MAEb,W;IAAA,C;G;6BArBA,wB;IAA+B,ODgIO,mCChIqB,2BDgIrB,CAAtC,c;G;ECzG2C,yD;IAA3C,oB;IAAsF,wB;IAA1C,oB;G;0DACxC,Y;IACU,gBAAN,Y;IjBkhaQ,Q;IAAhB,wBAAgB,SAAhB,gB;MAAgB,cAAA,SAAhB,M;MAA6B,OiBlhaF,gB;;EACvB,C;sDAEA,iB;IAAyC,iB;EAAa,C;wDACtD,Y;IAAkC,oCAA0B,YAA1B,M;G;;;;;;EAGN,0D;IAAhC,oB;IAAyG,mBAAa,GAAb,C;IAAxE,kC;IAC7B,iBAAsB,OAA0B,IAA1B,C;IACtB,mBAAwB,OAAiC,IAAjC,C;G;sDAExB,kB;IAA0C,wCAAgB,M;EAAO,C;wDACjE,oB;IAAqD,0CAAkB,Q;EAAS,C;kDAEhF,Y;IACY,Q;IAAR,CA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5B,O;G;;;;;;;;;;;;;EC/ZtC,yC;IrBgL0B,gB;IADT,gBqBpKb,MrBoK6B,kB;IACzB,sB;MAAQ,SqBrKE,yBrBqKQ,QqBrKtB,MrBqKsB,+DqBrKR,C;;MrBsKF,SqBtKoB,wCrBsKV,SqBtKU,C;;IAAhC,OrBoKA,M;G;EqBlKJ,uC;IAKmC,sB;MAAA,SAAe,I;IAAgC,mCAAwB,MAAxB,C;G;EAElF,sC;IAIwG,gBAAjC,4BAA2B,IAA3B,C;ILQnE,SKR4G,sB;IAAzC,OLS5D,S;G;EKH6B,yC;IAEpC,sBAAW,IAAX,C;IACO,mCAAsB,MAAtB,C;G;;;SACuB,Y;MAAQ,W;K;;mDACtC,Y;IAAiC,Q;IAAA,2G;G;EACjC,kD;IAAA,wC;IAAA,yB;IAAA,kB;G;;;;;;;;yCAAA,Y;;;;;YAAkC,Q;YAAA,gB;4BAAA,sC;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,qF;;;;;;;;;;;;;;G;4CAAlC,qC;mBAAA,2C;QAAA,S;aAAA,Q;;aAAA,uB;G;;;SACuC,Y;MAAQ,W;K;;oEAC/C,yB;IACI,2CAA8B,MAA9B,EAAsC,KAAtC,C;G;qDAEJ,iB;IACI,mCAAe,KAAf,C;G;oEACJ,qB;IACI,mCAAe,2BAAuB,SAAvB,CAAf,C;G;;;;;;;;;;;;;ECnFR,4B;ItBuN0B,gB;IADT,gBAAgB,2B;IACzB,sB;MAAQ,SAAU,gF;;MACV,SsBxN4C,2BtBwNlC,SsBxNkC,C;;IAAf,OtBsNzC,M;G;EsBpNJ,sC;ItBqN0B,gB;IADT,gBAAgB,2B;IACzB,sB;MAAQ,SAAU,gF;;MACV,SsBrNV,2BAAuB,kBtBqNH,SsBrNG,SAAvB,C;;IADyE,OtBoN3E,M;G;EsBjNJ,qC;QAKuB,I;IAHnB,IAAI,4CAAJ,C;MAAA,OtBkFQ,WAAO,csBjFI,kBAAkB,KAAM,MAAxB,EAA+B,KAA/B,CtBiFJ,CAAP,C;;MsB/EJ,gB;MAHJ,OtByEQ,WsBtEW,sEtBsEX,C;;G;EsB9D8B,gD;IAEtC,uB;MAAA,UAAmB,K;IADnB,kB;IAGA,kBAAuB,SAAO,OAAP,C;G;;;SACF,Y;MAAQ,OAAA,eAAS,uB;K;;iDACtC,Y;IAA6B,O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;YAC9C,gB;4BAAA,gCAAK,wBAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EACJ,C;EAFkD,sC;IAAA,yD;qBAAA,6E;UAAA,S;eAAA,Q;;eAAA,uB;IAElD,C;G;EANA,2B;IAI6C,oCAAK,wBAAL,C;G;EAaa,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,kC;EAE1D,C;;;;;;;;iDAF0D,Y;;;;;YACjD,gB;4BAAA,4B;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAL,gB;4BAAA,gCAAK,aAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAA,oB;;;;;;;;;;;;;;EACJ,C;EAF0D,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAE1D,C;G;EAXA,6B;IASqD,oCAAK,0BAAL,C;G;EAOD,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,wB;IAAA,kC;EAIpD,C;;;;;;;;iDAJoD,Y;;;;;Y9C+qDhC,mD;YAAhB,gB;;;;;YAAA,KAAgB,yBAAhB,C;cAAA,gB;;;YAAgB,oC;Y8C7qDZ,gB;4BAAA,gC9C6qDyB,O8C7qDzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;Y9C6qDJ,gB;;;Y8C9qDA,W;;;;;;;;;;;;;;EAGJ,C;EAJoD,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAIpD,C;G;EAPA,6B;IAG+C,oCAAK,0BAAL,C;G;EASK,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,6B;IAAA,oC;EAIpD,C;;;;;;;;iDAJoD,Y;;;;;;YCjEhD,gB;;;;;YAAA,KAAgB,8BAAhB,C;cAAA,gB;;;YAAgB,yC;YDmEZ,gB;4BAAA,kCCnE4B,ODmE5B,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YCnEJ,gB;;;YDkEA,W;;;;;;;;;;;;;;EAGJ,C;EAJoD,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAIpD,C;G;EAPA,6B;IAG+C,oCAAK,0BAAL,C;G;EASK,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,wB;IAAA,kC;EAIpD,C;;;;;;;;iDAJoD,Y;;;;;Y7BonChC,mD;YAAhB,gB;;;;;YAAA,KAAgB,yBAAhB,C;cAAA,gB;;;YAAgB,oC;Y6BlnCZ,gB;4BAAA,gC7BknCyB,O6BlnCzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;Y7BknCJ,gB;;;Y6BnnCA,W;;;;;;;;;;;;;;EAGJ,C;EAJoD,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAIpD,C;G;EAPA,6B;IAG+C,oCAAK,0BAAL,C;G;EAcW,8F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,gD;IAAA,wB;IAAA,0B;IAAA,kC;EAI1D,C;;;;;;;;+CAJ0D,Y;;;;;YACtC,6C;YAAhB,qB;YAAA,gB;;;;;YAAA,iD;cAAA,gB;;;YAAgB,cAAhB,kC;YACI,gB;4BAAA,gCAAK,OAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YADJ,gB;;;YAAA,mB;YAAA,gB;;;YAGJ,W;;;;;;;;;;;;;;EAAA,C;EAJ0D,2C;IAAA,yD;qBAAA,kF;UAAA,S;eAAA,Q;;eAAA,uB;IAI1D,C;G;EAZA,0B;IAQqD,oCAAK,uBAAL,C;G;EASL,6F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,kC;EAMhD,C;;;;;;;;iDANgD,Y;;;;;YAK5C,gB;4BAAA,gCAAK,wBAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAJA,OAIA,a;;;;;;;;;;;;;;EACJ,C;EANgD,0C;IAAA,yD;qBAAA,iF;UAAA,S;eAAA,Q;;eAAA,uB;IAMhD,C;G;EATA,yB;IAG2C,oCAAK,sBAAL,C;G;EAQ3C,qB;IAGsC,8B;G;EAEtC,qB;IAAA,yB;G;wCACI,mC;IAAkE,W;G;;;;;;;EADtE,iC;IAAA,gC;MAAA,e;KAAA,yB;G;EAOiD,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,6B;IAAA,wB;IAAA,oC;EAIjD,C;;;;;;;;iDAJiD,Y;;;;;;YhEm9Z7C,mB;YAAA,gB;;;;;YAAA,wBAAgB,oBAAhB,Q;cAAA,gB;;;YAAgB,cAAA,oBAAhB,iB;YgEj9ZI,gB;4BAAA,kChEi9ZyB,OgEj9ZzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YhEi9ZJ,gB;;;YAAA,iB;YAAA,gB;;;YgEl9ZA,W;;;;;;;;;;;;;;EAGJ,C;EAJiD,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAIjD,C;G;EAPA,6B;IAG4C,oCAAK,0BAAL,C;G;EASG,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,6B;IAAA,wB;IAAA,oC;EAI/C,C;;;;;;;;iDAJ+C,Y;;;;;;YhE+9Z3C,mB;YAAA,gB;;;;;YAAA,wBAAgB,oBAAhB,Q;cAAA,gB;;;YAAgB,cAAA,oBAAhB,iB;YgE79ZI,gB;4BAAA,kChE69ZyB,OgE79ZzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YhE69ZJ,gB;;;YAAA,iB;YAAA,gB;;;YgE99ZA,W;;;;;;;;;;;;;;EAGJ,C;EAJ+C,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAI/C,C;G;EAPA,6B;IAG0C,oCAAK,0BAAL,C;G;EASO,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,6B;IAAA,wB;IAAA,oC;EAIjD,C;;;;;;;;iDAJiD,Y;;;;;;YhE69Z7C,mB;YAAA,gB;;;;;YAAA,wBAAgB,oBAAhB,Q;cAAA,gB;;;YAAgB,cAAA,oBAAhB,iB;YgE39ZI,gB;4BAAA,kChE29ZyB,OgE39ZzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YhE29ZJ,gB;;;YAAA,iB;YAAA,gB;;;YgE59ZA,W;;;;;;;;;;;;;;EAGJ,C;EAJiD,wC;IAAA,yD;qBAAA,+E;UAAA,S;eAAA,Q;;eAAA,uB;IAIjD,C;G;EAPA,6B;IAG4C,oCAAK,0BAAL,C;G;EASG,2F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,wB;IAAA,kC;EAI/C,C;;;;;;;;iDAJ+C,Y;;;;;Y9CulD3B,mD;YAAhB,gB;;;;;YAAA,KAAgB,yBAAhB,C;cAAA,gB;;;YAAgB,oC;Y8CrlDZ,gB;4BAAA,gC9CqlDyB,O8CrlDzB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;Y9CqlDJ,gB;;;Y8CtlDA,W;;;;;;;;;;;;;;EAGJ,C;EAJ+C,wC;IAA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AAA,yB;IAAA,kB;IAAA,iC;IAAA,kC;EAQA,C;;;;;;;;mDARA,Y;;;;;uCAEwB,kBAAc,oBAAd,EAAyB,YAAzB,C;;YAEhB,gB;4BAAA,iCAAc,wBAAd,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;YAEA,wBAAc,qB;;;;;;;;;;;;;;;;;;EAEtB,C;2CARA,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAQA,C;;;;;;;;;;;;;ECxBgB,4G;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,kC;IAAA,oB;EAAyB,C;;;;;;;;sDAAzB,Y;;;;;YAAU,gB;4BAAA,6BAAU,aAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YC3DqD,gB;4BD2DrD,aC3DqD,4C;gBAAA,qC;qBAAA,mB;YAAA,Q;;YD2D7D,oB;;;;;;;;;;;;;;EAAuB,C;EAAzB,mD;IAAA,+D;qBAAA,gG;UAAA,S;eAAA,Q;;eAAA,uB;IAAyB,C;G;EE7K7C,kB;IASI,MAAM,mCAA8B,uCAA9B,C;G;EAEV,uC;IAsBuE,e;G;EAEvE,uC;IAsBuE,e;G;EAEvE,yC;IA2ByE,e;G;EAEzE,4C;IAUmE,e;G;EAEnE,gD;IAUuE,e;G;EAEvE,8B;IA4B2C,Q;G;EAE3C,wC;IAOuE,Q;G;EAEvE,iD;IAO6G,Q;G;EAE7G,sC;IAU6E,e;G;EAE7E,sC;IASuE,e;G;EAEvE,0B;IAUgD,e;G;EAEhD,4B;IASkD,e;G;EAElD,yC;IAkBiF,e;G;EAEjF,gC;IASmD,e;G;EAEnD,oC;IAa2E,Q;G;EAE3E,iD;IAUI,e;G;EAEJ,4C;IAW6D,e;G;EAYyB,kC;IAAE,W;EAAK,C;EACnF,+H;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,gD;IAAA,kC;IAAA,kB;EAIN,C;;;;;;;;sDAJM,Y;;;;;YAEF,IAAI,CAAC,6BAAU,YAAV,CAAL,C;cAAmB,MAAM,Y;YACzB,gB;4BAAA,gCAAK,2BAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAFA,OAEA,a;;;;;;;;;;;;;;EACJ,C;EAJM,yE;IAAA,8D;qBAAA,mH;UAAA,S;eAAA,Q;;eAAA,uB;IAIN,C;G;EAfJ,yD;IAUkD,yB;MAAA,YAAoC,oB;IAClF,0BAAM,2CAAN,C;G;EAMJ,qC;IAUsD,e;G;EAEtD,uC;IAU4D,e;G;EAE5D,sC;IAUuD,e;G;EAEvD,wC;IAU6D,e;G;EAE7D,oD;IAMI,iBAAQ,SAAR,EAAc,KAAd,EAAqB,SAArB,C;G;sHAEJ,yB;IC/PA,gB;IAAA,8B;IAAA,iF;IAAA,0D;IAwHA,gF;IRpIA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IQ4I2B,8C;MAAA,mB;QAAE,uBAAa,aAAM,OAAnB,O;MAAyB,C;K;IAAG,6G;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,oB;IAAsB,C;;;;;;;;yDAAtB,Y;;;;;cAAO,gB;8BAAA,6BAAU,aAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAL,gB;8BAAA,gCAAK,aAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAAA,oB;;;;;;;;;;;;;;IAAoB,C;IAAtB,sD;MAAA,+D;uBAAA,iG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAAsB,C;K;IAD7D,iH;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,0C;MAAA,kD;MAAA,kC;IAElB,C;;;;;;;;kDAFkB,Y;;;;;cACd,gB;8BAAA,sCAAgB,wBAAhB,EAAuB,+CAAvB,EAAqD,qDAArD,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IACJ,C;IAFkB,8D;MAAA,yD;uBAAA,qG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAElB,C;K;IAxHyC,iF;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,wB;IAMzC,C;;;;;;;;oDANyC,Y;;;;;cAEjC,wB;cADJ,gB;8BAAA,6BACI,wBAAK,CAAL,0DADJ,EAEI,0BAAK,CAAL,8DAFJ,EAGI,0BAAK,CAAL,8DAHJ,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IAKJ,C;IANyC,+C;MAAA,oD;uBAAA,2E;YAAA,S;iBAAA,Q;;iBAAA,uB;MAMzC,C;K;IDgPA,sD;MASI,oCCzIc,gBDyIN,SCzIM,EDyIA,KCzIA,EDyIO,MCzIP,GAtHuB,iBD+PR,SC/PQ,CAsHvB,CDyId,C;K;GATJ,C;sHAWA,yB;ICtOA,gB;IAAA,8B;IAAA,iF;IAAA,0D;IAoFA,gF;IRpIA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IQ4I2B,8C;MAAA,mB;QAAE,uBAAa,aAAM,OAAnB,O;MAAyB,C;K;IAAG,6G;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,oB;IAAsB,C;;;;;;;;yDAAtB,Y;;;;;cAAO,gB;8BAAA,6BAAU,aAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAL,gB;8BAAA,gCAAK,aAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAAA,oB;;;;;;;;;;;;;;IAAoB,C;IAAtB,sD;MAAA,+D;uBAAA,iG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAAsB,C;K;IAD7D,iH;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,0C;MAAA,kD;MAAA,kC;IAElB,C;;;;;;;;kDAFkB,Y;;;;;cACd,gB;8BAAA,sCAAgB,wBAAhB,EAAuB,+CAAvB,EAAqD,qDAArD,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IACJ,C;IAFkB,8D;MAAA,yD;uBAAA,qG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAElB,C;K;IAnFgD,iF;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,wB;IAOhD,C;;;;;;;;oDAPgD,Y;;;;;cAExC,gC;cADJ,gB;8BAAA,6BACI,wBAAK,CAAL,0DADJ,EAEI,0BAAK,CAAL,8DAFJ,EAGI,0BAAK,CAAL,8DAHJ,EAII,0BAAK,CAAL,8DAJJ,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IAMJ,C;IAPgD,+C;MAAA,oD;uBAAA,2E;YAAA,S;iBAAA,Q;;iBAAA,uB;MAOhD,C;K;IDqNA,8D;MAUI,oCCrJc,gBDqJN,SCrJM,EDqJA,KCrJA,EDqJO,MCrJP,EDqJe,MCrJf,GAjF8B,iBDsOP,SCtOO,CAiF9B,CDqJd,C;K;GAVJ,C;sHAYA,yB;IC1MA,gB;IAAA,8B;IAAA,iF;IAAA,0D;IA4CA,gF;IRpIA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IQ4I2B,8C;MAAA,mB;QAAE,uBAAa,aAAM,OAAnB,O;MAAyB,C;K;IAAG,6G;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,oB;IAAsB,C;;;;;;;;yDAAtB,Y;;;;;cAAO,gB;8BAAA,6BAAU,aAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAL,gB;8BAAA,gCAAK,aAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAAA,oB;;;;;;;;;;;;;;IAAoB,C;IAAtB,sD;MAAA,+D;uBAAA,iG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAAsB,C;K;IAD7D,iH;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,0C;MAAA,kD;MAAA,kC;IAElB,C;;;;;;;;kDAFkB,Y;;;;;cACd,gB;8BAAA,sCAAgB,wBAAhB,EAAuB,+CAAvB,EAAqD,qDAArD,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IACJ,C;IAFkB,8D;MAAA,yD;uBAAA,qG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAElB,C;K;IA1CuD,iF;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,wB;IAQvD,C;;;;;;;;oDARuD,Y;;;;;cAE/C,wC;cADJ,gB;8BAAA,6BACI,wBAAK,CAAL,0DADJ,EAEI,0BAAK,CAAL,8DAFJ,EAGI,0BAAK,CAAL,8DAHJ,EAII,0BAAK,CAAL,8DAJJ,EAKI,0BAAK,CAAL,8DALJ,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,oB;;;;;;;;;;;;;;IAOJ,C;IARuD,+C;MAAA,oD;uBAAA,2E;YAAA,S;iBAAA,Q;;iBAAA,uB;MAQvD,C;K;IDuLA,sE;MAWa,oCClKK,gBDkKG,SClKH,EDkKS,KClKT,EDkKgB,MClKhB,EDkKwB,MClKxB,EDkKgC,MClKhC,GAxCqC,iBD0MG,SC1MH,CAwCrC,CDkKL,C;K;GAXb,C;EAuBsE,mG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,oD;EAAoB,C;;;;;;;;kDAApB,Y;;;;;YAAE,gB;4BAAA,MAAM,6BAAN,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAkB,C;EAApB,gD;IAAA,yD;qBAAA,uF;UAAA,S;eAAA,Q;;eAAA,uB;IAAoB,C;G;EAV1F,0C;IAU8D,0BAAQ,4BAAR,C;G;EAYO,gF;IAAA,wC;IAAA,yB;IAAA,oD;EAAoB,C;;;;;;;;kDAApB,Y;;;;;YAAE,gB;4BAAA,MAAM,6BAAN,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAkB,C;EAApB,gD;IAAA,kD;qBAAA,0E;UAAA,S;eAAA,Q;;eAAA,uB;IAAoB,C;G;EAVzF,0C;IAU8D,yBAAO,4BAAP,C;G;EAE9D,yC;IAKyF,OFlPrF,2BAAgB,qBEkPmF,SFlPnF,CAAhB,C;G;EEoPJ,0C;IAMiG,gCAAc,SAAd,C;G;EtD3PvD,6D;IAAA,wB;MAClC,kBAAkB,gCAAkC,YAAN,KAAM,CAAlC,EAA8D,CAA9D,C;MAMlB,WAAY,qB;MACZ,cAAM,WAAN,C;MAPA,OAQA,WAAY,Y;IAChB,C;G;;;;;;;;;;;;;;;EwDlEJ,mC;IAKiE,yBAAc,wBAAS,IAAvB,C;G;;;;EAYjE,yB;IAEI,gBAWqB,OAAa,IAAb,C;G;qCAErB,Y;IAEI,IAAI,aAAO,uBAAP,QAAJ,C;MAA0B,OAAO,K;IACjC,uCAAe,I;IACf,OAAO,I;EACX,C;iCAEA,Y;IACI,uCAAe,I;EACnB,C;wCAEA,Y;IAEW,gBAAP,a;InDtFJ,OAAO,IAAP,C;MACI,YAAO,gC;MmD+FU,Q;MART,kB;QAAiB,M;WACjB,cAAU,OAAV,C;QAAqB,M;WACrB,cAAU,IAAV,C;QACI,IAAI,aAAO,wBAAc,KAAd,EAAqB,OAArB,CAAX,C;UAA0C,M;;QAI1C,IAAI,aAAO,wBAAc,KAAd,EAAqB,IAArB,CAAX,C;UvE9IhB,CuE+IqB,4EvE/IrB,qBE+CQ,WqEgGgE,IrEhGhE,CF/CR,C;UuEgJoB,M;;;EAKpB,C;wCAEA,Y;IAEI,OAFyB,cAAA,aAAO,oBAAU,IAAV,CAAP,CAElB,KAAU,O;G;EAI8C,+D;IAAA,uB;MAE/D,IAAI,2BAAO,wBAAc,IAAd,EAAoB,IAApB,CAAX,C;QAAsC,M;MAGtC,IvElKJ,oBE+CQ,WqEmHQ,IrEnHR,CF/CR,C;MuEmKA,W;IAAA,C;G;yCAPA,wB;IACmC,OxDbG,qCwDayB,uCxDbzB,CAAtC,c;G;;;;;;EwD2BoB,0B;IAAC,oB;MAAA,OAAY,C;IAEjC,aAA+C,mBAAmC,IAAnC,C;G;qCAE/C,wB;IACI,wBAAI,KAAJ,2BAAmB,K;EACvB,C;qCAEA,iB;IAA+C,OAAA,wBAAI,KAAJ,CAAW,uB;G;iDAE1D,iB;IACsB,Q;IAAX,U;IAAA,KAAW,OAAX,wBAAI,KAAJ,CAAW,uBAAX,U;MAAA,a;;MAAoC,gBAAhB,mB;MAAuB,wDrDjIhD,S;MqDiIK,SrDhIJ,S;;IqDgIH,a;EACJ,C;6CAEA,gB;IAC0B,IACP,I;IADf,iBAAc,CAAd,UAAsB,IAAtB,U;MACI,CAAW,OAAX,wBAAI,KAAJ,CAAW,uBAAX,6C;;EAER,C;;;;;;EAG0B,qC;IAC1B,gBAAqB,OAAO,YAAP,C;IACrB,kBACuB,OAAY,CAAZ,C;IACvB,eAAoB,OAAO,gBAAP,C;IACpB,0BAC+B,SAAO,CAAP,C;IAC/B,gBACqB,SAAO,CAAP,C;IACrB,mBAAwB,SAAO,CAAP,C;G;;;SAIpB,Y;MAAa,YAAM,aAAO,uB;Mf1O6B,gB;Me0O/C,Of1O+B,Ue0O/B,If1O2B,GAAoB,qEAApB,GAAmC,4E;K;Se2OtE,iB;MACI,sBAAkB,CAAlB,C;MACA,mBAA2B,YAAM,uBAAjC,C;MACA,eAAe,wBAAS,I;MAEpB,eAAe,aAAO,uB;MACtB,IAAI,0BAAJ,C;QAA0B,M;MAC1B,+C;MACA,gBAAc,eAAS,uB;MACvB,IAAI,iBAAgB,CAAhB,MAAqB,CAAzB,C;QACI,qC;QACA,yCAAiB,a;;QAGjB,yCAAiB,gBAAc,CAAd,I;QACjB,M;;MAEJ,aAAW,YAAM,uB;MAQrB,OAAO,IAAP,C;QAEI,UAAS,qBAAY,uBAAiB,uBAA7B,C;QAGL,IAAI,eAAS,uBAAT,KAAkB,aAAtB,C;UACI,yCAAiB,gBAAc,CAAd,I;UACjB,M;SAGJ,gBAAc,eAAS,uB;QACvB,aAAW,YAAM,uB;;IAG7B,C;;EAEJ,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,wB;IAAA,6B;IAAA,4B;IAAA,kC;EAsBA,C;;;;;;;;mDAtBA,Y;;;;;8BACe,2B;mCACW,I;;YAGlB,gB;;;kCAGmB,mBAAO,uB;YAEtB,IAAI,gCAAqB,6BAAY,oBAAZ,CAAzB,C;cf9R+C,gB;ce+RjC,gB;8BAAV,oBAAU,YAAgB,mBf/RC,Ke+RZ,If/RQ,GAAoB,qEAApB,GAAmC,Ue+RhC,mBf/RgC,6De+RhD,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cADd,gB;;;;;YAEI,uBAAY,mB;YAFhB,gB;;;YAKA,IAAI,CAAC,eAAK,cAAV,C;cACS,gB;8BAAL,eAAK,mB;kBAAA,qC;uBAAA,mB;cAAA,Q;;cADT,gB;;;;;YAAA,gB;;;YAVJ,gB;;;;;;;;YAeA,sBAAS,eAAT,C;;;;;;;;;;;;;;;;;;EAER,C;4CAtBA,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAsBA,C;qCAEA,8B;IACI,kBAAkB,uBAAiB,uB;IACnC,YAAU,eAAW,OAAX,C;IACV,aAAU,CAAV,MAAkB,WAAlB,M;MACI,kBAAI,CAAJ,EAAS,sBAAI,CAAJ,CAAT,C;;IAEJ,OAAO,K;EACX,C;2CAEA,Y;IACI,WAAW,uBAAiB,uB;IAC5B,IAAI,aAAO,uBAAP,IAAgB,IAApB,C;MACI,aAAyB,cAAZ,YAAM,uBAAM,EAAO,IAAI,IAAJ,IAAP,C;MACzB,sCAAc,M;MACd,iDAAyB,IAAI,IAAJ,I;KAE7B,YAAY,gBAAU,uB;IACtB,Q;IACA,OAAO,IAAP,C;MAEI,OAAO,YAAM,uBAAM,yBAAgB,KAAhB,C;MACnB,qB;MACA,IAAI,SAAS,uBAAiB,uBAA9B,C;QAAqC,QAAQ,C;MAC7C,IAAI,IAAK,WAAT,C;QAAqB,K;;IAEzB,0CAAkB,K;IAClB,aAAO,2B;IAjBiC,OAkBxC,I;G;uCAGJ,gB;IACS,W;IACL,aAAO,2B;G;gDAGX,6B;IAGiB,IAAN,I;IAAA,QAAM,QAAN,C;WACH,E;WAAA,C;QAAyC,W;QAAzC,K;cACQ,mCAAwB,IAAxB,EAA8B,OAA9B,EAAuC,QAAvC,C;QAFL,K;;IAAP,W;EAIJ,C;;;;;;EvE7SJ,yE;IASI,sC;IAAA,4C;G;EATJ,iGAWY,Y;IAAQ,2B;GAXpB,E;EAAA,0DAaQ,kB;IACI,wBAAW,MAAX,C;G;EAdZ,sF;EwE1CA,kC;IACI,gB;IAAA,gGAAwB,4BAAwB,SAAxB,C;G;;;sCASxB,+C;IAKI,uB;MAAA,UAA4B,gC;IAC5B,wB;MAAA,WAAgB,E;WANpB,oG;G;;;;;;EAmBgC,wC;IAEhC,sB;IAEA,wB;G;EAKY,6G;IAAA,wC;IAAA,yB;IAAA,gD;IAAA,oB;EAAgB,C;;;;;;;;iFAAhB,Y;;;;;YAAE,gB;4BAAA,8CAAU,aAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAc,C;EAAhB,6E;IAAA,kD;qBAAA,uG;UAAA,S;eAAA,Q;;eAAA,uB;IAAgB,C;G;;;SAAxB,Y;MAAQ,4D;K;;;;SAGR,Y;MAAQ,OAAI,kBAAY,EAAhB,GAA0C,EAA1C,GAAgE,a;K;;8CAE5E,6B;IAGsB,Q;IADlB,iBAAiB,qBAAU,IAAK,QAAf,C;IAEb,IAAA,IAAK,SAAL,KAAiB,EAAjB,C;MAA6C,e;SAC7C,iBAAY,EAAZ,C;MAA6C,OAAL,IAAK,S;SAC7C,IAAA,IAAK,SAAL,KAAiB,EAAjB,C;MAAqC,e;SACrC,iBAAY,EAAZ,C;MAAqC,OAAL,IAAK,S;SACrC,IAAA,IAAK,SAAL,KAAiB,EAAjB,C;MAAsC,S;SACtC,iBAAY,EAAZ,C;MAAiC,S;;MAM7B,UAAU,IAAK,SAAL,GAAgB,QAAhB,I;MACV,OAAI,OAAO,CAAX,GAAc,GAAd,GAAuB,U;;IAb/B,sB;IAgBA,IAAI,mBAAc,IAAK,QAAnB,KAA8B,gBAAe,IAAK,SAAtD,C;MAAgE,OAAO,I;IACvE,OAAO,mBAAO,UAAP,EAAmB,WAAnB,C;EACX,C;gDAMA,wB;IACI,OAAM,YAAN,KAAM,EAAU,YAAV,EAAmB,6BAAnB,EAAoC,KAApC,UAAmD,yBAAnD,C;G;6CAEV,iB;IASI,OAAM,UAAN,KAAM,EAAQ,YAAR,EAAiB,6BAAjB,+CAAyE,yBAAzE,C;G;EAGS,gI;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,gD;IAAA,kC;EAEf,C;;;;;;;;4DAFe,Y;;;;;YACD,gB;4BAAA,QAAV,4BAAU,EAAQ,+CAAY,oBAAZ,CAAR,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAV,OAAU,a;;;;;;;;;;;;;;EACd,C;EAFe,6E;IAAA,yD;qBAAA,oH;UAAA,S;eAAA,Q;;eAAA,uB;IAEf,C;G;0CAHJ,mC;IACI,sBAAe,2CAAf,e;G;kDAIJ,Y;IAAoD,S;G;mCAEpD,Y;IAEI,OAAE,yBAAF,SAAoB,8BAApB,gBAAuD,YAAvD,mBAA0E,aAA1E,M;G;;;;;;EAIyC,sD;IAI7C,uBAAe,OAAf,EAAwB,QAAxB,C;IAHA,gB;G;EAUuD,+H;IAAA,wC;IAAA,yB;IAAA,gE;IAAA,oB;EAAkB,C;;;;;;;;2FAAlB,Y;;;;;YAAE,gB;4BAAA,wDAAY,aAAZ,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAgB,C;EAAlB,+F;IAAA,kD;qBAAA,yH;UAAA,S;eAAA,Q;;eAAA,uB;IAAkB,C;G;mEAJzE,+C;IAEI,+BAAyC,iCAAV,SAAU,EAAiC,oBAAjC,C;IAEzC,OAAO,wBAAwB,UAAxB,UAA4C,+DAA5C,EAAyE,wBAAzE,e;EACX,C;oDAEA,+B;IAEI,gCAAY,qBAAiB,KAAjB,CAAZ,e;G;EAEJ,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;IAAA,8B;IAAA,kC;EAeA,C;;;;;;;;mDAfA,Y;;;;;YAGI,IAAI,wBAAY,EAAhB,C;0CACyB,Y;sCACJ,uCAAiB,kBAAjB,C;cAEjB,IAAI,8BAAc,yBAAd,CAAJ,C;gBACW,gB;gCAAA,+BAAY,oBAAZ,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBADX,gB;;;;cAJJ,gB;;;;;;;YAKQ,OAAO,a;;YAEX,IAAI,yCAAW,2BAAX,GAAuC,sCAAe,2BAAf,CAAvC,CAAJ,C;cACW,gB;8BAAA,4CAA+B,oBAA/B,EAA0C,qBAA1C,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cADX,gB;;;;;YACI,OAAO,a;;YARf,gB;;;YAWM,gB;4BAAA,uDAAQ,oBAAR,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;EACV,C;kDAfA,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAeA,C;2CAEA,Y;IACkC,OAAE,SAAF,uBAAkB,yC;G;;;;;;EAIf,0D;IAErC,uB;MAAA,UAA4B,gC;IAC5B,wB;MAAA,WAAgB,E;IAChB,+BAA0B,IAA1B,EAAgC,OAAhC,EAAyC,QAAzC,C;G;oDACA,6B;IACI,mCAAwB,SAAxB,EAA8B,OAA9B,EAAuC,QAAvC,C;G;0DAEJ,mC;IACI,OAAA,SAAK,iBAAQ,SAAR,e;G;;;;;;EAGb,kE;IAII,kBAFuH,SAEvH,uBAAqB,cAFkG,SAElG,eAArB,C;MAFiH,OAEzE,S;;MAFyE,OAIzG,iCAA6B,SAA7B,EAAmC,WAAnC,C;G;EAGiC,+D;IAEzC,gC;IAEA,wBAA6B,sBAAsB,kBAAtB,C;IAC7B,iBAA2C,uD;G;sDAE3C,+B;IACI,+BAAwB,kBAAxB,EAAqC,qBAArC,EAAqD,cAArD,EAA8D,KAA9D,e;G;EAHuC,2G;IAAA,wC;IAAA,yB;IAAA,oD;IAAA,oB;EAAsB,C;;;;;;;;6EAAtB,Y;;;;;YAAa,gB;4BAAX,6BAAW,YAAK,aAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAX,OAAW,a;;;;;;;;;;;;;;EAAS,C;EAAtB,2E;IAAA,kD;qBAAA,qG;UAAA,S;eAAA,Q;;eAAA,uB;IAAsB,C;G;;;;;;EAciB,qE;IAAA,qB;MACtE,aAAM,oBAAW,EAAX,C;MACV,W;IAAA,C;G;EAJ8B,kH;IAAA,wB;MAClC,OCjJE,6BzEoBN,mDwE8HkF,mDxE9HlF,CyEpBM,EAAuC,KAAvC,C;IDsJN,C;G;EAZJ,yF;IAGI,8B;MAAA,iBAAsB,sBAAsB,UAAtB,C;IAGtB,OAAsC,wEAAtC,c;G;EEasC,wC;IAAA,wB;MAClC,YAAY,sBAAkB,KAAlB,C;;QAER,gBAAQ,KAAR,C;;QACF,sC;UACE,KAAM,gCAAuB,CAAvB,C;;UAHV,O;;MADA,OAMA,KAAM,Y;IACV,C;G;EN9JJ,+C;IAmBY,oC;G;EAnBZ,6CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EN+CA,mD;IAMW,kC;G;EACH,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;mDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;Ead4B,mG;IAAA,wC;IAAA,yB;IAAA,gD;IAAA,kD;IAAA,oB;EAIxB,C;;;;;;;;kDAJwB,Y;;;;;YAEpB,IAAI,kBAAO,IAAX,C;cADA,OACiB,6BADjB,M;;cAEK,gB;8BAAA,6BAAU,aAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;YAFL,W;;;;;;;;;;;;;;;;EAGJ,C;EAZJ,mE;IAQ4B,kD;qBAAA,6F;UAAA,S;eAAA,Q;;eAAA,uB;IAIxB,C;G;EA5EJ,mB;IAAiC,W;G;EAesB,8E;IAAA,mB;MAAE,0BAAgB,I;MAAK,W;IAAA,C;G;EAAG,6L;IAAA,wC;IAAA,yB;IAAA,oD;IAAA,sD;IAAA,kD;IAAA,0E;IAAA,0B;EAKjE,C;;;;;;;;+EALiE,Y;;;;;YAGrC,UAA6B,MAA7B,EAAmB,M;YAF3C,kCAAa,gB;YACb,IAAI,qCAAgB,IAApB,C;cACwB,YAAV,S;cAAU,YAAM,+B;cnBhBa,kB;cmBgBnB,OnBhBG,eAAJ,GAAoB,2EAApB,GAAmC,4E;cmBgBL,cAAV,S;cAAU,cAAM,gC;cnBhBhB,kB;cmBgBA,UAAU,SnBhB1B,mBAAJ,GAAoB,2EAApB,GAAmC,8EmBgBf,6D;cAAvC,gB;8BAAA,0F;kBAAA,qC;uBAAA,mB;cAAA,Q;;cADJ,gB;;;;;;;YADA,W;;YAIJ,W;;;;;;;;;;;;;;EAAA,C;EALiE,4J;IAAA,qD;qBAAA,uL;UAAA,S;eAAA,Q;;eAAA,uB;IAKjE,C;G;EAEyC,iF;IAAA,mB;MAAE,2BAAiB,I;MAAK,W;IAAA,C;G;EAAG,+L;IAAA,wC;IAAA,yB;IAAA,sD;IAAA,oD;IAAA,kD;IAAA,0E;IAAA,0B;EAKpE,C;;;;;;;;iFALoE,Y;;;;;YAGlD,IAAU,IAAV,UAA6C,MAA7C,EAAmC,M;YAFjD,mCAAc,gB;YACd,IAAI,oCAAe,IAAnB,C;cACwB,YAAV,S;cAAU,YAAM,+B;cnBvBa,kB;cmBuB7B,UAAU,OnBvBG,eAAJ,GAAoB,2EAApB,GAAmC,4EmBuB5C,yD;cAA6C,cAAV,S;cAAU,cAAM,gC;cnBvBtB,kB;cmBuBM,UAAU,SnBvBhC,mBAAJ,GAAoB,2EAApB,GAAmC,8EmBuBT,6D;cAA7C,gB;8BAAA,4F;kBAAA,qC;uBAAA,mB;cAAA,Q;;cADJ,gB;;;;;;;YADA,W;;YAIJ,W;;;;;;;;;;;;;;EAAA,C;EALoE,4J;IAAA,qD;qBAAA,yL;UAAA,S;eAAA,Q;;eAAA,uB;IAKpE,C;G;EAbS,uO;IAAA,4B;MACT,eAAU,uB;MAAV,cAAyB,oB;MAAzB,eAAuC,oE;MAAvC,gBAAiE,0I;;QAuD7E,IAAI,QAAJ,C;UAAc,qB;QAEN,yBAAR,OAAQ,kBAAgB,qCAAhB,C;;;MAlDI,iBAAU,wB;MAAV,gBAA0B,qB;MAA1B,iBAAyC,uE;MAAzC,kBAAoE,0I;;QAgDhF,IAAI,UAAJ,C;UAAc,qB;QAEN,yBAAR,SAAQ,kBAAgB,yCAAhB,C;;;MA5CA,W;IAAA,C;G;EAtBO,qL;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,4C;IAAA,kD;IAAA,0E;IAAA,gC;IAAA,iC;IAAA,8B;IAAA,+B;IAAA,iC;IAAA,kC;IAAA,kC;EAwBf,C;;;;;;;;iEAxBe,Y;;;;;sCACQ,oCAAc,wBAAd,C;uCACC,oCAAc,yBAAd,C;wCACG,I;yCACC,I;2CACJ,K;4CACC,K;YACrB,gB;;;;;YAAA,IAAQ,0BAAR,IAA0B,2BAA1B,C;cAAA,gB;;;YDgLJ,gB;4BAAsC,cC/KjB,qQD+KiB,CAAtC,M;gBAAA,qC;qBAAA,mB;YAAA,Q;;YChLI,gB;;;YAiBJ,W;;;;;;;;;;;;;;EAAA,C;EAxBe,kI;IAAA,yD;qBAAA,yK;UAAA,S;eAAA,Q;;eAAA,uB;IAwBf,C;G;EA5BJ,yG;IAAA,wC;IAAA,yB;IAAA,kC;IAAA,0B;IAAA,4B;IAAA,kC;EA6BA,C;;;;;;;;0DA7BA,Y;;;;;YAII,gB;4BAAA,eAAe,gHAAf,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EAyBJ,C;EA7BA,0G;mBAAA,mG;QAAA,S;aAAA,Q;;aAAA,uB;EA6BA,C;EAkBoD,8F;IAAA,mB;MAAE,iBAAS,SAAT,IAAc,I;MAAM,iD;MAAY,W;IAAA,C;G;EAAG,qO;IAAA,wC;IAAA,yB;IAAA,wD;IAAA,kC;IAAA,4D;IAAA,wD;IAAA,wC;IAAA,kD;IAAA,wD;IAAA,0B;EASzE,C;;;;;;;;sEATyE,Y;;;;;YAK/C,UAGZ,MAHY,EAGZ,M;YAPV,IAAI,gCAAa,oBAAb,SAAJ,C;cAA6B,iF;;YAC7B,gCAAa,oBAAb,IAAkB,gB;YAClB,IAAI,wCAAkB,CAAtB,C;cAAyB,M;;cAAzB,gB;;;;;;;YACA,kBAAgB,iC;YACM,8B;YAAtB,iBAAc,CAAd,wB;cAC4B,YAAL,I;cAAK,YAAM,gCAAa,KAAb,C;cnBrDS,kB;cmBqDvC,YAAU,KAAV,InBrDuB,eAAJ,GAAoB,2EAApB,GAAmC,4E;;;YmBuDhD,mE;YAAV,gB;4BAAA,2E;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAPA,OAOA,a;;;;;;;;;;;;;;EACJ,C;EATyE,oM;IAAA,qD;qBAAA,+N;UAAA,S;eAAA,Q;;eAAA,uB;IASzE,C;G;EAXK,yN;IAAA,4B;MACS,Q;MAAA,mB;kBAAlB,aAAU,CAAV,gB;QACI,eAAU,iBAAS,CAAT,C;QAAV,cAAuB,iBAAS,CAAT,C;QAAvB,eAAoC,4E;QAApC,gBAAyE,oK;;UAqBrF,IAAI,QAAJ,C;YAAc,qB;UAEN,yBAAR,OAAQ,kBAAgB,qCAAhB,C;;;;MAZJ,W;IAAA,C;G;EAtBiB,yK;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,wD;IAAA,kD;IAAA,wD;IAAA,wB;IAAA,4B;IAAA,gC;IAAA,4B;IAAA,6B;IAAA,kC;IAAA,kC;EAwBzB,C;;;;;;;;wDAxByB,Y;;;;;8BACV,wBAAM,O;Y7EtCsC,YAAa,Q6EuC/C,e7EvC+C,C;YAIvD,Q;YAAA,OAAA,KAAM,OAAN,GAAa,CAAb,I;YAAb,aAAU,CAAV,iB;cACI,MAAM,CAAN,I6EkCyB,oCAAc,yB7ElCvB,C6EkCuB,CAAd,C;;;kC7EhCtB,K;sC6EiCY,gBAAmB,eAAnB,O;Y7ExCoC,cAAa,Q6EyC/C,e7EzC+C,C;YAIvD,U;YAAA,SAAA,OAAM,OAAN,GAAa,CAAb,I;YAAb,eAAU,CAAV,uB;cACI,QAAM,GAAN,I6EoCyB,K;;;kC7ElCtB,O;uC6EmCS,e;4CACK,e;YAErB,gB;;;;;YAAA,IAAO,sBAAP,KAAoB,CAApB,C;cAAA,gB;;;YD+IA,gB;4BAAsC,cC9IrB,kQD8IqB,CAAtC,M;gBAAA,qC;qBAAA,mB;YAAA,Q;;YC/IA,gB;;;YAgBJ,W;;;;;;;;;;;;;;EAAA,C;EAxByB,sH;IAAA,yD;qBAAA,6J;UAAA,S;eAAA,Q;;eAAA,uB;IAwBzB,C;G;EA7BA,kF;IAKU,sBAAe,iEAAf,e;G;kBA0BV,yB;IAQ4B,mG;MAAA,wC;MAAA,yB;MAAA,gD;MAAA,kD;MAAA,oB;IAIxB,C;;;;;;;;oDAJwB,Y;;;;;cAEpB,IAAI,kBAAO,IAAX,C;gBADA,OACiB,6BADjB,M;;gBAEK,gB;gCAAA,6BAAU,aAAV,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;;;cAFL,W;;;;;;;;;;;;;;;;IAGJ,C;IAZJ,mE;MAQ4B,kD;uBAAA,6F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAIxB,C;K;IAZJ,oE;MAMI,IAAI,QAAJ,C;QAAc,M;MAEN,yBAAR,OAAQ,kBAAgB,qCAAhB,C;IAKZ,C;GAbA,C;EAkBiB,2F;IAAA,wC;IAAA,yB;IAAA,8C;IAAA,0B;EAEb,C;;;;;;;;6DAFa,Y;;;;;YACc,gB;4BAAR,0BAAQ,gBAAS,8CAAS,IAAlB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAvB,W;;;;;;;;;;;;;;EACJ,C;EAFa,wD;IAAA,qD;qBAAA,qF;UAAA,S;eAAA,Q;;eAAA,uB;IAEb,C;G;EAJmF,iG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,wC;IAAA,kC;EAKvF,C;;;;;;;;sDALuF,Y;;;;;YACrE,Q;YAAd,cAAc,wF;YPvBd,gB;4BOwBA,uBPxBA,2COwBa,oCPxBb,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YOuBA,OACK,a;;;;;;;;;;;;;;EAGT,C;EALuF,8C;IAAA,yD;qBAAA,qF;UAAA,S;eAAA,Q;;eAAA,uB;IAKvF,C;G;EANA,wC;IAC+E,0CAAQ,0BAAR,C;G;EAsB9B,4D;IAAA,qB;MACrC,IAAI,CAAC,aAAM,mBAAX,C;QAA+B,aAAM,gBAAO,uBAAmB,KAAnB,CAAP,C;MACzC,W;IAAA,C;G;EAhBW,iJ;IAAA,wC;IAAA,6B;IAAA,0B;IAAA,wC;IAAA,0C;IAAA,0B;IAAA,kD;IAAA,yB;IAAA,0B;IAAA,iC;IAAA,yB;IAAA,wB;IAAA,qB;IAAA,uC;IAAA,2B;IAAA,kC;EA+Bf,C;;;;;;;;uDA/Be,Y;;;;;YAcV,Q;+BAbW,gCAAU,uBAAV,C;gCACC,gCAAU,wBAAV,C;YAYc,CAA1B,wEAA0B,wBAAc,gEAAd,C;uCAIP,iBAAO,W;;+BvBsCP,I;;YAsBV,kBuB1DN,gBvB0DM,W;YAAV,gB;;;YAAU,gB;4BAAA,6B;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAV,KAAU,aAAV,C;;;;cAAA,gB;;;;;2BAAU,sB;;;;;;YuBzDiB,gB;4BAAA,sC;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAnB,IAAI,CAAe,aAAnB,C;cACI,gB;;;cADJ,gB;;;;;YnB3G+C,kB;YmB8G3B,avBsDL,YIpKgB,KmB8GhB,InB9GY,GAAoB,2EAApB,GAAmC,UJoK/C,YIpK+C,6D;YmB8GvB,YAAL,I;YAAK,YAAoB,+B;YnB9GZ,kB;YmB8G1C,gB;4BAAA,uCnB9G0B,eAAJ,GAAoB,2EAApB,GAAmC,4EmB8GzD,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAL,gB;4BAAA,8BAAK,aAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;YvBsDR,gB;;;;;;;;;;;YAnBF,kC;cACE,mBAAQ,G;cACR,MAAM,G;;cAJV,S;;;YAMI,euB3CI,gBvB2CJ,EAAe,gBAAf,C;;;;YAcJ,oB;;;YuB5EI,iB;gCAmBU,a;;;;;;;;YAMR,yC;;;cAzBF,iB;mCA0BM,eAAF,CAAE,EAAuB,gBAAvB,C;;;cARN,O;;;;;;;;;;;YAUI,IAAI,CAAC,iBAAO,mBAAZ,C;cAAgC,iBAAO,gBAAO,uBAAmB,gBAAnB,CAAP,C;;;;;;;;;;;;;;;;;;;;EAE/C,C;EA/Be,8F;IAAA,yD;qBAAA,qI;UAAA,S;eAAA,Q;;eAAA,uB;IA+Bf,C;G;EAhCsH,iI;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,wC;IAAA,0C;IAAA,kD;IAAA,kC;EAiC1H,C;;;;;;;;gDAjC0H,Y;;;;;YACtH,gB;4BAAA,eAAe,4HAAf,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAgCJ,C;EAjC0H,8E;IAAA,yD;qBAAA,qH;UAAA,S;eAAA,Q;;eAAA,uB;IAiC1H,C;G;EAjCA,yC;IAA+G,sCAAW,sCAAX,C;G;EAqC9F,6E;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,0B;EAEb,C;;;;;;;;yDAFa,Y;;;;;YACc,gB;4BAAR,wBAAQ,YAAK,8CAAS,IAAd,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAvB,W;;;;;;;;;;;;;;EACJ,C;EAFa,0C;IAAA,qD;qBAAA,uE;UAAA,S;eAAA,Q;;eAAA,uB;IAEb,C;G;EAH+E,6F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,wC;IAAA,kC;EAInF,C;;;;;;;;kDAJmF,Y;;;;;YPjE/E,gB;4BOkEA,uBPlEA,2COkEa,6CPlEb,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YOkEA,OAAK,a;;;;;;;;;;;;;;EAGT,C;EAJmF,0C;IAAA,yD;qBAAA,iF;UAAA,S;eAAA,Q;;eAAA,uB;IAInF,C;G;EALA,oC;IAC2E,0CAAQ,sBAAR,C;G;EbrC3E,mD;IAMW,kC;G;EACH,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;mDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;EcrE0C,yC;IAAA,wB;MAClC,gBAAgB,kBAAc,KAAM,QAApB,EAA6B,KAA7B,C;MAAhB,OACU,0BAAV,SAAU,EAA0B,SAA1B,EAAqC,aAArC,C;IACd,C;G;EAlBJ,wC;IAeI,OAAsC,uBAAtC,c;G;EAoBc,+G;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,0B;IAAA,kC;EAAmB,C;;;;;;;;0DAAnB,Y;;;;;YAAE,gB;4BAAA,+CAAM,gBAAN,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAiB,C;EAAnB,4D;IAAA,yD;qBAAA,mG;UAAA,S;eAAA,Q;;eAAA,uB;IAAmB,C;G;EAD5B,+F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,kC;EAEL,C;;;;;;;;mDAFK,Y;;;;;YACD,gB;4BAAA,UAAU,wEAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EACJ,C;EAFK,4C;IAAA,yD;qBAAA,mF;UAAA,S;eAAA,Q;;eAAA,uB;IAEL,C;G;EAhBJ,2B;IAcI,sCAAK,wBAAL,C;G;EAIJ,0D;IAEI,wB;MAAA,WAAgB,C;IAGhB,cAAc,UAAW,QAAX,C;IACd,iBAAiB,+BAAoB,OAApB,C;IACjB,gBAAgB,yBAAqB,UAArB,EAAiC,OAAjC,C;IAChB,SAAU,oDAA6B,SAA7B,EAAwC,KAAxC,C;IACV,OAAO,S;EACX,C;EAE8B,uC;IAG1B,0BAAkB,OAAlB,EAA2B,KAA3B,C;G;mDACA,iB;IACI,IAAI,6CAAJ,C;MAAsC,OAAO,I;IAC7C,OAAO,wBAAW,KAAX,C;EACX,C;;;;;;EAGiC,sD;IAGjC,6BAAqB,aAArB,EAAoC,OAApC,C;G;0DACA,iB;IACI,IAAI,6CAAJ,C;MAAsC,OAAO,I;IAC7C,OAAO,wBAAW,KAAX,C;EACX,C;;;;;;EC/DJ,0C;IACI,IAAI,SAAK,MAAL,KAAe,KAAnB,C;MAA0B,MAAM,S;EACpC,C;uIAOA,yB;IAAA,gE;IAAA,wB;MAGI,IAAI,QAAQ,CAAZ,C;QACI,MAAM,6BAAoB,6BAApB,C;OAEV,OAAO,K;IACX,C;GAPA,C;ETwBA,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EUxC+C,wE;IAG3C,uB;MAAA,UAA4B,gC;IAC5B,wB;MAAA,WAAgB,E;IAChB,+BAA0B,IAA1B,EAAgC,OAAhC,EAAyC,QAAzC,C;IAJA,4B;G;uDAKA,6B;IACI,sCAA2B,gBAA3B,EAAsC,SAAtC,EAA4C,OAA5C,EAAqD,QAArD,C;G;EAYmE,iM;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,8E;IAAA,0C;EAE3D,C;;;;;;;;6FAF2D,Y;;;;;YAC7C,gB;4BAAA,uDAAV,4BAAU,EAAU,wBAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAV,OAAU,a;;;;;;;;;;;;;;EACd,C;EAF2D,8I;IAAA,yD;qBAAA,qL;UAAA,S;eAAA,Q;;eAAA,uB;IAE3D,C;G;EARS,0L;IAAA,wC;IAAA,yB;IAAA,wD;IAAA,kD;IAAA,8E;IAAA,0B;IAAA,0B;EASb,C;;;;;;;;sFATa,Y;;;;;YACT,Q;YAAA,uD;cACI,oBAAO,6BAAP,C;cACA,gB;8BAAA,e;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAFJ,gB;;;;;;;YAAA,gB;;;YAAA,OAKA,oCAAe,4EAA4C,uJAA5C,CALf,M;;;;;;;;;;;;;;EAQJ,C;EATa,uJ;IAAA,qD;qBAAA,oL;UAAA,S;eAAA,Q;;eAAA,uB;IASb,C;G;EAXM,kK;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,8E;IAAA,kD;IAAA,kC;EAYV,C;;;;;;;;+EAZU,Y;;;;;YACN,uBAAyB,IAAzB,C;YV+CR,gB;4BU9CQ,+CV8CR,6CU9CqB,kKV8CrB,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YU/CQ,OACK,a;;;;;;;;;;;;;;EAUT,C;EAZU,+G;IAAA,yD;qBAAA,sJ;UAAA,S;eAAA,Q;;eAAA,uB;IAYV,C;G;EAdJ,2E;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAeA,C;;;;;;;;qDAfA,Y;;;;;YAEI,gB;4BAAA,UAAU,+EAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EAaJ,C;6DAfA,kD;mBAAA,oE;QAAA,S;aAAA,Q;;aAAA,uB;EAeA,C;;;;;;EAG8B,gE;IAG9B,uB;MAAA,UAA4B,gC;IAC5B,wB;MAAA,WAAgB,E;IAChB,uBAAe,OAAf,EAAwB,QAAxB,C;IAJA,kB;IACA,gC;G;6CAIA,6B;IACI,4BAAiB,WAAjB,EAAuB,kBAAvB,EAAoC,OAApC,EAA6C,QAA7C,C;G;kDAEJ,iB;IACI,OAAa,YAAN,KAAM,EAAY,YAAZ,EAAqB,aAArB,EAAuC,yBAAvC,C;EACjB,C;EAcqB,gK;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,kD;IAAA,kD;EAMb,C;;;;;;;;0EANa,Y;;;;;;YAEC,gB;4BAAN,wBAAM,iBAAQ,4BAAR,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YADV,gB;gCACU,a;;;;;;;;;;;;YAEN,4BAAU,U;;;;;;;;;;;;;;;;;;EAElB,C;EANa,6G;IAAA,yD;qBAAA,oJ;UAAA,S;eAAA,Q;;eAAA,uB;IAMb,C;G;EAdS,wJ;IAAA,wC;IAAA,yB;IAAA,sC;IAAA,kD;IAAA,0C;IAAA,kD;IAAA,0B;EAeb,C;;;;;;;;mEAfa,Y;;;;;YAMT,sF;YACU,gB;4BAAV,4BAAU,c;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YANV,OAOM,OAAN,wBAAM,kBAAO,sHAAP,C;;;;;;;;;;;;;;EAOV,C;EAfa,qH;IAAA,qD;qBAAA,kJ;UAAA,S;eAAA,Q;;eAAA,uB;IAeb,C;G;EAnBJ,uE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,0B;EAoBA,C;;;;;;;;qDApBA,Y;;;;;YACI,gBAAgB,YAAU,wBAAV,C;YAChB,gBAAgB,qBAAiB,gBAAjB,C;YAChB,UAAgB,yBAAiB,qBAAjB,C;YVgBpB,gB;4BUfI,iBVeJ,6CUfiB,8EVejB,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EUCA,C;iDApBA,8C;mBAAA,gE;QAAA,S;aAAA,Q;;aAAA,uB;EAoBA,C;uDAEA,Y;IACI,wBAAc,kBAAd,O;G;;;;;;EAGiC,2D;IAErC,uB;MAAA,UAA4B,gC;IAC5B,wB;MAAA,WAAgB,E;IAChB,uBAAe,OAAf,EAAwB,QAAxB,C;IAHA,oB;G;oDAIA,6B;IACI,mCAAwB,YAAxB,EAA+B,OAA/B,EAAwC,QAAxC,C;G;yDAEJ,iB;IACI,OAAa,YAAN,KAAM,EAAY,YAAZ,EAAqB,aAArB,EAAuC,yBAAvC,C;EACjB,C;EAKqB,iJ;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,wC;IAAA,kD;EAA0B,C;;;;;;;;iFAA1B,Y;;;;;YAAO,gB;4BAAL,uBAAK,iBAAQ,4BAAR,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAL,OAAK,a;;;;;;;;;;;;;;EAAmB,C;EAA1B,8F;IAAA,yD;qBAAA,qI;UAAA,S;eAAA,Q;;eAAA,uB;IAA0B,C;G;wDAH/C,+B;IACI,gBAAgB,qBAAiB,KAAjB,C;I7D2qDJ,Q;IAAA,O6D1qDZ,Y7D0qDY,W;IAAhB,OAAgB,cAAhB,C;MAAgB,yB;M6DzqDF,8BAAO,gD7DyqDQ,O6DzqDR,YAAP,C;;EAEd,C;;;;;;ECvFJ,wB;IAAA,4B;G;sCACI,+B;EAEA,C;;;;;;;EAHJ,oC;IAAA,mC;MAAA,kB;KAAA,4B;G;;;EjBgB6C,gD;IAAA,iC;MAQpB,UACQ,M;MARzB,UAAU,OAAQ,I;MAClB,qBAAqB,qDAAe,GAAf,C;MACrB,IAAI,QAAQ,qBAAZ,C;QACI,OAAgB,YAAY,cAAhB,GAAgC,WAAhC,GACP,QAAQ,CAAR,I;OAGT,iBAAiB,+E;MACjB,wBAAyC,0BAAhB,0DAAgB,EAA0B,UAA1B,C;MAgCzC,IAAI,sBAAsB,UAA1B,C;Q7D6EyC,MAAM,2BAA8B,C6D3ErE,kCACQ,oDADR,IAEQ,qCAAe,iBAAf,sCAAqD,UAArD,cAFR,IAGQ,iFAHR,GAIQ,qF7DuE6D,YAA9B,C;O6DrH/C,OAuDI,kBAAJ,GAAwB,KAAxB,GAAmC,QAAQ,CAAR,I;IACvC,C;G;EA3DJ,iD;IAEI,aAAa,cAAe,cAAK,CAAL,EAAQ,8BAAR,C;IA0D5B,IAAI,WAAU,oCAAd,C;M7D4D6C,MAAM,2BAA8B,C6D1DzE,mCACQ,yCAA4B,gCAA5B,aADR,KAEQ,4CAA+B,cAA/B,aAFR,IAGQ,kE7DuDiE,YAA9B,C;K6DpDvD,C;EAEA,0D;IACI,IAAI,cAAS,IAAb,C;MAAmB,OAAO,I;IAC1B,IAAI,cAAS,UAAb,C;MAAyB,OAAO,S;IAChC,IAAI,yCAAJ,C;MAAgC,OAAO,S;IACvC,OAAc,0BAAP,wBAAO,EAA0B,UAA1B,C;EAClB,C;uHAEA,yB;IAAA,iF;IAAA,0D;IAAA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IAAA,wB;MAMI,0C;IAKJ,C;GAXA,C;EkBpFgC,mC;IAC5B,wB;G;0CAEA,+B;IAA4C,OAAA,cAAQ,YAAK,KAAL,e;G;;;;;;EZkCxD,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EN+CA,mD;IAMW,kC;G;EACH,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;mDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;EmBlFA,qC;IAyF8B,wB;MAAA,WAAgB,E;IAI7B,IAAN,I;IhF3EP,IAAI,EgFwEI,YAAY,CAAZ,IAAiB,aAAY,EAA7B,IAAyC,aAAY,EhFxEzD,CAAJ,C;MACI,cgFwEA,iF;MhFvEA,MAAM,8BAAyB,OAAQ,WAAjC,C;KgF0EN,kBADS,SACT,e;MAAkB,qCAAgB,QAAhB,C;;MACV,mCAAwB,SAAxB,UAAyC,QAAzC,C;IAFZ,W;EAIJ,C;EAEA,6B;IAoC6C,yBAAO,EAAP,C;G;EAE7C,oC;IAiDW,Q;IADP,iBAAiB,OAAjB,C;IAEI,oBAAW,gCAAX,E;MAAoC,gB;SACpC,0C;MAAuB,6BAAe,OAAf,C;;MACf,mCAAwB,SAAxB,EAAwC,OAAxC,C;IAHZ,W;EAKJ,C;EAagB,4E;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,oB;EAGR,C;;;;;;;;2DAHQ,Y;;;;;YpD6BwD,4B;YoD5BlC,eAA1B,aAA0B,C;YAC1B,gB;4BAAA,4BAAK,aAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YADA,OACA,a;;;;;;;;;;;;;;EACJ,C;EAHQ,4C;IAAA,kD;qBAAA,sE;UAAA,S;eAAA,Q;;eAAA,uB;IAGR,C;G;EAJc,mG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,gD;IAAA,kC;EAKlB,C;;;;;;;;oDALkB,Y;;;;;YbrJlB,gB;4BAAA,wEasJY,+CbtJZ,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YasJI,oB;;;;;;;;;;;;;;EAIJ,C;EALkB,gD;IAAA,yD;qBAAA,uF;UAAA,S;eAAA,Q;;eAAA,uB;IAKlB,C;G;EAfJ,gC;IASI,IAAI,sCAAJ,C;MAA6B,OAAO,S;IACpC,sCAAkB,6BAAlB,C;EAMJ,C;EAoDyE,4E;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,0B;EAEjE,C;;;;;;;;wDAFiE,Y;;;;;YAC9C,gB;4BAAA,4BAAK,gBAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAf,W;;;;;;;;;;;;;;EACJ,C;EAFiE,yC;IAAA,qD;qBAAA,sE;UAAA,S;eAAA,Q;;eAAA,uB;IAEjE,C;G;EAVc,8J;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,4C;IAAA,oD;IAAA,8C;IAAA,sD;IAAA,kC;EAWlB,C;;;;;;;;iDAXkB,Y;;;;;YpDpBkD,4B;YoDqBhE,sBAKsB,aAA0B,kBAAS,qBAAT,C;YAChD,eAA8C,OAAxB,OAAP,yBAAO,EAAO,eAAP,CAAwB,EAAO,6BAAP,C;Yb9MlD,gB;4Ba+M0C,OAApB,OAAlB,2BAAQ,QAAR,CAAkB,EAAO,8BAAP,CAAoB,EAAO,6BAAP,Cb/M1C,6Ca+MqE,4Cb/MrE,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YawMI,OAOyD,a;;;;;;;;;;;;;;EAG7D,C;EAXkB,2G;IAAA,yD;qBAAA,kJ;UAAA,S;eAAA,Q;;eAAA,uB;IAWlB,C;G;EArDJ,+D;IAqCI,0B;MAAA,aAAkB,E;IAGlB,iBAAiB,WAAjB,C;IACA,aAAa,S;IACb,sCAAkB,yDAAlB,C;EAYJ,C;EAEA,mC;IhFzPI,IAAI,EgF0PI,oBAAQ,qBAAR,ShF1PJ,CAAJ,C;MACI,cgF0PA,uD;MhFzPA,MAAM,8BAAyB,OAAQ,WAAjC,C;KgF2Pd,C;Eb5OA,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EMsJ0C,0C;IAAA,wB;MAClC,YAAY,sBAAkB,KAAlB,C;;QAER,gBAAQ,KAAR,C;;QACF,sC;UACE,KAAM,gCAAuB,CAAvB,C;;UAHV,O;;MADA,OAMA,KAAM,Y;IACV,C;G;EQpKgB,mF;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,0B;EAA+B,C;;;;;;;;+DAA/B,Y;;;;;YAAW,gB;4BAAA,4BAAK,8CAAS,IAAd,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAoB,C;EAA/B,gD;IAAA,qD;qBAAA,6E;UAAA,S;eAAA,Q;;eAAA,uB;IAA+B,C;G;EADc,oG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,kC;EAEzD,C;;;;;;;;wDAFyD,Y;;;;;Yd0B7D,gB;4BAAA,qEczBgB,mDdyBhB,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YczBQ,oB;;;;;;;;;;;;;;EACJ,C;EAFyD,iD;IAAA,yD;qBAAA,wF;UAAA,S;eAAA,Q;;eAAA,uB;IAEzD,C;G;EAK+B,oH;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,oD;IAAA,oB;EAOvB,C;;;;;;;;iEAPuB,Y;;;;;YACnB,IAAI,qBAAJ,C;cACI,IAAI,sCAAJ,C;gBAAuB,wC;gBAAqB,YAAL,I;gBAAK,YAAM,8B;gB1BvCX,kB;gB0BuCL,gB;gCAAA,gB1BvCX,eAAJ,GAAoB,2EAApB,GAAmC,4E0BuCpB,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBAAlC,gB;;;;cADJ,OAII,iCAAY,aAJhB,M;;;;;;YACI,gB;;;YADJ,OAEI,iCAAY,IAFhB,M;;;;;;;;;;;;;;;;EAMJ,C;EAPuB,oF;IAAA,kD;qBAAA,8G;UAAA,S;eAAA,Q;;eAAA,uB;IAOvB,C;G;EAI6B,oI;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,oD;IAAA,0C;EAGzB,C;;;;;;;;sEAHyB,Y;;;;;YACrB,iCAAY,I;YACZ,wC;YAAqB,YAAL,I;YAAK,YAAM,wB;Y1BlDY,kB;Y0BkD5B,gB;4BAAA,gB1BlDY,eAAJ,GAAoB,2EAApB,GAAmC,4E0BkD3C,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YADX,OACW,a;;;;;;;;;;;;;;EACf,C;EAHyB,0G;IAAA,4C;qBAAA,8H;UAAA,S;eAAA,Q;;eAAA,uB;IAGzB,C;G;EAhBK,gH;IAAA,4B;MAWT,Q;MATO,yBAAP,cAAO,kBAAgB,sEAAhB,C;MASP,yC;QAEI,mDAAyB,iFAAzB,C;OAKR,W;IAAA,C;G;EAzBU,oI;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,0C;IAAA,0D;IAAA,0B;IAAA,6B;IAAA,kC;IAAA,oC;EA2BlB,C;;;;;;;;iDA3BkB,Y;;;;;gCAED,sCAAyB,EAAzB,EAA4C,gDAA5C,C;uCAGS,I;YACtB,gB;;;;;YAAA,IAAO,sBAAP,KAAqB,IAArB,C;cAAA,gB;;;YRyJJ,gB;4BAAsC,gBQxJjB,0HRwJiB,CAAtC,M;gBAAA,qC;qBAAA,mB;YAAA,Q;;YQzJI,gB;;;YAqBJ,W;;;;;;;;;;;;;;EAAA,C;EA3BkB,mE;IAAA,uE;qBAAA,wH;UAAA,S;eAAA,Q;;eAAA,uB;IA2BlB,C;G;EAtDJ,4C;IjFmBI,IAAI,EiFOI,2BAAgB,CjFPpB,CAAJ,C;MACI,ciFMyB,qC;MjFLzB,MAAM,8BAAyB,OAAQ,WAAjC,C;KiFMV,OAAO,WAAW,yCAAX,C;EA4BX,C;EAEA,wC;IA0B8D,2BAAiB,cAAR,OAAQ,CAAjB,C;G;EAwB1C,iF;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,0B;EAA+B,C;;;;;;;;6DAA/B,Y;;;;;YAAW,gB;4BAAA,4BAAK,8CAAS,IAAd,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EAAoB,C;EAA/B,8C;IAAA,qD;qBAAA,2E;UAAA,S;eAAA,Q;;eAAA,uB;IAA+B,C;G;EAFc,gG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,kC;EAGzD,C;;;;;;;;sDAHyD,Y;;;;;YdlD7D,gB;4BAAA,mEcoDgB,iDdpDhB,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YcmDQ,OACA,a;;;;;;;;;;;;;;EACJ,C;EAHyD,6C;IAAA,yD;qBAAA,oF;UAAA,S;eAAA,Q;;eAAA,uB;IAGzD,C;G;EAK+B,8G;IAAA,wC;IAAA,yB;IAAA,4C;IAAA,kD;IAAA,oB;EAOvB,C;;;;;;;;+DAPuB,Y;;;;;YACnB,IAAI,qBAAJ,C;cACI,yBAAO,gBAAO,6BAAP,C;cADX,OAEI,iCAAY,IAFhB,M;;cAAA,OAII,iCAAY,aAJhB,M;;;;;;;;;;;;;;;;;;EAMJ,C;EAPuB,8E;IAAA,kD;qBAAA,wG;UAAA,S;eAAA,Q;;eAAA,uB;IAOvB,C;G;EAGiB,kH;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,oD;IAAA,wB;EAIjB,C;;;;;;;;+DAJiB,Y;;;;;YACD,gD;YAAA,4B;cAAa,M;;cAAb,gB;;;;;;;YAAZ,YAAY,e;YACZ,iCAAY,I;Y1B9H+B,gB;Y0B+HhC,gB;4BAAX,6BAAW,YAAgB,K1B/HA,K0B+HX,I1B/HO,GAAoB,qEAApB,GAAmC,U0B+H/B,K1B/H+B,6D0B+H/C,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAFX,OAEW,a;;;;;;;;;;;;;;EACf,C;EAJiB,kF;IAAA,kD;qBAAA,4G;UAAA,S;eAAA,Q;;eAAA,uB;IAIjB,C;G;EAfS,uG;IAAA,4B;MACF,yBAAP,cAAO,kBAAgB,gEAAhB,C;MAUA,yBAAP,cAAO,YAAU,oEAAV,C;MAKX,W;IAAA,C;G;EAxBU,+H;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sC;IAAA,wD;IAAA,0B;IAAA,6B;IAAA,0B;IAAA,kC;IAAA,oC;EA0BlB,C;;;;;;;;+CA1BkB,Y;;;;;gCACD,sCAAyB,EAAzB,EAA4C,4CAA5C,C;uCAIS,I;gCACT,wCAAkB,+BAAlB,C;YACb,gB;;;;;YAAA,IAAO,sBAAP,KAAqB,IAArB,C;cAAA,gB;;;YR2EJ,gB;4BAAsC,gBQ1EjB,yGR0EiB,CAAtC,M;gBAAA,qC;qBAAA,mB;YAAA,Q;;YQ3EI,gB;;;YAmBJ,W;;;;;;;;;;;;;;EAAA,C;EA1BkB,8D;IAAA,uE;qBAAA,mH;UAAA,S;eAAA,Q;;eAAA,uB;IA0BlB,C;G;EA7CJ,yC;IjFlEI,IAAI,EiFoFI,0BAAe,CjFpFnB,CAAJ,C;MACI,ciFmFwB,kC;MjFlFxB,MAAM,8BAAyB,OAAQ,WAAjC,C;KiFmFV,OAAO,WAAW,sCAAX,C;EA2BX,C;EAQiC,0I;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,oE;IAAA,sD;IAAA,kC;EAM7B,C;;;;;;;;0DAN6B,Y;;;;;YACzB,gB;4BAAA,MAAM,qCAAN,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YACA,gB;;;YACY,gB;4BAAR,4BAAQ,YAAK,IAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YACR,gB;4BAAA,MAAM,8BAAN,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAFJ,gB;;;;;;;;;;;;;;;EAIJ,C;EAN6B,uF;IAAA,yD;qBAAA,8H;UAAA,S;eAAA,Q;;eAAA,uB;IAM7B,C;G;EAZJ,uE;IAGiE,kC;MAAA,qBAA2B,W;IjFrHxF,IAAI,EiFsHI,0BAAe,CjFtHnB,CAAJ,C;MACI,ciFqHwB,wE;MjFpHxB,MAAM,8BAAyB,OAAQ,WAAjC,C;KAFV,IAAI,EiFuHI,iCAAsB,CjFvH1B,CAAJ,C;MACI,gBiFsH+B,uF;MjFrH/B,MAAM,8BAAyB,SAAQ,WAAjC,C;KiFsHV,OAAO,2BAAmB,CAAnB,EAAsB,yDAAtB,C;EAOX,C;EAEA,qC;IAkB2D,yBAAc,cAAP,MAAO,CAAd,C;G;EdlI3D,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EN+CA,mD;IAMW,kC;G;EACH,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;mDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;EqBhDgB,iK;IAAA,wC;IAAA,yB;IAAA,sD;IAAA,sD;IAAA,0D;IAAA,0B;IAAA,0B;EAOR,C;;;;;;;;sEAPQ,Y;;;;;YAGuC,Q;YAF3C,UAAU,+BAAY,gBAAZ,C;YAEV,MAAI,qCAAgB,IAApB,IAA4B,CAAC,iCAAc,iGAAd,EAAgC,GAAhC,CAA7B,GAA4B,IAA5B,C;cACI,mCAAc,G;cACd,gB;8BAAA,4BAAK,gBAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAFJ,gB;;;;;;;YAFA,W;;YAMJ,W;;;;;;;;;;;;;;EAAA,C;EAlBR,8H;IAWgB,qD;qBAAA,2J;UAAA,S;eAAA,Q;;eAAA,uB;IAOR,C;G;EATC,yK;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,sD;IAAA,0D;IAAA,sE;IAAA,kC;EAUL,C;;;;;;;;+DAVK,Y;;;;;YACD,sBAAwB,IAAxB,C;YfqBJ,gB;4BAAA,mFepBY,yIfoBZ,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YerBI,OACA,a;;;;;;;;;;;;;;EAQJ,C;EAnBJ,sH;IASS,yD;qBAAA,6J;UAAA,S;eAAA,Q;;eAAA,uB;IAUL,C;G;EApCmC,yC;IAAE,S;EAAG,C;EAV5C,yC;IASQ,kBADE,SACF,a;MADJ,OACuB,S;;MADvB,OAEY,kCAAuB,2BAAvB,C;G;EAQyB,2C;IAAE,S;EAAG,C;EAL9C,0D;IAKI,sCAkBK,8BAlBgC,6BAkBhC,EAlBwD,aAkBxD,YAlBL,C;G;EAOkE,qD;IAAc,mBAAO,KAAP,C;EAAW,C;EAL/F,wD;IAKI,sCAWK,8BAXgC,WAWhC,EAX6D,+BAW7D,YAXL,C;G;iCAEJ,yB;IfYA,mF;IAAA,4D;IAAA,kC;IAAA,2D;IN+CA,yC;IM/CA,+C;MAmBY,oC;K;IAnBZ,6CAoBQ,+B;MAAsC,2BAAO,KAAP,e;K;IApB9C;;;K;IN+CA,iD;MAMW,kC;K;IACH,uE;MAAA,0C;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,uC;uBAAA,qB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IqBhDgB,iK;MAAA,wC;MAAA,yB;MAAA,sD;MAAA,sD;MAAA,0D;MAAA,0B;MAAA,0B;IAOR,C;;;;;;;;wEAPQ,Y;;;;;cAGuC,Q;cAF3C,UAAU,+BAAY,gBAAZ,C;cAEV,MAAI,qCAAgB,IAApB,IAA4B,CAAC,iCAAc,iGAAd,EAAgC,GAAhC,CAA7B,GAA4B,IAA5B,C;gBACI,mCAAc,G;gBACd,gB;gCAAA,4BAAK,gBAAL,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBAFJ,gB;;;;;;;cAFA,W;;cAMJ,W;;;;;;;;;;;;;;IAAA,C;IAlBR,8H;MAWgB,qD;uBAAA,2J;YAAA,S;iBAAA,Q;;iBAAA,uB;MAOR,C;K;IATC,yK;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,sD;MAAA,0D;MAAA,sE;MAAA,kC;IAUL,C;;;;;;;;iEAVK,Y;;;;;cACD,sBAAwB,IAAxB,C;cfqBJ,gB;8BAAA,iFepBY,yIfoBZ,Q;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cerBI,OACA,a;;;;;;;;;;;;;;IAQJ,C;IAnBJ,sH;MASS,yD;uBAAA,6J;YAAA,S;iBAAA,Q;;iBAAA,uB;MAUL,C;K;IAnBJ,wD;MASI,oCAAK,oEAAL,C;K;GATJ,C;ErB2DA,mD;IAMW,kC;G;EACH,yE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;mDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,kE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;EM/CA,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;4GgBlCA,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;IAAA,iD;IAqBY,kG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;2DAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,+D;MAAA,qD;uBAAA,4F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IAxBJ,uBAoBkB,yB;MhBclB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBdkB,oH;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,4C;QAAA,kC;MAKlB,C;;;;;;;;sDALkB,Y;;;;;gBhBiCd,gB;gCAAA,oEgBhCQ,2EhBgCR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBjCgB,OAChB,a;;;;;;;;;;;;;;MAIJ,C;aALkB,iD;QAAA,yD;yBAAA,wG;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKlB,C;O;KALkB,C;IApBlB,uC;MAoBa,YAAK,sCAAL,C;K;GApBb,C;wHA2BA,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;ItBsDA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;IAJxB,uC;MAIa,oCAAW,4CAAX,C;K;GAJb,C;EA0BwB,6G;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,4C;IAAA,wC;IAAA,iC;IAAA,kC;EAQxB,C;;;;;;;;gDARwB,Y;;;;;YvDmLgD,4B;uCuDlLhD,kBAAiB,oBAAjB,EAAuB,aAAvB,C;;YAEF,gB;4BAAA,0BAAd,wBAAc,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;YAIlB,gB;4BAAA,wCAAQ,oBAAR,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAPsB,OAOtB,a;;;;;;;YAFI,wBAAc,qB;;;;;;;;;;;;;;;;;;EAGtB,C;EARwB,0D;IAAA,yD;qBAAA,iG;UAAA,S;eAAA,Q;;eAAA,uB;IAQxB,C;G;EAvBA,oC;IAea,sCAAW,iCAAX,C;G;EAuEW,uH;IAA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qBAAA,mB;YAAA,Q;;YAAjB,W;;;;;;;;;;;;;;EACH,C;EAF0G,2C;IAAA,kE;qBAAA,2F;UAAA,S;eAAA,Q;;eAAA,uB;IAE1G,C;G;EpBIA,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EN+CA,mD;IAMW,kC;G;EACH,0E;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;oDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,uDAOQ,kD;mBAAA,mE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;;;EKnEA,6C;IAWI,OAAe,6CiBMK,uBIHkF,arBHlG,SqBGkG,CJGlF,YjBNL,E;G;EAEnB,yD;IAsBI,2B;MAAA,cAAmB,mB;IAGnB,OAAe,4CiBrBK,uBIHkF,arBwBlG,SqBxBkG,CJGlF,YjBqBL,GAAa,WAAb,C;G;EAUP,iF;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,0B;EAA0B,C;;;;;;;;6DAA1B,Y;;;;;YCkDuE,gB;4BDlDpD,gBCkDoD,wC;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YDlD5D,oB;;;;;;;;;;;;;;EAAe,C;EAA1B,8C;IAAA,qD;qBAAA,2E;UAAA,S;eAAA,Q;;eAAA,uB;IAA0B,C;G;EADuB,uG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,oD;IAAA,kC;EAE7D,C;;;;;;;;sDAF6D,Y;;;;;YCRzD,gB;4BAAA,0EDSQ,iDCTR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YDSA,oB;;;;;;;;;;;;;;EACJ,C;EAF6D,oD;IAAA,yD;qBAAA,2F;UAAA,S;eAAA,Q;;eAAA,uB;IAE7D,C;G;EATA,kC;IAOwD,sCAAK,+BAAL,C;G;EAIxD,4B;IAqBI,OAAO,4BAAwB,SAAxB,C;EACX,C;EAEA,wB;IAUuD,OAAmB,QAAb,WAAN,KAAM,CAAa,C;G;EAE1E,8C;IAgB0C,2B;MAAA,cAAmB,mB;IlEpGzD,IAAI,EkEqGI,cAAc,ClErGlB,CAAJ,C;MACI,ckEoGuB,6D;MlEnGvB,MAAM,8BAAyB,OAAQ,WAAjC,C;KkEoGV,OAAW,gBAAe,CAAnB,GAAsB,wBAAtB,GAA2C,qBAAiB,SAAjB,EAAuB,WAAvB,C;EACtD,C;EAEA,+C;IAuBI,sCAA2B,SAA3B,EAAsC,SAAtC,C;G;oHAEJ,yB;IAAA,iF;IAAA,0D;IAAA,sC;IAAA,uE;IAAA,2BAwBoB,yB;MAAA,4G;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,kC;QAAA,oB;MAAyB,C;;;;;;;;0DAAzB,Y;;;;;gBAAU,gB;gCAAA,6BAAU,aAAV,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBC3DqD,gB;gCD2DrD,aC3DqD,4C;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBD2D7D,oB;;;;;;;;;;;;;;MAAuB,C;aAAzB,+B;QAAA,+D;yBAAA,gG;cAAA,S;mBAAA,Q;;mBAAA,uB;QAAyB,C;O;KAAzB,C;IAxBpB,uC;MAwBI,kCAAgB,+BAAhB,C;K;GAxBJ,C;EAgDoB,wG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,kC;IAAA,oB;EAAsB,C;;;;;;;;kDAAtB,Y;;;;;YAAO,gB;4BAAA,6BAAU,aAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAL,gB;4BAAA,gCAAK,aAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAA,oB;;;;;;;;;;;;;;EAAoB,C;EAAtB,+C;IAAA,+D;qBAAA,4F;UAAA,S;eAAA,Q;;eAAA,uB;IAAsB,C;G;EAtB1C,yC;IAsBI,kCAAgB,2BAAhB,C;G;ELlHJ,oD;IAMW,kC;G;EACH,0E;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;oDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,wDAOQ,kD;mBAAA,mE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;EsBjDY,0G;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,0B;IAAA,0B;EAGR,C;;;;;;;;iEAHQ,Y;;;;;YAEW,gB;4BAAA,+CAAU,gBAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAf,W;;;;;;;;;;;;;;EACJ,C;EAHQ,uE;IAAA,qD;qBAAA,oG;UAAA,S;eAAA,Q;;eAAA,uB;IAGR,C;G;EAJoB,kI;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kD;IAAA,wD;IAAA,kC;EAKxB,C;;;;;;;;0DALwB,Y;;;;;YhBsBpB,gB;4BAAA,0EgBrBQ,mFhBqBR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YgBtBsB,OACtB,a;;;;;;;;;;;;;;EAIJ,C;EALwB,+E;IAAA,yD;qBAAA,sH;UAAA,S;eAAA,Q;;eAAA,uB;IAKxB,C;G;EhBFA,iD;IAmBY,oC;G;EAnBZ,+CAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EN+CA,oD;IAMW,kC;G;EACH,0E;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,kC;EAEA,C;;;;;;;;oDAFA,Y;;;;;YACc,gB;4BAAA,yBAAV,oBAAU,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;;;;;;;;;;;;;;;EACd,C;EATR,wDAOQ,kD;mBAAA,mE;QAAA,S;aAAA,Q;;aAAA,uB;EAEA,C;EATR;;;G;wG0BnFA,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;I1BmFA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;II9BiF,wG;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,0B;IAEzG,C;;;;;;;;iDAFyG,Y;;;;;cACjG,gB;8BAAA,6BAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAJ,IAAI,aAAJ,C;gBAAuC,gB;gCAAA,gCAAK,gBAAL,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBAAvC,gB;;;;;cAAsB,W;;cAC1B,W;;;;;;;;;;;;;;IAAA,C;IAFyG,4C;MAAA,kE;uBAAA,4F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAEzG,C;K;IALA,uC;MAG+F,oCJ8BvE,uBI9BiF,wBJ8BjF,YI9BuE,C;K;GAH/F,C;8GAOA,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;I1B4EA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;IIvBoF,2G;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,0B;IAE5G,C;;;;;;;;oDAF4G,Y;;;;;cACnG,gB;8BAAA,6BAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAL,IAAI,CAAC,aAAL,C;gBAAwC,gB;gCAAA,gCAAK,gBAAL,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBAAxC,gB;;;;;cAAuB,W;;cAC3B,W;;;;;;;;;;;;;;IAAA,C;IAF4G,+C;MAAA,kE;uBAAA,+F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAE5G,C;K;IALA,uC;MAGkG,oCJuB1E,uBIvBoF,2BJuBpF,YIvB0E,C;K;GAHlG,C;0HAOA,yB;IAAA,iF;IAAA,0D;IAAA,sC;IAAA,yC;IAAA,8B;IAdA,6B;I1BmFA,kC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;II9BiF,wG;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,0B;IAEzG,C;;;;;;;;iDAFyG,Y;;;;;cACjG,gB;8BAAA,6BAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAJ,IAAI,aAAJ,C;gBAAuC,gB;gCAAA,gCAAK,gBAAL,O;oBAAA,qC;yBAAA,mB;gBAAA,Q;;gBAAvC,gB;;;;;cAAsB,W;;cAC1B,W;;;;;;;;;;;;;;IAAA,C;IAFyG,4C;MAAA,kE;uBAAA,4F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAEzG,C;K;IAa2E,yF;MAAA,wC;MAAA,yB;MAAA,sB;MAAA,oB;IAAU,C;;;;;;;;2DAAV,Y;;;;;cAAE,oC;;;;;;;;;;;;;;;;IAAQ,C;IAAV,yD;MAAA,kD;uBAAA,mF;YAAA,S;iBAAA,Q;;iBAAA,uB;MAAU,C;K;IAJrF,sC;MAIoE,Q;MAAA,yDJe5C,uBI9BiF,cAe9B,iCAf8B,CJ8BjF,YIf4C,4B;K;GAJpE,C;EASyE,4F;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,kC;IAAA,0B;EAEzE,C;;;;;;;;wDAFyE,Y;;;;;YACrE,IAAI,wBAAJ,C;cAAoC,gB;8BAAA,gCAAK,gBAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAApC,gB;;;;;;;YAAmB,W;;YACvB,W;;;;;;;;;;;;;;EAAA,C;EAFyE,iF;mBAAA,gF;QAAA,S;aAAA,Q;;aAAA,uB;EAEzE,C;EALA,oC;IAGwD,uCJUhC,yBIViD,sBJUjD,YIVgC,C;G;kGAIxD,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;I1BwDA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;IIHkF,qG;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,kC;MAAA,0B;IAE1G,C;;;;;;;;8CAF0G,Y;;;;;cACjF,gB;8BAAA,6BAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAL,gB;8BAAA,gCAAK,aAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAAjB,W;;;;;;;;;;;;;;IACH,C;IAF0G,yC;MAAA,kE;uBAAA,yF;YAAA,S;iBAAA,Q;;iBAAA,uB;MAE1G,C;K;IALA,uC;MAGgG,oCJGxE,uBIHkF,qBJGlF,YIHwE,C;K;GAHhG,C;gHAOA,yB;IAAA,6B;IAAA,iF;IAAA,0D;IAAA,sC;I1BiDA,kC;IAAA,yC;IAAA,iD;MAMW,kC;K;IACH,uE;MAAA,wC;MAAA,yB;MAAA,kB;MAAA,kC;IAEA,C;;;;;;;;mDAFA,Y;;;;;cACc,gB;8BAAA,yBAAV,oBAAU,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;;;;;;;;;;;;;;;IACd,C;IATR,qDAOQ,kD;qBAAA,gE;UAAA,S;eAAA,Q;;eAAA,uB;IAEA,C;IATR;;;K;IsBjDY,wG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,0B;MAAA,0B;IAGR,C;;;;;;;;iEAHQ,Y;;;;;cAEW,gB;8BAAA,+CAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAf,W;;;;;;;;;;;;;;IACJ,C;IAHQ,qE;MAAA,qD;uBAAA,kG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGR,C;K;IARJ,6BAIwB,yB;MhBGxB,kC;MAAA,2D;MAAA,+C;QAmBY,oC;O;MAnBZ,6CAoBQ,+B;QAAsC,2BAAO,KAAP,e;O;MApB9C;;;O;MgBHwB,gI;QAAA,wC;QAAA,6B;QAAA,yB;QAAA,kD;QAAA,wD;QAAA,kC;MAKxB,C;;;;;;;;4DALwB,Y;;;;;gBhBsBpB,gB;gCAAA,0EgBrBQ,iFhBqBR,Q;oBAAA,qC;yBAAA,mB;gBAAA,Q;;;;gBgBtBsB,OACtB,a;;;;;;;;;;;;;;MAIJ,C;aALwB,uD;QAAA,yD;yBAAA,oH;cAAA,S;mBAAA,Q;;mBAAA,uB;QAKxB,C;O;KALwB,C;III+F,4G;MAAA,wC;MAAA,6B;MAAA,yB;MAAA,kD;MAAA,wB;MAAA,kC;MAAA,0B;IAGvH,C;;;;;;;;qDAHuH,Y;;;;;cACjG,gB;8BAAA,6BAAU,gBAAV,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAA,+B;cAAA,4B;gBAAoB,M;;gBAApB,gB;;;;;cAAlB,kBAAkB,e;cACD,gB;8BAAA,gCAAK,WAAL,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAAjB,W;;;;;;;;;;;;;;IACJ,C;IAHuH,gD;MAAA,kE;uBAAA,gG;YAAA,S;iBAAA,Q;;iBAAA,uB;MAGvH,C;K;IANA,uC;MAG6G,oCJJrF,uBII+F,4BJJ/F,YIIqF,C;K;GAH7G,C;EAaY,8F;IAAA,wC;IAAA,yB;IAAA,0C;IAAA,0B;IAAA,0B;EAER,C;;;;;;;;yDAFQ,Y;;;;;YACiC,UAAhC,M;YAAa,aAAmB,iCAAnB,EAAmB,yCAAnB,O;YXjCtB,IAAI,QAAQ,CAAZ,C;cACI,MAAM,6BAAoB,6BAApB,C;;YWgCD,0BX9BF,KW8BE,EAA0C,gBAA1C,C;YAAL,gB;4BAAA,yC;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAA,oB;;;;;;;;;;;;;;EACJ,C;EAFQ,2D;IAAA,qD;qBAAA,wF;UAAA,S;eAAA,Q;;eAAA,uB;IAER,C;G;EAJ6D,iG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,4C;IAAA,kC;EAKjE,C;;;;;;;;oDALiE,Y;;;;;YAC7D,gBAAY,CAAZ,C;YpBSA,gB;4BAAA,sEoBRQ,oDpBQR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YoBTA,OACA,a;;;;;;;;;;;;;;EAGJ,C;EALiE,8C;IAAA,yD;qBAAA,qF;UAAA,S;eAAA,Q;;eAAA,uB;IAKjE,C;G;EARA,gC;IAG4D,uCAAK,6BAAL,C;G;EAUoB,qG;IAAA,wC;IAAA,6B;IAAA,yB;IAAA,4C;IAAA,kC;IAAA,0B;EAGhF,C;;;;;;;;+CAHgF,Y;;;;;YAC5E,gB;4BAAA,0BAAO,gBAAP,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YACiB,gB;4BAAA,gCAAK,gBAAL,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;YAAjB,W;;;;;;;;;;;;;;EACJ,C;EAHgF,yC;IAAA,kE;qBAAA,yF;UAAA,S;eAAA,Q;;eAAA,uB;IAGhF,C;G;EANA,mC;IAGsE,uCJtB9C,yBIsBwD,qBJtBxD,YIsB8C,C;G;EAkB1D,oH;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,sD;IAAA,0B;IAAA,0B;EAGR,C;;;;;;;;oDAHQ,Y;;;;;YACU,gB;4BAAA,6BAAU,gCAAV,EAAuB,gBAAvB,O;gBAAA,qC;qBAAA,mB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YqB3CA,OAAO,sB;;;;;;;;;;;;;;EACX,C;EARA,+E;mBAAA,wE;QAAA,S;aAAA,Q;;aAAA,uB;EAQA,C;ErBuBA,kD;IAmBY,oC;G;EAnBZ,gDAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EsBnCY,mE;IAAA,wC;IAAA,yB;IAAA,kC;EAER,C;;;;;;;;8CAFQ,Y;;;;;YACJ,sF;;;;;;;;;;;;;;;;EACJ,C;EAFQ,mC;IAAA,kD;qBAAA,6D;UAAA,S;eAAA,Q;;eAAA,uB;IAER,C;G;EAPJ,wD;IAAA,wC;IAAA,yB;IAAA,qB;IAAA,kC;EAUA,C;;;;;;;;yCAVA,Y;;;;;+BAIY,C;YtBuDR,gB;4BAAA,kEsBtDQ,0BtBsDR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YsBlDA,OAAO,c;;;;;;;;;;;;;;EACX,C;EAVA,yD;mBAAA,kD;QAAA,S;aAAA,Q;;aAAA,uB;EAUA,C;EAOY,6F;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,kC;IAAA,0B;EAIR,C;;;;;;;;gDAJQ,Y;;;;;YACA,gB;4BAAA,6BAAU,gBAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAJ,IAAI,aAAJ,C;cAAA,OACI,uDADJ,M;;cAAA,gB;;;;;YAGJ,W;;;;;;;;;;;;;;EAAA,C;EAJQ,0D;IAAA,qD;qBAAA,uF;UAAA,S;eAAA,Q;;eAAA,uB;IAIR,C;G;EATJ,qE;IAAA,wC;IAAA,yB;IAAA,qB;IAAA,kC;IAAA,kC;EAYA,C;;;;;;;;yCAZA,Y;;;;;+BAIY,C;YtB2CR,gB;4BAAA,kEsB1CQ,kDtB0CR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YsBpCA,OAAO,c;;;;;;;;;;;;;;EACX,C;EAZA,sE;mBAAA,+D;QAAA,S;aAAA,Q;;aAAA,uB;EAYA,C;EtBgBA,kD;IAmBY,oC;G;EAnBZ,gDAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EkByEA,yD;IAEoB,0C;G;EACZ,gE;IAAA,wC;IAAA,yB;IAAA,kB;IAAA,0B;EAMA,C;;;;;;;;8CANA,Y;;;;;YAGS,gB;4BAAA,6BAAU,gBAAV,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAL,IAAI,CAAC,aAAL,C;cACI,MAAM,kC;;;;;;;;;;;;;;;;EAEd,C;EATR,oDAGQ,8C;mBAAA,yD;QAAA,S;aAAA,Q;;aAAA,uB;EAMA,C;EATR;;;G;ElBzEA,kD;IAmBY,oC;G;EAnBZ,gDAoBQ,+B;IAAsC,2BAAO,KAAP,e;G;EApB9C;;;G;EuBVY,oG;IAAA,wC;IAAA,yB;IAAA,kD;IAAA,sD;IAAA,0B;EAER,C;;;;;;;;6CAFQ,Y;;;;;YACU,gB;4BAAA,6BAAU,gCAAV,EAAuB,gBAAvB,O;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YAAd,0CAAc,aAAd,M;;;;;;;;;;;;;;EACJ,C;EAFQ,iE;IAAA,qD;qBAAA,8F;UAAA,S;eAAA,Q;;eAAA,uB;IAER,C;G;EAxBQ,sG;IAAA,wC;IAAA,yB;IAAA,sD;IAAA,kD;IAAA,0B;IAAA,0B;EAOR,C;;;;;;;;+CAPQ,Y;;;;;gBAGU,I;YAFA,IAAI,qCAAgB,IAApB,C;cAEV,gB;8BAAA,6BAAU,iGAAV,EAA4B,gBAA5B,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;cAEA,oC;cAJU,gB;;;;;;;YAEV,iC;YAFU,gB;;;YAAd,iE;;;;;;;;;;;;;;EAMJ,C;EAPQ,mE;IAAA,qD;qBAAA,gG;UAAA,S;eAAA,Q;;eAAA,uB;IAOR,C;G;EAdJ,sE;IAAA,wC;IAAA,yB;IAAA,+B;IAAA,kC;IAAA,kC;EAmBA,C;;;;;;;;0CAnBA,Y;;;;;YAkBW,Q;yCAbiB,I;YvBqDxB,gB;4BAAA,kEuBnDQ,2DvBmDR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YuB1CA,IAAI,6BAAgB,IAApB,C;cAA0B,MAAM,2BAAuB,6BAAvB,C;YAEhC,OAAO,yF;;;;;;;;;;;;;;EACX,C;EAnBA,uE;mBAAA,gE;QAAA,S;aAAA,Q;;aAAA,uB;EAmBA,C;EAEA,+E;IAAA,wC;IAAA,yB;IAAA,+B;IAAA,kC;IAAA,8B;IAAA,kC;EAYA,C;;;;;;;;wCAZA,Y;;;;;yCAOsB,kB;YvB8BlB,gB;4BAAA,kEuB7BQ,yDvB6BR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YuB1BA,OAAO,wB;;;;;;;;;;;;;;EACX,C;EAZA,gF;mBAAA,yE;QAAA,S;aAAA,Q;;aAAA,uB;EAYA,C;uFAZA,yB;IAAA,iF;IAAA,0D;IAAA,6B;IvBkBA,kC;IAAA,2D;IAAA,+C;MAmBY,oC;K;IAnBZ,6CAoBQ,+B;MAAsC,2BAAO,KAAP,e;K;IApB9C;;;K;IuBVY,oG;MAAA,wC;MAAA,yB;MAAA,kD;MAAA,sD;MAAA,0B;IAER,C;;;;;;;;+CAFQ,Y;;;;;cACU,gB;8BAAA,6BAAU,gCAAV,EAAuB,gBAAvB,O;kBAAA,qC;uBAAA,mB;cAAA,Q;;;;cAAd,0CAAc,aAAd,M;;;;;;;;;;;;;;IACJ,C;IAFQ,iE;MAAA,qD;uBAAA,8F;YAAA,S;iBAAA,Q;;iBAAA,uB;MAER,C;K;IAVJ,8D;MAOI,sBAAkB,OAAlB,C;MvB8BA,uEuB7BQ,mCvB6BR,+B;MuB1BA,OAAO,a;IACX,C;GAZA,C;EAqBY,4E;IAAA,wC;IAAA,yB;IAAA,4C;IAAA,0B;EAGR,C;;;;;;;;+CAHQ,Y;;;;;YACJ,IAAI,gCAAW,IAAf,C;c1FsFyC,MAAM,2B0FtFpB,2B1FsFkD,WAA9B,C;;Y0FtF/C,OACA,8BAAS,gBADT,M;;;;;;;;;;;;;;;;EAEJ,C;EAHQ,yC;IAAA,qD;qBAAA,sE;UAAA,S;eAAA,Q;;eAAA,uB;IAGR,C;G;EAVJ,yD;IAAA,wC;IAAA,yB;IAAA,0B;IAAA,kC;EAeA,C;;;;;;;;0CAfA,Y;;;;;YAcW,Q;oCARY,I;YvBiBnB,gB;4BAAA,kEuBhBQ,gCvBgBR,Q;gBAAA,qC;qBAAA,mB;YAAA,Q;;;;YuBXA,IAAI,wBAAW,IAAf,C;cAAqB,MAAM,2BAAuB,+BAAvB,C;YAE3B,OAAO,oF;;;;;;;;;;;;;;EACX,C;EAfA,0D;mBAAA,mD;QAAA,S;aAAA,Q;;aAAA,uB;EAeA,C;EAQY,kF;IAAA,wC;IAAA,yB;IAAA,4C;IAAA,0B;EAGR,C;;;;;;;;qDAHQ,Y;;;;;YACJ,IAAI,mCAAJ,C;c1FsEyC,MAAM,2B0FtErB,2B1FsEmD,WAA9B,C;;Y0FtE/C,OACA,8BAAS,gBADT,M;;;;;;;;;;;;;;;;EA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;IACP,WAAW,C;IACX,WAAW,C;EACf,C;;;;;;EqEpJJ,0D;;MAM2D,sBAAd,YAAzC,qDAAyC,CAAc,ElG2E/C,WkG3EoF,IlG2EpF,CkG3E+C,C;;MA8BrD,gC;QA/BoG,UAgCvF,oBlGqDP,WAAO,ckGrD0B,ClGqD1B,CAAP,CkGrDO,C;;QAHf,O;;G;EAzBJ,sE;;MAMyE,sBAAd,YAAnD,6DAAmD,CAAc,ElGkE7D,WkGlEkG,IlGkElG,CkGlE6D,C;;MAqBnE,gC;QAtBQ,UAuBK,oBlGqDP,WAAO,ckGrD0B,ClGqD1B,CAAP,CkGrDO,C;;QAHf,O;;G;EAhBJ,iE;;MAMsB,sBAAd,sBAAc,ElGyDV,WkGzD+C,IlGyD/C,CkGzDU,C;;MAYhB,gC;QAbQ,eAcK,oBlGqDP,WAAO,ckGrD0B,ClGqD1B,CAAP,CkGrDO,C;;QAHf,O;;G;kBAPJ,yB;IlGwDQ,uD;IAAA,sC;IkGxDR,oC;;QAQQ,O;;QACF,gC;UACE,UAAW,oBlGqDP,gBAAO,ckGrD0B,ClGqD1B,CAAP,CkGrDO,C;;UAHf,O;;IAKJ,C;GAZA,C;EC1BA,4D;;MAuDgB,gB;MADZ,uBAhDY,U;;QAkDR,O5BzCE,U4ByCI,gB5BzCJ,EAA6B,KAA7B,C;;Q4B0CJ,gC;UACmB,gBAAoB,C;UAArC,gBrGhBJ,oBE+CQ,WAAO,cF/CW,SE+CX,CAAP,CF/CR,C;UqGiBI,uB;;UAJQ,O;;MAAZ,gB;MAMA,IAAI,UAAU,mBAAd,C;QAEqB,cAAO,4E;QAAxB,gBrG9BJ,oBE+CQ,WF/CkB,OE+ClB,CF/CR,C;;;EqGxBJ,C;EAEA,wE;;MA4CgB,gB;MADZ,uBArCY,U;;QAuCR,O5BtBE,oB4BsBI,gB5BtBJ,EAAuC,KAAvC,C;;Q4BuBJ,gC;UACmB,gBAAoB,C;UAArC,gBrGhBJ,oBE+CQ,WAAO,cF/CW,SE+CX,CAAP,CF/CR,C;UqGiBI,uB;;UAJQ,O;;MAAZ,gB;MAMA,IAAI,UAAU,mBAAd,C;QAEqB,cAAO,4E;QAAxB,gBrG9BJ,oBE+CQ,WF/CkB,OE+ClB,CF/CR,C;;;EqGbJ,C;EAEA,2D;;MAiCgB,gB;MADZ,uBA1BY,U;;QACwB,kB;QA2BhC,O5BzCE,U4ByCI,gB5BzCJ,EAA6B,KAA7B,C;;Q4B0CJ,gC;UACmB,gBAAoB,C;UAArC,gBrGhBJ,oBE+CQ,WAAO,cF/CW,SE+CX,CAAP,CF/CR,C;UqGiBI,uB;;UAJQ,O;;MAAZ,gB;MAMA,IAAI,UAAU,mBAAd,C;QAEqB,cAAO,4E;QAAxB,gBrG9BJ,oBE+CQ,WF/CkB,OE+ClB,CF/CR,C;;;EqGAJ,C;EAEA,uE;;MAoBgB,gB;MADZ,uBAbY,U;;QACwB,kB;QAchC,O5BtBE,oB4BsBI,gB5BtBJ,EAAuC,KAAvC,C;;Q4BuBJ,gC;UACmB,gBAAoB,C;UAArC,gBrGhBJ,oBE+CQ,WAAO,cF/CW,SE+CX,CAAP,CF/CR,C;UqGiBI,uB;;UAJQ,O;;MAAZ,gB;MAMA,IAAI,UAAU,mBAAd,C;QAEqB,cAAO,4E;QAAxB,gBrG9BJ,oBE+CQ,WF/CkB,OE+ClB,CF/CR,C;;;EqGaJ,C;oBAEA,yB;IrGbA,iC;IE+CQ,uD;ImGlCR,oC;MAOgB,UAQgB,M;MAT5B,uBAA6C,U;;QAEzC,aAAM,gBAAN,C;;QACF,gC;UACmB,gBAAoB,C;UAArC,gBrGhBJ,oBE+CQ,WAAO,cF/CW,SE+CX,CAAP,CF/CR,C;UqGiBI,M;;UAJQ,O;;MAAZ,gB;MAMA,IAAI,UAAU,mBAAd,C;QAEqB,cAAO,4E;QAAxB,gBrG9BJ,oBE+CQ,WF/CkB,OE+ClB,CF/CR,C;OqGgCJ,C;GAjBA,C;EAmBA,+D;IAUI,iC;IACO,6B;;MAoBM,gB;;QACT,O5BjEE,2BAAuC,KAAvC,C;;Q4BkEJ,gC;UACE,kCAAuB,CAAvB,C;;UAHS,O;;MAAb,iB;MAiBA,IAAI,WAAW,mBAAf,C;QAAoC,4BAAO,mB;QAAP,8B;OACpC,YAAY,qCAAmB,MAAnB,C;MACZ,IAAI,UAAU,2BAAd,C;QAA2C,4BAAO,mB;QAAP,8B;OAGpC,IAAI,4CAAJ,C;QAEC,IA5CoB,IA4CpB,C;UAA4B,MAAM,kBAAkB,KAAM,MAAxB,EAA+B,eAA/B,C;aAClC,kD;UAAoC,MAAM,kBAAkB,MAAO,MAAzB,EAAgC,eAAhC,C;;UAClC,e;;QAGN,oBAAN,KAAM,C;;MAPV,kC;;;IA1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ACoD,gB;G;EgBhEpD,oD;IAAuG,gB;G;EACvG,wC;IAAwE,gB;G;EACxE,kD;IAAoF,MAAM,S;G;sGAA1F,mC;IAAoF,MAAM,S;G;EAE1F,2B;IAA8D,gB;G;;;;;;;;EAW9D,qC;EACA,C;E4FlBA,oC;IAAgE,W;G;ECEhE,wC;IAA4E,Q;G;ECFjC,6B;IACvC,eAAwB,I;G;oCACxB,Y;IACsB,Q;IAAA,oF;G;0CACtB,iB;IAA2B,eAAa,K;EAAM,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;chHsPpB,C;cACA,C;YACF,C;gBGrPE,C;gBACA,C;cACF,C;iBAIA,WAAO,cAAP,C;kBlByHA,WAAO,cAAP,C;gBAGI,C;uBACO,C;sBACD,C;;;;iBAqBX,WAAO,cAAP,C;uB+BunCM,WAAO,oBAAP,C;gCAGU,WAAO,6BAAP,C;qBAEZ,WAAO,kBAAP,C;uBAEE,WAAO,oBAAP,C;UAEP,E;UACA,C;SACD,C;WAGJ,WAAO,QAAP,C;cAEG,UAAM,KAAN,C;iBAEG,UAAM,IAAN,C;4BSrVkB,C;0BACF,C;mBACP,C;kBAIF,WAAO,eAAP,C;iBAID,WAAO,cAAP,C;gBAID,WAAO,aAAP,C;mBAIG,WAAO,gBAAP,C;oBAIC,WAAO,0BAAP,C;0BQl+BO,oB;UMAtB,WAAO,OAAP,C;SagIF,WAAO,MAAP,C;YAGG,WAAO,SAAP,C;iBAEW,C;S6DnIb,WAAO,MAAP,C;SAQA,WAAO,MAAP,C;sCjEHyC,4C;wBAOvB,aAAW,iCAAX,EAClC,EADkC,EAC9B,CAD8B,EAC3B,UAD2B,C;gB0BaP,WAAO,aAAP,C;iBA0EE,WAAO,cAAP,C;mBCyHE,E;WAGd,WAAO,QAAP,C;cClOG,WAAO,WAAP,C;qBAGQ,WAAO,kBAAP,C;wBCNuB,C;qBACH,C;sBACC,C;oBqC4EjB,WAAO,iBAAP,C;iB3D8HH,WAAO,cAAP,C;qBAEI,WAAO,kBAAP,C;gBAER,WAAO,WAAP,C;cAEF,WAAO,SAAP,C;2BAWU,e;cgC3Gb,WAAO,WAAP,C;iBAEG,WAAO,cAAP,C;gBAED,WAAO,aAAP,C;mBAEG,WAAO,gBAAP,C;WAER,WAAO,QAAP,C;aAEE,WAAO,UAAP,C;iBAGI,YAAM,MAAN,C;mBAEE,YAAM,QAAN,C;oBCqJC,aAAW,4CAAX,EAAyD,GAAzD,C;WAET,WAAO,QAAP,C;UAED,WAAO,OAAP,C;WAEC,WAAO,QAAP,C;cAEG,WAAO,WAAP,C;iBAEG,aAAW,0CAAX,EAAuD,EAAvD,C;gBGhSG,W;YEJR,C;UAEe,K;yBGkCe,K;;;;;"}
\No newline at end of file